Изучаем некоторые параметры механических жестких дисков в условиях эксплуатации 24/7 (фарминг Chia)
Решил поделиться с вами своими наблюдениями и размышлениями по поводу работы жестких дисков в режиме 24/7. Все мы хотим, чтоб наши фермы работали долго и давали нам прибыль. Для этого жесткие диски должны быть надежными.
Погружение в Chia майнинг дало мне возможность собрать коллекцию из разных дисков от двух главных производителей: WD и Seagate (не хватает Toshiba, но думаю такими темпами и это не за горами).
Вот что у меня есть на данный момент из механических HDD.
Мои старички, выкорчеванные из внешних дисков, им уже лет по 7-8, но они все еще в строю с красивым смартом:
- WD Green 2Tb WD20EARX
- WD Green 3Tb WD30EZRX
То, что покупал специально для Chia:
- WD Gold 8Tb WD8004FRYZ
- WD Purple 8Tb WD82PURZ
- WD White 16Tb WD160EDFZ (White потому что этот диск вытянут из внешнего WD My Book и на нем белая OEM наклейка. Судя по всему, это «задушенный» прошивкой до 5400 Rpm Ultrastar или Red, что в общем-то одно и тоже)
- Seagate Exos X16 16Tb ST16000NM001G
Ко всему этому хозяйству прикупил еще и утилиту Hard Disk Sentinel Professional, чтобы все мониторить:
Плоттинг и фарминг пошел, и я начал копаться и наблюдать периодически за смартами своих дисков.
Первое, что заметил — это огромные значения «Raw Read Error Rate» и «Seek Error Rate» на абсолютно новом диске Seagate. Так как это мой первый Сигейт после печально известной Барракуды-«клик смерти» 7200.11, то первое что пришло в голову: «С**а опять! Сигейт больше никогда!». Но, так как гарантия на него 5 лет, то успокоился и начал искать информацию по этой теме. Оказалось, что Сигейт уникальные и неповторимые, считают по-особенному эти два параметра и что LOW Word (правая часть) этих параметров содержит статистические значения операций поиска/чтения, а HIGH Word (левая часть) содержит уже статистику по ошибкам чтения. Так вот в HIGH Word у меня все по нулям, что меня быстро успокоило. Поэтому не удивляйтесь, если у вас будет похожая картина с дисками Сигейт, или если вы захотите купить б/у диск, а там RAW значение «Seek Error Rate» в несколько миллионов.
Более подробная информация по этому поводу вот здесь:
Надеюсь, я все правильно понял, а если нет, то больше в Сигейт ни ногой!
Далее хочу написать по поводу температуры. Все мои диски стоят внутри закрытого корпуса Antec P193 Silent Pro (старый, но вместительный корпус):
- 4 в нижней корзине
- 2 в средней
- 4 в отсеках 5.25 (тут пока что стоят только мои четыре SSD SATA: два Intel и два Samsung)
- процессор охлаждается 120mm Noctua NF-A12x25 PWM
- перед двумя корзинами с дисками стоят по 120mm Noctua NF-P12 redux 1700 PWM
- сверху корпуса дует одна 140mm Noctua NF-P14s redux 1200 PWM
- на выдув из корпуса работает 120mm Noctua NF-S12B redux 1200 PWM
- пространство 5.25 без вентиляторов, но в нем нет механических дисков, а SATA SSD практически не греются
Со всем этим средняя температура дисков примерно следующая (замеры делал летом в очень жаркую погоду, температура в помещении 25-27℃):
- WD Green 2Tb WD20EARX: 36℃
- WD Green 3Tb WD30EZRX: 36℃
- WD Gold 8Tb WD8004FRYZ: 41℃
- WD Purple 8Tb WD82PURZ: 42℃
- OEM WD White 16Tb WD160EDFZ: 37℃
- Seagate Exos X16 16Tb ST16000NM001G: 36℃
Как видно, самые горячие диски — это 8-терабайтники WD на «воздухе». Это не удивительно: пластин в них много, плюс они на 7200 оборотов. Самые холодные — это два диска «на гелии» и два древних Green, у которых всего по три блина. Вообще, по наблюдениям самый холодный диск — это Seagate Exos, несмотря на его объем.
Когда корзины не охлаждались, то температуры всех дисков были на 7-8 градусов больше, что уже не совсем хорошо, поэтому охлаждение имеет значение.
Идем дальше. Есть такой параметр как «Load/Unload Cycle Count», который хранит количество перемещений головок диска в парковочную зону для экономии энергии (пластины при этом могут продолжать вращаться, парковка головок не всегда сопровождается остановкой шпинделя, но об этом дальше). Так вот, этот параметр имеет свой гарантийный лимит. Производители явно указывают гарантированное количество этих циклов. Для потребительских дисков это обычно 300 000 циклов, а для серверных чаще всего 600 000.
Как часто диск будет делать такую парковку заложено в прошивке в параметрах питания. Существует несколько уровней управления питанием со своими таймингами и алгоритмами отключения различных модулей диска: от частичного отключения управляющей электроники до полной остановки шпинделя и парковки головок. На серверных дисках управление питанием довольно продвинутое, а на потребительских оно попроще, либо вовсе отсутствует. Так вот, по умолчанию эти настройки довольно «экономичные» и заставляют парковать головки чуть ли не каждые 6-8 сек . если управляющая электроника определила простой диска.
Насколько я понял, существует два стандартных в отрасли «фреймворка» для управления питанием дисков:
- Более старая и базовая: APM (Advanced Power Management). Присутствует на некоторых потребительских и на большинстве серверных дисков WD.
В моей коллекции она есть на WD White, Gold и Purple, но ее нет на обоих WD Green и на серверном Сигейте.
Уровень APM задается значением от 1 до 254. Вот что говорит по этому поводу документация Seagate:
- Более новая и продвинутая: EPC (Extended Power Controls), у Сигейта имеет маркетинговое название «Power Choice».
У меня присутствует на Сигейте, на WD Gold и, внимание!, на OEM WD White вытянутом из внешнего диска, что еще раз подтверждает мои догадки, что это серверный Ultrastar с кастомной прошивкой.
Ниже привожу описание возможных EPC состояний из документации Seagate:
Что характерно, у Seagate Exos нет различия между Idle_C и Standby_Y, присутствует только один Idle_C, а у двух моих WD Gold и White есть оба этих режима (что снова указывает на серверное происхождение White).
Плюс у каждого производителя могут быть свои уже проприетарные технологии экономии энергии например:
IntelliPower на WD Green и, скорее всего, ее более продвинутая версия на WD Blue. Поэтому на моих старых WD Green и нет APM – там используется IntelliPower.
PowerBalance на серверных Сигейтах, но эта штука, судя по документации, к парковке головок не имеет отношения, и связана с оптимизацией случайных операций чтения/записи. К тому же на моем Сигейте она оказалась отключена по умолчанию.
Осмыслив все это, я начал думать как отключить всю эту энергосберегающую лабуду, потому что после начала майнинга Chia, значения «Load/Unload Cycle Count» для большей части моих дисков пошли вверх с неплохой скоростью.
Оно и неудивительно. Диски работают 24/7, обращения к дискам не такие уж частые в процессе прохождения фильтра и поиска пруфов, но достаточно частые чтобы диски не засыпали надолго — вот они и дергают головками без остановки.
Ниже привожу примеры графиков эволюции данного параметра во времени. Hard Disk Sentinel отлично подходит для отслеживания всего этого. Начало измерений для WD Green примерно совпадает с началом майнинга.
Утилита Hard Disk Sentinel имеет еще одну интересную особенность. Она может считать что-то вроде тренда изменения того или иного параметра SMART от текущего значения до Threshold.
WD Green 2Tb: увеличение числа парковок примерно на 25 000 циклов за 3 месяца. Учитывая, что это потребительский диск, которому около 8 лет, то это немного настораживает. Но тут работает IntelliPower по своим неведомым алгоритмам, поэтому и колбасит головки как ей вздумается. Что касается тренда, то для этого диска оказалось не все так плохо. При текущих темпах увеличения количества циклов парковки ноль наступит примерно в марте 2026 года. Неплохо для 8-летнего механического диска, но доверять сильно этому графику я бы не стал.


WD Green 3Tb: похожая ситуация: начинает быть страшно за старичка… Все таки подходит уже к 200 000. Но тренд выглядит получше: ноль на сентябрь 2027-го.


Немного оптимистичнее дела обстоят с серверными дисками, учитывая, что они абсолютно новые.
WD Gold 8Tb: примерно 12 500 циклов за 3 месяца. Однако тренд совсем не радует. По мнению утилиты ноль наступит в январе 2024-го, что даже меньше гарантийного срока в 5 лет.


Seagate Exos 16Tb: около 5000 циклов за три недели. Хотя тут график начитает стабилизироваться. Тренд тоже не очень: ноль на сентябрь 2024-го, что тоже меньше гарантии.


OEM WD White 16Tb: пока держится неплохо, но прошло еще слишком мало времени для набора статистики. Тренд построить не получилось из-за слишком малого изменения параметра.

Ну и, наконец, победитель в номинации «самый спокойный диск» — WD Purple 8Tb. Всего лишь 120 циклов за 3 месяца. Эти диски предназначены для видеонаблюдения 24/7, тут энергопотребление не играет роли, идет постоянное обращение к диску и по умолчанию он был в менее энергосберегающем режиме. Тренда тоже нет — слишком малое изменение «Load/Unload Cycle Count».

Из этих графиков я могу сделать такой банальный вывод: у каждого диска свое предназначение. WD Green (и Blue) — это потребительские диски. Производитель сам позиционирует их как супер-экономичные и т. д. и т. п. Вот они по умолчанию и паркуют головки, как только представится возможность. WD Gold и Seagate Exos – диски для дата-центров. Они хоть и должны работать 24/7, но когда их сотни, а то и тысячи, то вопрос энергоэффективности начинает играть роль, вот у них и стоят из коробки установки EPC с низкими таймингами парковки. WD Purple – диск для видеонаблюдения 24/7 и энергоэффективность ему не очень-то и нужна.
Но нам, майнерам, пофиг на все эти технологии. Нам бы диски подешевле, повместительнее и понадежнее. И, как мне кажется, постоянное дергание головками и надежность двигаются в противоположных направлениях.
Что я сделал в первую очередь, так это перевел в режим максимальной производительности все диски поддерживающие APM. Большинство утилит для работы с дисками позволяют это делать (CrystalDiskInfo, Hard Disk Sentinel и т. д.):

Как оказалось, изменение настроек APM также влияет и на настройки EPC: перевод диска в режим максимальной производительности обнулил и тайминги EPC на тех дисках, где он есть. Таким образом, у меня получилось «разогнать» WD White, Gold и Purple.
Остались мои старички: WD Green и Seagate Exos – оба без APM. Как оказалось, у Сигейт есть пакет крутейших утилит для работы с жесткими дисками (не только с дисками Seagate, но и от других производителей также!): SeaChest Utilities. Скачать можно с официального сайта Сигейт, все устанавливается за 10 сек., все утилиты из пакета не имеют GUI и работают только из командной строки, документация отличная:
Из всего пакета нас интересует утилита SeaChest Power Control, которая позволяет показать и изменить настройки управления питанием дисков в системе.
С помощью этой утилиты я смог отключить EPC на моем серверном Сигейте:
ВНИМАНИЕ: насколько я понял, утилита SeaChest не позволяет устанавливать тонкие настройки EPC (отдельно idle_a, idle_b, idle_c) на сторонних дисках (не Seagate). Так что на WD возможно лишь полностью отключить/включить EPC.
Вот что я получил в итоге, выполнив следующую команду:
Seagate Exos 16Tb:

OEM WD White 16Tb:


Теперь в колонке «Current Timer» у меня по нулям, что значит, что таймеры отключены.
Стоит обратить внимание на значения по умолчанию. Диски от WD из коробки идут с более «спокойными» (хотя все еще слишком короткими) таймингами. Они не опускаются ниже режима Idle_B и имеют для него тайминг в 6 сек. Сигейт же может из коробки опускаться до максимального Standby_Z с еще более зажатыми таймингами. Интересно.
В конце концов, остались два моих старых WD Green, которые не поддерживают ни APM, ни EPC, но которые все же пытаются экономить энергию. После недолгих поисков нашлась официальная утилита и для них: wdidle3. Она настолько древняя, что работает только из DOS, но все же позволяет менять настройки таймеров энергосбережения для дисков WD Green, Blue и Red (поддерживаются не все модели, поэтому надо экспериментировать).
Скачать ее можно, например, здесь:
В общем, после создания загрузочной флешки с DOS и загрузки с нее, у меня получилось отключить энергосбережение и на двух моих WD Green.
Вывод текущего состояния таймеров парковки головок:
После этого надо выключить и включить комп, потому что настройки вступают в силу на следующем цикле запуска диска. ВНИМАНИЕ, насколько я понял, выбрать диск утилита не позволяет и пытается установить тайминги для всех поддерживаемых дисков сразу. Так что, если дисков много, то во избежание проблем лучше отключить ненужные диски либо физически, либо в BIOS.
Как оказалось, тайминги по умолчанию на парковку стояли 8 сек., что лучше серверных дисков, но все равно ужасающе мало.
Есть еще одна утилита, которую я использовал для WD Green — это утилита hdparm. Изначально она разработана под Linux, но в сети можно найти один ее древний билд 6.9. Она позволяет убрать таймер перехода диска в «standby mode»:
Скачать ее можно здесь:
Просмотр информации о диске:
Уже позже я понял, что утилита Victoria HDD/SSD также, судя по всему, позволяет работать с таймингами парковки WD Green/Blue, но дело было уже сделано и эту возможность я не тестировал, но я уверен, что она работает. Виктория также позволяет устанавливать настройки APM, но не EPC, так что SeaChest по прежнему может быть полезна.
Ссылка на утилиту:
Таким образом, я смог сконфигурировать все мои жесткие диски, чтобы они не пытались так часто парковать головки. Возможно, я слишком заморачиваюсь и это все не влияет на надежность дисков, но логика подсказывает, что, скорее всего, влияет. Все-таки механизм, который постоянно на протяжении своей жизни двигается с максимальной амплитудой включаясь/выключаясь несколько десятков тысяч раз, может износиться быстрее, чем если он просто парит над блинами, выполняя операции чтения/записи. Но я могу и ошибаться. Возможно, более знающие люди мне что-то подскажут. Как минимум, мне было интересно заниматься этим небольшим исследованием. Через несколько лет, когда диски выйдут из строя, поставлю их красиво на полку над моим рабочим столом. Хорошая коллекция получится.
WD Green, конечно, настрадались в своей жизни, но хотя бы какой-то запас у них еще есть.
Надеюсь, эта информация будет кому-то полезна. Всем удачного майнинга. Скоро будем миллионерами!
Fedoseyev.ru
Обновление прошивки на дисках Seagate; избавляемся от «свиста» на дисках Seagate ST6000NM0115
У этой инструкции, как, впрочем, и у всего, что я тут пишу, есть своя история, свой бэкграунд. Я поменял в компьютере 4-терабайтные диски на новые, 6-терабайтные. По соотношению цена/качество мне «зашли» Seagate ST6000NM0115, но в них обнаружился врожденный дефект в виде довольно мерзкого свиста (похожий на свист от дроссельной катушки), в результате чего в моем тихом системном блоке самыми шумными компонентами стали жесткие диски. Почитав в интернетах отзывы, увидел, что проблема распространенная, и лечится обновлением прошивки (если у вас установлена SN03 и ниже). Ну и прекрасно, значит давайте ее обновлять.
- Качаем и запускаем CrystalDiskInfo, смотрим версию прошивки на диске (на моем скриншоте стоит уже свежая прошивка) и серийный номер диска (понадобится нам на следующем шаге):

- Идем на сайт Seagate: https://apps1.seagate.com/downloads/request.html?userPreferredLocaleCookie=ru_RU_, вводим серийный номер диска, жмем «Продолжить»
- Получаем доступ к прошивке, качаем ее:

- Скачанный файл распаковываем в корень любого диска, например в C:
Сразу поясню: нам предстоит работать с приложением от Seagate в командной строке Windows, и, во-первых, длинные пути до каталогов и файлов будет неудобно вводить с клавиатуры, а во-вторых, некоторые приложения до сих пор плохо работают в режиме командной строки с путями, содержащими кириллические символы, множество пробелов и пр. Поэтому сразу исключим влияние подобных проблем на процесс.
Получаем на диске каталог примерно такого содержания:
- Из каталога firmware забираем файл с прошивкой (в моем случае это MakaraBPEntCapSATA-STD-6TB-512E-SN04.LOD), перекладываем его в каталог command line tools\SeaChest. Таким образом в command line tools\SeaChest должно получиться примерно следующее:

- Запускаем командную строку Windows от имени администратора:

- Переходим в каталог с command line tools\SeaChest:

- У меня 64-битная версия Windows, поэтому я буду использовать 64-битную версию приложения SeaChest (у меня на скриншотах это файл SeaChest_Firmware_252_1177_64s.exe). Вы должны использовать приложение, соответствующее битности вашей ОС.
Для начала выясним Device Handle нужного нам диска, запустив программу с ключом -s:
SeaChest_Firmware_252_1177_64s.exe -s
Программа вернет нам сведения об имеющихся в системе дисках:
- Мне надо будет обновить прошивки на двух дисках, с Device Handle PD1 и PD2. Выполняем команду
SeaChest_Firmware_252_1177_64s.exe -d PD1 —downloadFW MakaraBPEntCapSATA-STD-6TB-512E-SN04.LOD
Вот, собственно, и все. Аналогичным образом обновляются практически все диски Seagate. А лично для меня дополнительным бонусом стало то, что шуметь диски Seagate ST6000NM0115 действительно перестали.
Спасибо, обновил прошивку на одном из дисков, следуя этой инструкции. Теперь хочу прошить и второй, но он у меня основной, и на нём уже стоит Windows, поэтому подскажите пожалуйста, можно ли будет его прошить без переноса Win на другой диск?
HDD Seagate с проблемой — маленькая скорость записи, отключен Write Cache
А проблема заключается в маленькой скорости записи информации на диск. Как я это заметил? Да очень просто, переносил свои файлы со старого жесткого диска меньшего объёма и заметил, что процесс этот проходит очень медленно и в мониторе ресурсов новый диск загружен на 100% постоянно, хотя диск источник загружен всего на 10-20%. Обратил внимание на скорость копирования видео файлов — 17 МБайт/c. Замерял скорость чтения с этого диска — 135 МБайт/c.
В диспетчере устройств, в свойствах устройства ST1000LM048 нашел причину такой маленькой скорости: не включено кэширование записей. Обычно у всех жестких дисков в системе оно включено. Для того, чтобы просмотреть в каком состоянии находится кэширование, включить или выключить его, зайдите в диспетчер устройств Windows (Win + R и ввести devmgmt.msc), откройте «Дисковые устройства», нажмите правой кнопкой мыши по устройству HDD — «Свойства». Кэширование вы можете найти на вкладке «Политика». У меня кэширование записей было выключено (галочка не установлена). Я попытался включить его, но в ответ получил сообщение, что не удалось включить кэширование записей, так как устройство не поддерживает его. Странно, подумал я, ведь диск новый и довольно современный.
Запустил для проверки кэша программу Victoria. На вкладке «Standart» есть информация по кэшу диска. В моём случае было указано, что Wr=OFF и рядом в колонке «Comment:» вместо надписи Ok стоял красный восклицательный знак!
Надо искать и обновлять прошивку у диска — первое что приходит в голову. Прошивку ищем тут по серийному номеру диска, страну можно указать любую. В результате я получил отрицательный ответ — для моего диска нет более новой прошивки, чем родная.
Ладно, тогда надо просто найти как включить кэш. Буду искать как включить. Первое, что приходит в голову, утилита hdparm под Linux, она может включать и отключать кэш у дисков и делать ещё много чего. Загрузил с USB первую попавшуюся Ubuntu я попытался включить кэш у данного диска. Утилита hdparm изначально присутствует в составе программ на диске или USB с Linux. Итак, ввёл команду в терминале (вызывается терминал по нажатию CTRL+ALT+T):
sudo hdparm -i /dev/sda Нажимаем Enter
Я начал с этой команды, чтобы убедиться, что я работаю именно с моим диском, у меня он действительно был первым (/dev/sda), а у вас он может быть и вторым (/dev/sdb) или третьим в системе. Изменяйте последнюю букву и находите свой диск. Затем просмотрим информацию о кэше:
sudo hdparm -W /dev/sda Нажимаем Enter
У меня кэш был disabled и я тут же решил его включить:
sudo hdparm -W1 /dev/sda Нажимаем Enter
Однако даже после выполнения этой команды кэш у моего диска так и остался disabled.
Стал искать другие варианты, как же можно включить write cache у диска Seagate. И ответ нашелся довольно быстро — включать и отключать кэш записей может также утилита SeaChest Configure из пакета SeaChest Utilities, скачать его можно с сайта Seagate по ссылке, объём файла 165 МБ.
В скачиваемом файле находятся утилиты SeaChest как для Linux, так и для Windows x32 и x64. Я использовал для Windows x64 так как у меня была установлена ОС Windows 7 x64. Распаковываем архив и переходим в папку с необходимыми файлами. Мне был нужен файл Windows \ Win64 \ SeaChest_Configure_1122_1183_64s.exe, именно его я и буду использовать.
Для начала вызываем справку и читаем:
SeaChest_Configure_1122_1183_64s.exe -h |more Нажимаем Enter и просматриваем до конца
Меня интересовали следующие параметры:
—writeCache [info | enable | disable]
Use this option to enable or disable write cache support on a
drive. Use the «info» argument to get the current status of
the write cache feature. This change is not preserved over
power cycles.—sctWriteCache [info | enable | disable | default]
(SATA Only) (Seagate Only)
Use this option to enable or disable write cache support on a
drive using SMART command transport. When using this option,
the setting is non-volatile. Use this with the —volatile flag
to make the setting volatile. When using this option, the
—writeCache will always return success, but no write cache
changes will occur. This follows ATA spec. Using the «default»
argument returns the drive to default settings and allowing the
—writeCache option to work again. Use the «info» argument to
get the current status of the write cache feature. Note: On
some SAT HBAs/bridges, status will not be able to be determined
due to HBA/bridge limitations.
Формат запуска SeaChest_Configure_1122_1183_64s.exe для Linux с указанием диска выглядит так: -d /dev/sg5 для Windows так: -d PD3, где sg5 и PD3 — порядковый номер диска в системе. У меня был PD0. Просматриваю информацию по диску:
SeaChest_Configure_1122_1183_64s.exe -d PD0 -i Нажимаем Enter и получаем информацию
Просматриваю информацию по write cache:
SeaChest_Configure_1122_1183_64s.exe -d PD0 —writeCache info Нажимаем Enter и получаем информацию
У диска он действительно disabled. Включаем:
SeaChest_Configure_1122_1183_64s.exe -d PD0 —writeCache enable Нажимаем Enter
Ура! Написало enabled!. Проверяю скорость записи путём копирования файлов в Total Commander — скорость падает до 17 МБайт/c. Выходит, что эта опция только включает поддержку write cache но не сам механизм кэширования, тем более в описании указывается, что включение этой поддержки не сохранится после выключения питания у диска. Тогда пытаюсь использовать вторую команду:
SeaChest_Configure_1122_1183_64s.exe -d PD0 —sctWriteCache info Нажимаем Enter и получаем информацию
SeaChest_Configure_1122_1183_64s.exe -d PD0 —sctWriteCache enable Нажимаем Enter
Всё, написало enabled! Проверяем скорость. Скорость копирования на диск возросла в 4.5 раза — 86 МБайт/c!
В инструкции написано, что изначально эта команда сохраняет настройку и после выключения питания (non-volatile). Что нам и необходимо. Выключаем компьютер. Включаем его вновь и проверяем скорость копирования.
В результате получаем скорость записи на диск — 86 МБайт/c, скорость чтения — 135 МБайт/c.
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Cross platform utilities useful for performing various operations on SATA, SAS, NVMe, and USB storage devices.
License
Seagate/openSeaChest
Name already in use
- Local
- Codespaces
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
openSeaChest
Cross platform utilities useful for performing various operations on SATA, SAS, NVMe, and USB storage devices
Copyright (c) 2014-2022 Seagate Technology LLC and/or its Affiliates, All Rights Reserved
Welcome to the openSeaChest open source project!
openSeaChest is a collection of comprehensive, easy-to-use command line diagnostic tools and programming libraries for storage devices that help you quickly determine the health and status of your storage product. The collection includes several tests that show device information, properties and settings. It includes several tests which may modify the storage product such as power management features or firmware download. It includes various commands to examine the physical media on your storage device. Close to 200 commands and sub-commands are available in the various openSeaChest utilities. These are described in more detail below.
Here is an overview presentation we gave at the Storage Networking Industry Association — Storage Developer Conference 2018 that describes the design architecture for the opensea API and openSeaChest storage resource management utilities:

(Note: The openSeaChest team has the utmost respect for the highly regarded sg3_utils, hdparm, sdparm and nvme-cli open source projects. Since this is all pretty low-level stuff, we chose the presentation title «What’s better than sg3_utils, hdparm, sdparm?» only to grab the attention of a few extra people attending the SNIA SDC 2018 conference.)
About openSeaChest Command Line Diagnostics
Seagate offers both graphical user interface (GUI) and command line interface (CLI) diagnostic tools for our storage devices. SeaTools for end users is the most popular GUI tools These tools support 15 languages.
openSeaChest diagnostics are command line utilities which are available for expert users. These command line tools assume the user is knowledgeable about running software from the operating system command prompt. CLI tools are in the English language only and use «command line arguments» to define the various tasks and specific devices. openSeaChest diagnostics are available for both Linux and Windows environments.
Linux versions of openSeaChest tools are available as stand alone 32 or 64-bit executables you can copy to your own system. Windows OS versions of openSeaChest diagnostics are also available.
Technical Support for openSeaChest drive utilities is not available. If you have the time to send us some feedback about this software, especially if you notice something we should fix or improve, we would greatly appreciate hearing from you. To report your comments and suggestions, please use the issue reporting feature available in this git repository. Additionally, you can contact us through this email address seaboard @ seagate.com. Please let us know the name and version of the tool you are using.
openSeaChest drive utilities support SATA, SAS, NVMe and USB interface devices. In some cases openSeaChest has successfully recognized PATA and SCSI legacy devices, although the software is not expected to do so.
openSeaChest_Basics — Contains the most important tests and tools. These include Drive Self Test (DST), Device Information, simple firmware download, and a few of the simple data erasure commands.
Other openSeaChest «break out» utilities are available and listed below which offer more in-depth functionality in specific areas. These are:
openSeaChest_Configure — Tools to control various settings on the drives are brought together into this one tool. Typical commands, for example, include Write Cache and Read Lookahead Cache enable or disable. This is where you will find SCSI Mode Page and SCSI Log Page commands.
openSeaChest_Erase — The focus is on data erasure. There are many different choices for erasing data. from simple boot track erase to full cryptographic erasure (when supported). Some commands can take many hours to complete while others may take less than a minute. This tool is designed to erase data which will be lost forever so be sure to back up important data before using this tool. Actually, you should always maintain ongoing backups of your important data even if you do not intend to erase your drive. Seagate is not responsible for lost user data.
openSeaChest_Firmware — Seagate products are run by firmware. Having the latest firmware can improve performance and or reliability of your product. Seagate recommends applying new firmware to enhance the performance and or reliability of your drive. Most products may see one or two firmware updates within the early life of the product.
openSeaChest_Format — Storage products which utilize the SAS, SCSI or Fibre Channel interfaces are able to perform a full low-level media format in the field. The SCSI Format Unit command offers many specialty options to accommodate a variety of conditions and to fine tune the procedure. This complex command deserves its own «break out» utility.
openSeaChest_GenericTests — Read Tests are the original disk drive diagnostic which is to just read every sector on the drive, sequentially. This tool offers several common read tests which can be defined by either time or range. In addition, the Long Generic test has the ability to repair problem sectors, possibly eliminating an unnecessary drive return.
openSeaChest_Info — Historical generic activity logs (like total bytes written and power on hours) and performance logs (like temperature) are available for analytical review. Identification and inquiry data stored on the drive is also provided. A view of SMART and Device Statistics is available when supported by the drive.
openSeaChest_Logs — Several binary logs are maintained on disk drives. These logs are not stored in the user data area. Sometimes these logs are reviewed by support engineers to help analyze event history on the device. These binary data logs are saved to filenames using the drive’s serial number and date-time. Some logs are Seagate-specific while many others are common to the interface specifications. Several of these binary logs may be parsed into human-readable form by using the openSeaChest_LogParser utility.
openSeaChest_NVMe — NVMe interface devices tend to have unique commands and challenges. Many of these commands are also unique to NVMe SSD products. This tool gathers the most important commands under one title. This tool is similar to openSeaChest_Basics but for NVMe.
openSeaChest_PassThroughTest — A comprehensive command line tool that can be used to identify and analyze the unique quirks which may be present in a USB-to-SATA or USB-to-NVMe bridge adapter. The findings from this tool are studied to help optimize openSeaChest libraries to send the best and safest device interface commands, which are passed through to the storage device.
openSeaChest_PowerControl — Disk drives offer a multitude of options to manage power. This tool manipulates the various power modes. Some power commands are Seagate-specific while many others are common to the interface specifications.
openSeaChest_Reservations — A tool to assist with persistent reservations available on SAS drives and supported NVMe drives. NOTE: NVMe support under Windows is unavailable. See https://docs.microsoft.com/en-us/windows-hardware/drivers/storage/nvme-features-supported-by-stornvme for detail on which features are supported by the StorNVMe Miniport driver in Windows.
openSeaChest_Security — Various settings are available on modern Seagate disk drives which may be locked and unlocked. These settings may interact with the operating systems and systems BIOS. Options also include ATA Security Erase for SATA interface drives.
openSeaChest_SMART — This tool provides a closer look at the collected SMART attributes data. SMART stands for Self-Monitoring, Analysis and Reporting Technology. Short Drive Self Test is included as one of the standard SMART commands. In addition, the DST & Clean test has the ability to repair problem sectors, possibly eliminating an unnecessary drive return.
Important Notes
If this is your drive, you should always keep a current backup of your important data.
Many tests and commands are completely data safe, while others will change the drive (like firmware download or data erasure or setting the maximum capacity, etc). Be careful using openSeaChest because some of the features, like the data erasure options, will cause data loss. Some commands, like setting the maximum LBA, may cause existing data on the drive to become inaccessible. Some commands, like disabling the read look ahead buffer, may affect the performance of the drive. Seagate is not responsible for lost user data.
Important note: Many tests in this tool directly reference storage device data sectors, also known as Logical Block Addresses (LBA). Test arguments may require a starting LBA or an LBA range. The predefined variable ‘maxLBA’ refers to the last sector on the drive. Many older SATA and SAS storage controllers (also known as Host Bus Adapters [HBA]) have a maximum addressable limit of 4294967295 [FFFFh] LBAs hard wired into their design. This equates to 2.1TB using 512 byte sectors. This also means accessing an LBA beyond the 2.1TB limitation either will result in an error or simply the last readable LBA (usually LBA 4294967295 [FFFFh]) depending on the actual hardware. This limitation can have important consequences. For example, if you intended to erase a 4TB drive, then only the first 2TB will actually get erased (or maybe even twice!) and the last 2TB will remain untouched. You should carefully evaluate your system hardware to understand if your storage controllers provide support for greater than 2.1TB.
Note: One gigabyte, or GB, equals one billion bytes when referring to hard drive capacity. This software may use information provided by the operating system to display capacity and volume size. The Windows file system uses a binary calculation for gibibyte or GiB (2^30) which causes the abbreviated size to appear smaller. The total number of bytes on a disk drive divided by the decimal calculation for gigabyte or GB (10^9) shows the expected abbreviated size. See this FAQ for more information http://knowledge.seagate.com/articles/en_US/FAQ/172191en?language=en_US.
Binary Availability
BINARIES and SOURCE CODE files of the openSeaChest open source project have been made available to you under the Mozilla Public License 2.0 (MPL-2.0). The openSeaChest project repository is maintained at https://github.com/Seagate/openSeaChest.
Compiled binary versions of the openSeaChest utilities for various operating systems may be found at https://github.com/Seagate/ToolBin/tree/master/openSeaChest or in the releases section of this project.
This collection of storage device utility software is branched (forked) off of an original utility collection called the Seagate SeaChest Utilities by Seagate Technology LLC. The original SeaChest Utilities are still available at www.seagate.com or https://github.com/Seagate/ToolBin/tree/master/SeaChest. Binary versions are available for Linux or Windows, with the Windows versions signed by Seagate Technology LLC.
Repository Availability
With help from various community members across distributions, openSeaChest may be available from within your package manager.
Please be aware this list may not be complete. Seagate is happy to work with community members to help make openSeaChest available in other package repositories as well. Please reach out through an issue and we will do our best to help make it more available when possible.
The libraries
opensea-common — Operating System common operations, not specific to storage standards. Contains functions and defines that are useful to all other libraries.
opensea-transport — Contains standard ATA/SCSI/NVMe functions based on open standards for these command sets. This layer also supports different transporting these commands through operating systems to the storage devices. Code depends on opensea-common.
opensea-operations — Contains common use cases for operations to be performed on a storage device. This layer encapsulates the nuances of each command set (ATA/SCSI) and operating systems (Linux/Windows etc.) Depends on opensea-common and opensea-transport.
Source
Depending on your git version & client you can use either of the following two commands to clone the repository.
git clone —recurse-submodules -j8 https://github.com/Seagate/openSeaChest.git
git clone —recursive https://github.com/Seagate/openSeaChest.git
Note that cloning recursively is important as it clones all the necessary submodules.
See BUILDING.md for more information about how to use git.
Source Compatibility with various OSs
OpenSeaChest strives to be made available on any platform and any processor. Support for platforms has been added upon request from customers and issues that are created on this repository. The following tables illustrate platform support that exists today, at least in source code form, and contains notes about other platforms that are not currently supported, but may be possible to support. The list may not be complete. Feel free to request other OS support as well, but it may require more research or development in order to support. Please create an issue to request support for these other platforms when you need it!
SAS/SATA Compatibility
| OS | Supported? | Notes |
|---|---|---|
| Windows | Yes | Windows vista and higher are supported |
| Linux | Yes | libATA blocks ATA security commands be default. Can add kernel parameter to disable this block. Only SG_IO IOCTL support implemented for version 3 today. HDIO support is not available. Should work on any 2.6 and later kernel. Earlier kernels may work too, but has not been tested. |
| FreeBSD | Yes | No known limitations at this time |
| UEFI Shell | Yes, but not currently maintained | While source code support is largely maintained for UEFI, it has not been updated or built due to many significant limitations on shipping systems. Some do not include the ATA driver that can respond to passthrough requests, only a block driver is available to allow booting the system. We are happy to revive this and find a way to add CI for this upon request. |
| Solaris | Yes | This column is for the Oracle release of Solaris. USCSI ioctl support is implemented for passthrough support. No known limitations at this time. |
| Illumos | Yes | This column is for Illumos based distributions/openSolaris. Uses same USCSI ioctl as Solaris. No known limitations at this time. |
| AIX | Yes | Support for SATA and SAS is available. Code was tested on version 7.1, but may work on earlier versions. Some flags may need adjusting for earlier systems. Build was completed using GCC available in AIX toolkit with gmake. Only rhdisk handles are supported. pdisk support is not known since IBM does not appear to provide information on passing requests through RAID with what is normally available. |
| ESXI | Yes | Uses SG_IO v3 like Linux through compatibility layer. Requires complicated build system with special GCC build/VM from VMWare and some other development packges installed to compile. |
| NetBSD | No, but possible | |
| OpenBSD | No, but possible |
NVMe Compatibility
| OS | Supported? | Notes |
|---|---|---|
| Windows 10 & later | Yes | Microsoft driver has many limitations, but many are documented online. Sometimes need to use SCSI translation. |
| Windows 8.1 | Limited | Mostly limited to SCSI translation except for FW update. |
| Windows 7 | Limited | Entirely limited to SCSI translation |
| Windows openFabrics compatible driver | Yes | Supported, but may be limited to what commands are allowed by the driver (at least in latest openSource code). Some vendor’s NVMe drivers reuse the IOCTL for passthrough from this driver and may be supported. |
| Linux | Yes | Using built-in kernel driver and IOCTLs |
| FreeBSD | Yes | |
| UEFI Shell | Yes, but not currently maintained | While source code support is largely maintained for UEFI, it has not been updated or built due to many significant limitations on shipping systems. Some systems do not include an NVMe driver that can respond to passthrough requests, only a block driver is available to allow booting the system. We are happy to revive this and find a way to add CI for this upon request. |
| Solaris | No, but possible | This column is for the Oracle release of Solaris. Possible to support NVMe through UNVME ioctl. |
| Illumos | No, but possible | Been a while since last looked at, but appeared limited in what commands were available. |
| AIX | Yes, untested | Implemented according to header from AIX 7.2, but support has not been tested |
| ESXI | Yes | Requires complicated build system with special GCC build/VM from VMWare and some other development packges installed to compile. |
| NetBSD | No, but possible | |
| OpenBSD | No, but possible |
Building
See BUILDING.md for information on how to build the openSeaChest tools on Windows, Linux, FreeBSD, and Solaris/Illumos.
Contributions & Issues
See CONTRIBUTING.md for more information on contributions that will be accepted. This document also describes how to create an issue, generate a pull request, and licenses that will be accepted.
Security policy
See SECURITY.md for information on Seagate’s security policy for details on how to report security vulnerabilities.
Names, Logos, and Brands
All product names, logos, and brands are property of their respective owners. All company, product and service names mentioned in the source code are for clarification purposes only. Use of these names, logos, and brands does not imply endorsement.
Support and Open Source Statement
Support from Seagate Technology for open source projects is different than traditional Technical Support. If possible, please use the Issues tab in the individual software projects so that others may benefit from the questions and answers. Include the output of —version information in the message. See the user guide section ‘General Usage Hints’ for information about saving output to a log file.
If you need to contact us through email, please choose one of these two email addresses:
-
for general questions and bug reports for specific questions about programming and building the software
Seagate offers technical support for drive installation. If you have any questions related to Seagate products and technologies, feel free to submit your request on our web site. See the web site for a list of world-wide telephone numbers.
This software uses open source packages obtained with permission from the relevant parties. For a complete list of open source components, sources and licenses, please see our Linux USB Boot Maker Utility FAQ for additional information.
The newest online version of the openSeaChest Utilities documentation, open source usage and acknowledgement licenses, and our Linux USB Boot Maker FAQ can be found at: https://github.com/Seagate/openSeaChest.
Copyright (c) 2014-2022 Seagate Technology LLC and/or its Affiliates, All Rights Reserved
License
BINARIES and SOURCE CODE files of the openSeaChest open source project have been made available to you under the Mozilla Public License 2.0 (MPL). Mozilla is the custodian of the Mozilla Public License («MPL»), an open source/free software license.
About
Cross platform utilities useful for performing various operations on SATA, SAS, NVMe, and USB storage devices.