Я собираюсь получить пару новых 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й прогон: это то, что я в конечном итоге делал для этих двух дисков.)
Повторите для дополнительных дисков
В это время я выключил накопители и заменил их двумя новыми, а также выполнил все описанные выше шаги для них, как указано ранее.