4

Я собираюсь получить пару новых 3,5-дюймовых жестких дисков SATA HGST DeskStar 4TB. Есть ли какие-либо рекомендуемые практики в эти дни, которые я должен выполнить, прежде чем я начну использовать их и доверить им свои данные, тем более что они все еще находятся в начальном гарантийном периоде?

Как правило, я просто вставляю новые диски, fdisk их, шифрую, если мне это нужно, форматирую с ext4, и иду, хотя на этот раз это будет ZFS (через ZoL). Когда у меня появляется время, я подключаю их к smartmontools, чтобы smartd мог следить за ними, но это все.

Должен ли я посмотреть какие-либо конкретные значения SMART в начале? Должен ли я записать нули или случайные данные по всей длине диска и, если это так, прочитать все обратно? Должен ли я оставить его включенным в течение полных 30 дней и следить за чем-нибудь? Должен ли я проверить, что настройки APM для привода отключены, чтобы не было преждевременного износа из-за частых замедлений?

Обновление 7 октября 2017: я следовал советам в ответе @ Xen2050 и комментарии @ sawdust.

У меня есть диски, и я готов начать их тестирование. Я создал скрипт, содержащий рекомендации Xen2050.

#!/bin/sh

AWK=/usr/bin/awk
CLEAR=/usr/bin/clear
GREP=/bin/grep
SLEEP=/bin/sleep
SMARTCTL=/usr/sbin/smartctl

EXIT_SUCCESS=0
EXIT_INSUFFICIENT_ARGS=1

usage() {
   cat << END_OF_FILE
USAGE

   ${0} interval device

EXAMPLES

   ${0} /dev/sda

END_OF_FILE
}

runIteration() {
   runIteration_device=${1}

   #${HDPARM} -B ${runIteration_device} | ${GREP} 'APM_level'
   #${HDDTEMP} ${runIteration_device}
   #${SMARTCTL} --attributes ${runIteration_device}
   ${SMARTCTL} --attributes ${runIteration_device} | ${GREP} -E '(ATTRIBUTE_NAME|Temperature_Celsius|Current_Pending_Sector|Pre\-fail|Power_On_Hours|Power_Cycle_Count|Load_Cycle_Count)' | ${AWK} '
   {
      for (i = 1; i <= NF; ++i) {
         len=20;
         if ((i != 3) && (i != 7) && (i != 8)) {
            s = substr($i, 0, len-1);
            printf("%-4s", s);
         }

         if (i == 2) {
            printf(sprintf("%s%0" (len-length(s)) "s", "", ""));
         }

         printf(" ");
      }

      print "";
   }'

   ${SMARTCTL} --get=apm ${runIteration_device} | ${GREP} '^APM'
}

exitCode=${EXIT_SUCCESS}

if [ ${#} -eq 2 ]; then

   interval=${1}
   device=${2}

   while [ 1 ]; do
      ${CLEAR}
      runIteration ${device}
      ${SLEEP} ${interval}
   done

else

   exitCode=${EXIT_INSUFFICIENT_ARGS}
   echo ${0}: Insufficient arguments 1>&2
   usage 1>&2

fi

exit ${exitCode}

Испытательная установка

У меня есть два из четырех новых дисков, подключенных к двум USB-док-станциям одновременно, которые находятся на столе просто потому, что на этом компьютере нет доступных портов SATA. Я не уверен, стоит ли ожидать, что температура будет выше или ниже, чем внутри закрытого корпуса с работающим вентилятором блока питания.

Поскольку это USB-док-станции, у меня возникли проблемы, которых я раньше не видел. Хотя я мог видеть устройства как /dev/sda и /dev/sdb , все команды smartctl привели к ошибке прошлой ночью. lsusb сообщил, что доки - это технология JMicron, и быстрый поиск в Google показал, что мне нужно указать параметр --device . Попробовав несколько вещей, я разочаровался в этом, потому что это не сработало.

Сегодня вечером я попробовал еще раз без --device, и он работает лучше без видимой причины.

Также имейте в виду, что я запускаю это на компьютере, который отключен от сети (просто потому, что у меня нет места для подключения кабеля Ethernet). В результате я пытаюсь записать свои заметки здесь, выполняя соответствующие команды smartctl на этом ноутбуке, вставляя выходные данные и массируя значения в соответствии с тем, что я вижу на экране тестового ПК. Я упоминаю об этом, потому что я поймал себя на том, что пропустил обновление одного значения после вставки, поэтому я хочу заранее извиниться на случай, если кто-то запутается, читая вывод ниже, который не имеет смысла, потому что значения выглядят неправильно. (FYI значение, которое я пропустил, было VALUE/WORST для Temperature_Celsius, когда я обновил RAW_VALUE.)

Это также означает, что мне пришлось вручную набрать скрипт выше на тестовом ПК. Я считаю, что все набрал правильно, но всегда есть шанс, что я пропустил где-нибудь запятую или точку с запятой.

Я выполнил шаги, описанные в следующих разделах, дважды - один раз с первыми двумя дисками, затем снова после выключения питания, замены дисков на оставшиеся два и последующего включения питания. Я прокомментировал любые отличия от второго прогона, где это применимо.

ХОРОШО. Теперь самое интересное ...

Я загрузил ПК с живого компакт-диска System Rescue CD версии 5.0.3. После того, как я получил приглашение, я проверил журнал:

# tail -F /var/log/messages

Я включил каждую из USB-док-станций и смотрел, как появляются сообщения для /dev /sda и /dev /sdb.

Запустить скрипт мониторинга атрибутов SMART

Чтобы запустить скрипт, я набрал:

# ~/scripts/hdd_init_checks.sh 60 /dev/sdX

для каждого диска (sda и sdb).

Я не знаю, слишком ли часто опрашивается износ диска, но я подумал, что одного раза в минуту должно хватить на это.

Начальные параметры были идентичны для двух дисков:

ID#  ATTRIBUTE_NAME        VALUE WORST THRESH   WHEN_FAILED RAW_VALUE 
1    Raw_Read_Error_Rate   100  100  016    -
2    Throughput_Performa   100  100  054    -
3    Spin_Up_Time          100  100  024    -
5    Reallocated_Sector_   100  100  005    -
7    Seek_Error_Rate       100  100  067    -
8    Seek_Time_Performan   100  100  020    -
9    Power_On_Hours        100  100  000    -
10   Spin_Retry_Count      100  100  060    -
12   Power_Cycle_Count     100  100  000    -
193  Load_Cycle_Count      100  100  000    -
194  Temperature_Celsius   250  250  000    -    24   (Min/Max
197  Current_Pending_Sec   100  100  000    -
APM level is:     Disabled

Запустите SMART-тесты

Я начал выполнять тесты SMART; однако, smartctl --capabilities сообщили, что ни один из них не поддерживает самопроверку транспортного средства. Ну что ж.

# smartctl --capabilities /dev/sdX
...
                                    Self-test supported.
                                    No Conveyance Self-test supported.
...
Short self-test routine 
recommended polling time:    (   2) minutes.
Extended self-test routine
recommended polling time:    ( 571) minutes.

Запустить немедленный автономный тест

Я начал с немедленного автономного тестирования для каждого из sda и sdb, но сначала я проверил smartctl --capabilities /dev/sdX для каждого диска:

Offline data collection status:  (0x80) Offline data collection activity
                                        was never started.
                                        Auto Offline Data Collection: Enabled.
...
Total time to complete Offline 
data collection:            (  113) seconds.

Затем я начал немедленный тест в автономном режиме:

# smartctl --test=offline /dev/sdX

Testing has begun.
Please wait 113 seconds for test to complete.
Test will complete after Thu Oct  5 03:40:52 2017

Во время теста я следил за его продвижением с помощью smartctl --capabilities:

# watch -n 1 'echo "--- sda"; smartctl --capabilities /dev/sda | head -13 | tail -9; echo "--- sdb"; smartctl --capabilities /dev/sdb | head -13 | tail -9'

Offline data collection status:  (0x84) Offline data collection activity
                                        was suspended by an interrupting command from host.
                                        Auto Offline Data Collection: Enabled.
...
Total time to complete Offline 
data collection:            (  113) seconds.

и просмотрел результаты по завершении:

Offline data collection status:  (0x82) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Enabled.
...
Total time to complete Offline 
data collection:            (  113) seconds.

Параметры теперь немного отличаются от приведенных выше:

ID#  ATTRIBUTE_NAME        VALUE WORST THRESH   WHEN_FAILED RAW_VALUE 
1    Raw_Read_Error_Rate   100  100  016    -
2    Throughput_Performa   136  136  054    -
3    Spin_Up_Time          100  100  024    -
5    Reallocated_Sector_   100  100  005    -
7    Seek_Error_Rate       100  100  067    -
8    Seek_Time_Performan   128  128  020    -
9    Power_On_Hours        100  100  000    -
10   Spin_Retry_Count      100  100  060    -
12   Power_Cycle_Count     100  100  000    -
193  Load_Cycle_Count      100  100  000    -
194  Temperature_Celsius   125  125  000    -    48   (Min/Max
197  Current_Pending_Sec   100  100  000    -
APM level is:     Disabled

(2-й запуск: для второй пары жестких дисков значение sput Throughput_Performance было равно 137 для VALUE и WORST; значения sdb совпадали выше. Кроме того, температура была ниже для 31 и 34, но это, вероятно, потому, что я знаю, что я делаю в этот раз, и прохожу все эти шаги, чтобы они еще не нагревались.)

Похоже, что температура повышается; Прошло пару минут с тех пор, как все закончилось, и я пытаюсь запечатлеть здесь свои записи. Было 46, потом 47, сейчас 48. Дисководы находятся в книжном корпусе стандартного стола, поэтому они закрыты с пяти по шесть сторон, но я ожидаю, что внутри корпуса ПК будет теплее. Я включил потолочный вентилятор в комнате для циркуляции воздуха на случай, если это поможет.

Журнал ошибок не показал ошибок:

# smartctl --log=error /dev/sdX
=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
No Errors Logged

Выполнить короткую самопроверку

Затем я запустил двухминутную короткую самопроверку для каждого из sda и sdb:

# smartctl --test=short /dev/sdX

Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Thu Oct  5 04:10:34 2017

Во время теста я следил за его продвижением с помощью smartctl --capabilities:

# watch -n 1 'echo "--- sda"; smartctl --capabilities /dev/sda | head -13 | tail -9; echo "--- sdb"; smartctl --capabilities /dev/sdb | head -13 | tail -9'

Self-test execution status:      ( 249) Self-test routine in progress...
                                        90% of test remaining.
                                 ( 248) 80% of test remaining.
                                 ( 247) 70% of test remaining.
                                 ( 246) 60% of test remaining.
                                 ( 245) 50% of test remaining.
                                 ( 244) 40% of test remaining.
                                 ( 243) 30% of test remaining.
                                 ( 242) 20% of test remaining.
                                 ( 241) 10% of test remaining.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.

(Примечание: результат на самом деле не выглядел так: я объединил все разные проценты для удобства чтения здесь. Длинный тест ниже показывает более реалистичный результат.)

Параметры, кажется, не изменились вообще, за исключением того, что температура колеблется между 47 и 48:

ID#  ATTRIBUTE_NAME        VALUE WORST THRESH   WHEN_FAILED RAW_VALUE 
1    Raw_Read_Error_Rate   100  100  016    -
2    Throughput_Performa   136  136  054    -
3    Spin_Up_Time          100  100  024    -
5    Reallocated_Sector_   100  100  005    -
7    Seek_Error_Rate       100  100  067    -
8    Seek_Time_Performan   128  128  020    -
9    Power_On_Hours        100  100  000    -
10   Spin_Retry_Count      100  100  060    -
12   Power_Cycle_Count     100  100  000    -
193  Load_Cycle_Count      100  100  000    -
194  Temperature_Celsius   127  127  000    -    47   (Min/Max
197  Current_Pending_Sec   100  100  000    -
APM level is:     Disabled

Журнал самопроверки не показал ошибок:

# smartctl --log=selftest /dev/sdX
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%         1         -

Примечание. Столбец LifeTime(часы) в журнале самопроверки может указывать, сколько времени прошло с момента последнего теста в сочетании с Power_On_Hours из атрибута 9 для текущего времени жизни часов.

(2й прогон: LifeTime(часы) на этот раз был 0. Опять же, потому что я двигаюсь быстрее и на этот раз быстрее выполняю эти шаги.)

Выполнить самопроверку

Я не мог запустить этот для этих устройств. Я старался:

# smartctl --test=conveyance /dev/sdX
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Conveyance Self-test functions not supported

Sending command: "Execute SMART Conveyance self-test routine immediately in off-line mode".
Command "Execute SMART Conveyance self-test routine immediately in off-line mode" failed: scsi error aborted command

Очень плохо. После прочтения чьего-то ответа я подтвердил, что на странице руководства указано «определить повреждения, возникшие при транспортировке устройства». После того, как я получу их через курьера, я бы с удовольствием провел такой тест.

Выполнить длинный / расширенный самопроверка

Я запустил последний тест SMART для запуска на этих дисках поздно вечером, и я не собираюсь проверять его через 10 часов, поэтому придется подождать до завтрашнего вечера - почти через 24 часа.

# smartctl --test=long /dev/sdX

Testing has begun.
Please wait 571 minutes for test to complete.
Test will complete after Thu Oct  5 13:57:44 2017

Во время теста я периодически следил за его продвижением с помощью smartctl --capabilities:

# watch -n 1 'echo ---- /dev/sda; smartctl --capabilities /dev/sda | head -13 | tail -9; echo ---- /dev/sdb; smartctl --capabilities /dev/sdb | head -13; tail -9'

---- /dev/sda
Self-test execution status:      ( 249) Self-test routine in progress...
                                        90% of test remaining.
Total time to complete Offline
data collection:                 ( 113) seconds.
---- /dev/sdb
Self-test execution status:      ( 249) Self-test routine in progress...
                                        90% of test remaining.
Total time to complete Offline
data collection:                 ( 113) seconds.
...

Я вернулся, вероятно, примерно через шесть часов после запуска и заметил, что результат показал 10% оставшихся, но я знал, что не буду готов к завершению. Я заметил, что ни один из атрибутов SMART, казалось, не выходил из положения.

Я вернулся через 24 часа после запуска и подтвердил, что тест завершен:

Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.

Поскольку накопители простаивали весь день, они, похоже, уже остыли:

ID#  ATTRIBUTE_NAME        VALUE WORST THRESH   WHEN_FAILED RAW_VALUE 
1    Raw_Read_Error_Rate   100  100  016    -
2    Throughput_Performa   136  136  054    -
3    Spin_Up_Time          100  100  024    -
5    Reallocated_Sector_   100  100  005    -
7    Seek_Error_Rate       100  100  067    -
8    Seek_Time_Performan   128  128  020    -
9    Power_On_Hours        100  100  000    -
10   Spin_Retry_Count      100  100  060    -
12   Power_Cycle_Count     100  100  000    -
193  Load_Cycle_Count      100  100  000    -
194  Temperature_Celsius   142  142  000    -    42   (Min/Max 23/50)
197  Current_Pending_Sec   100  100  000    -
APM level is:     Disabled

Мин / Макс по какой-то причине обрезается (возможно, из-за опечатки в скрипте awk выше), поэтому я вручную запустил smartctl --attributes и вставил значения для этого прошлого вывода. Похоже, температура достигла 50 в какой-то момент.

Журнал самопроверки не показал ошибок:

# smartctl --log=selftest /dev/sdX
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 2  Extended offline    Completed without error       00%        10         -
# 1  Short offline       Completed without error       00%         1         -

Запускать badblocks

Поскольку я выполнял длинный самотестирование, описанное выше, я спорил о том, должен ли я выполнять этот раздел одновременно или подождать, пока самотестирование не завершится. Для этих первых двух дисков я решил завершить длительную самопроверку перед форматированием разделов, поэтому я пишу этот раздел во время выполнения вышеуказанного теста, но я не выполнял эти шаги до 24 часов спустя после Тест выше завершен.

Примечание. Как указано @ Xen2050, в этом разделе выполняется проверка записи на устройстве. Я не возражал против запуска этого на моих жестких дисках; Тем не менее, я бы подумал дважды, прежде чем запускать это на любой флэш-памяти или SSD из-за ограниченной записи.

Если я собирался использовать файловую систему ext2 или ext4, я мог бы запустить такую команду, как следующая, чтобы отформатировать разделы после разделения с помощью fdisk/gdisk:

# mke2fs -c -c /dev/sdX1

Согласно man-странице, первый -c проверяет наличие поврежденных блоков перед созданием файловой системы, а второй -c выполняет более медленный тест чтения-записи.

Страница man также имеет предупреждение об использовании опции -c вместо непосредственного запуска badblocks .

Однако я не планирую размещать на этих дисках какую-либо файловую систему ext, поэтому я решил запустить badblocks напрямую.

Проверьте атрибуты SMART перед тестированием

Температура, кажется, колеблется между 42 и 43; в противном случае все остальное статично:

ID#  ATTRIBUTE_NAME        VALUE WORST THRESH   WHEN_FAILED RAW_VALUE 
1    Raw_Read_Error_Rate   100  100  016    -
2    Throughput_Performa   136  136  054    -
3    Spin_Up_Time          100  100  024    -
5    Reallocated_Sector_   100  100  005    -
7    Seek_Error_Rate       100  100  067    -
8    Seek_Time_Performan   128  128  020    -
9    Power_On_Hours        100  100  000    -
10   Spin_Retry_Count      100  100  060    -
12   Power_Cycle_Count     100  100  000    -
193  Load_Cycle_Count      100  100  000    -
194  Temperature_Celsius   139  139  000    -    43   (Min/Max
197  Current_Pending_Sec   100  100  000    -
APM level is:     Disabled

Теперь у нас есть базовый уровень до теста записи.

Запускать badblocks

Теперь я был готов запустить badblocks на sda и sdb:

# time badblocks -s -v -w /dev/sdX
Checking for bad blocks in read-write mode
From block 0 to 3907018583
Testing with pattern 0xaa:   0.00% done, 0:55 elapsed. (0/0/0 errors)

Как и в расширенном тесте, описанном выше, я запустил его на обоих дисках одновременно.

Я вернулся через 15-20 минут; температура теперь составляет 46 градусов для обоих дисков, и похоже, что она завершена на 0,02%.

Testing with pattern 0xaa:   0.02% done, 18:33 elapsed. (0/0/0 errors)

Если я правильно делаю математику, это значит, что тест займет около 100000 минут или 70 дней. Боюсь, у меня не так много времени, так как у меня есть еще два диска для проверки и только 30-дневный период возврата / обмена, поэтому я буду беспокоиться об этом позже, когда-нибудь.

Проверьте атрибуты SMART после теста

Я прервал тест через 15 минут или около того. Атрибуты SMART были такими же, как указано выше, только с разной температурой.

Дополнительные тесты

Как уже говорилось, если бы у меня было время или диски были меньше, я мог бы позволить тесту записи продолжаться до конца.

В качестве альтернативы, если бы я хотел обнулить диски, я мог бы сделать это с:

# dd if =/dev/zero of =/dev/sdX bs = 1M

При этом я мог отслеживать атрибуты SMART на наличие каких-либо радикальных изменений.

По рекомендации @ опилок диски работали в течение 24 часов, и в течение этого времени я наблюдал атрибуты SMART.

(2й прогон: это то, что я в конечном итоге делал для этих двух дисков.)

Повторите для дополнительных дисков

В это время я выключил накопители и заменил их двумя новыми, а также выполнил все описанные выше шаги для них, как указано ранее.

1 ответ1

4
  • Большинство инструментов мониторинга SMART сами будут подавать звуковые сигналы, если обнаружат, что что-то идет не так, я думаю, что следует обратить внимание на пару "Текущие ожидающие сектора" и, возможно, "Перераспределенное количество секторов", но некоторые ошибки, по-видимому, являются распространенными.

    Запустите все самотестирование SMART, автономно, коротко, долго, и тест на транспортировку должен быть особенно применим, он «предназначен для выявления повреждений, понесенных при транспортировке устройства».

    См. Справочную страницу smartctl для получения дополнительной информации или справочную вики-страницу сообщества Ubuntu на Smartmontools.

  • При форматировании диска, если он запускает тестирование на запись badblocks (или запускает его самостоятельно перед форматированием, очевидно, не все mkfs поддерживают его), он записывает 0 , 1 , 01 и 10 и должен быть Хорошая тренировка, проверьте SMART-данные впоследствии на предмет резкого увеличения числа.

    Если это устройство флэш-памяти или твердотельный накопитель, вы можете иметь в виду, что у них ограниченное время записи, но приличные SSD [я читал в тесте], где они должны обрабатывать безумное количество записей до сбоя, как константа пишет месяцами, гораздо больше, чем обычное использование, так что не волнуйтесь.]

  • Проверьте время ожидания вращения диска, в прошлом было несколько дисков, которые вращались каждые 2 или 3 минуты, изнашивая диски в рекордно короткие сроки. В Linux, как правило, другие программы несут ответственность за время и время вращения дисков, но следите за самим диском.

  • Если вы можете контролировать температуру диска, сделайте это. hddtemp должен работать. Один диск, который значительно нагревается по сравнению с другими, будет иметь красный флажок на диске или просто будет охлаждаться.

И если у производителя есть специальная программа тестирования / мониторинга, попробуйте. У них должно быть больше понимания специфики привода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .