На этой странице
Каждый сервер DediJet проходит проверки SMART и состояния NVMe во время стресс-тестирования (burn-in), прежде чем попасть в пул готовых серверов. Тем не менее диски изнашиваются и иногда выходят из строя — но обычно заранее предупреждают об этом. Эти предупреждения читают два инструмента: smartctl (из пакета smartmontools) — для дисков любого типа и nvme-cli — для NVMe-накопителей.
Установка инструментов
В Ubuntu и Debian:
apt update
apt install -y smartmontools nvme-cliВ AlmaLinux и Rocky Linux:
dnf install -y smartmontools nvme-cliВ Proxmox VE пакет smartmontools уже есть. Выведите список дисков с серийными номерами; ROTA = 1 означает вращающийся HDD:
lsblk -d -o NAME,MODEL,SERIAL,SIZE,ROTA,TRANЧтение данных SMART на HDD и SATA SSD
smartctl -a /dev/sdaНачните со строки SMART overall-health self-assessment test result. FAILED означает, что диск нужно заменить. PASSED означает лишь, что ни один атрибут пока не пересек порог производителя, поэтому проверьте и сами атрибуты по столбцу RAW_VALUE:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0
9 Power_On_Hours 0x0032 099 099 000 Old_age Always - 1874
194 Temperature_Celsius 0x0002 200 200 000 Old_age Always - 31
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0| Атрибут | Значение | Когда действовать |
|---|---|---|
| 5 Reallocated_Sector_Ct | Сбойные секторы, уже замененные резервными | Ненулевое значение, растущее от проверки к проверке |
| 197 Current_Pending_Sector | Нечитаемые секторы, ожидающие переназначения | Любое ненулевое значение |
| 198 Offline_Uncorrectable | Секторы с ошибками при офлайн-сканировании | Любое ненулевое значение |
| 199 UDMA_CRC_Error_Count | Ошибки передачи между диском и контроллером, обычно из-за кабелей или бэкплейна | Растет: создайте тикет — неисправен тракт передачи данных, а не сам носитель |
| 194 Temperature_Celsius | Текущая температура накопителя | Выше максимума, указанного в спецификации накопителя |
Названия и номера атрибутов зависят от производителя, а SAS-накопители вместо них сообщают Elements in grown defect list. Для полной картины, включая собственный журнал ошибок накопителя, используйте smartctl -x.
Чтение состояния NVMe
smartctl -a /dev/nvme0
nvme smart-log /dev/nvme0Обе команды читают один и тот же журнал состояния. /dev/nvme0 — это контроллер, а /dev/nvme0n1 — его пространство имен, то есть блочное устройство, которое вы размечаете на разделы.
Critical Warning: 0x00
Temperature: 38 Celsius
Available Spare: 100%
Available Spare Threshold: 10%
Percentage Used: 1%
Data Units Written: 5,322,198 [2.72 TB]
Unsafe Shutdowns: 3
Media and Data Integrity Errors: 0
Error Information Log Entries: 0- Значение Critical Warning должно быть равно
0x00. Любое другое значение (резерв ниже порога, температура, снижение надежности, режим только для чтения) требует немедленного внимания. - Available Spare — резерв запасных блоков. Когда он опускается ниже порога, накопитель близок к концу срока службы.
- Percentage Used — оценка производителя, какая доля заявленного ресурса уже израсходована. Значение может превысить 100%, а накопитель при этом продолжит работать, но замену все же стоит запланировать.
- Значение Media and Data Integrity Errors должно оставаться равным 0. Растущий счетчик означает, что накопитель не может надежно возвращать ваши данные.
- Error Information Log Entries часто учитывает безобидные события, например неподдерживаемые команды, отправленные утилитами. Само по себе это не признак отказа.
- Data Units Written считается в единицах по 512 000 байт; smartctl сам пересчитывает итоговое значение.
Запуск короткого и длинного самотестов
Самотесты выполняются встроенным ПО накопителя, пока сервер продолжает работать. Короткий тест обычно занимает не больше двух минут; длинный (расширенный) тест читает всю поверхность и на больших HDD может длиться много часов. smartctl выводит примерную длительность при запуске теста.
smartctl -t short /dev/sda
smartctl -t long /dev/sda
smartctl -l selftest /dev/sdaВ журнале должно быть Completed without error; Completed: read failure с номером LBA означает, что накопитель нашел нечитаемые секторы. Для NVMe-накопителей, поддерживающих самотесты, используйте nvme-cli (код 1 — короткий тест, 2 — расширенный); результат операции 0 в его журнале означает успешное завершение. smartctl умеет то же самое начиная со smartmontools 7.4.
nvme device-self-test /dev/nvme0 -s 1
nvme self-test-log /dev/nvme0Сначала сделайте резервную копию. Если на диске уже есть секторы, ожидающие переназначения, или ошибки носителя, скопируйте данные до запуска длинного теста: полное чтение поверхности создает дополнительную нагрузку на ослабленный накопитель.
Проверки по расписанию и оповещения по email с помощью smartd
Демон smartd проверяет каждый диск раз в 30 минут и может запускать самотесты по расписанию. Отредактируйте /etc/smartd.conf (Debian, Ubuntu) или /etc/smartmontools/smartd.conf (AlmaLinux, Rocky Linux) и замените существующую строку DEVICESCAN, так как smartd игнорирует строки, следующие за ней:
DEVICESCAN -a -n standby,q -s (S/../.././02|L/../../6/03) -m root -M test-aотслеживает общее состояние, атрибуты, журналы ошибок и журналы самотестов.-s (S/../.././02|L/../../6/03)запускает короткий тест каждый день в 02:00 и длинный тест каждую субботу в 03:00. Для самотестов по расписанию на NVMe-накопителях нужен smartmontools 7.5 или новее (проверьте командойsmartctl --version); более старые версии все равно отслеживают состояние NVMe.-m rootотправляет оповещения пользователю root через командуmail, поэтому установите почтовый клиент и агент передачи почты, напримерmailutilsс Postfix или msmtp, и перенаправьте почту root в свой ящик с помощью псевдонима в/etc/aliases.-M testотправляет одно тестовое письмо при запуске. Уберите этот параметр, когда письмо придет.
Перезапустите демон и проверьте его журнал. В Ubuntu и Debian:
systemctl restart smartmontools
journalctl -u smartmontools -n 50В AlmaLinux и Rocky Linux служба называется smartd: выполните systemctl enable --now smartd, а затем journalctl -u smartd -n 50.
Когда создавать тикет
Замена неисправного оборудования входит в услугу: согласно нашему SLA вышедший из строя компонент заменяется в течение 4 часов после диагностики, 24/7. Создайте тикет, если заметите что-либо из следующего:
- Общая оценка
FAILEDили проваленный самотест. - Растущее число переназначенных секторов, а также любые секторы, ожидающие переназначения или неисправимые при офлайн-сканировании.
- Критическое предупреждение NVMe со значением, отличным от
0x00, резерв ниже порога или растущее число ошибок носителя. - Растущее число ошибок UDMA CRC.
- Диск, выпавший из RAID-массива, или сообщения ядра вроде
I/O errorлибо сбросы контроллера NVMe в выводеjournalctl -k.
Чтобы ускорить диагностику, укажите всю информацию в первом же сообщении:
- IP-адрес сервера и диск, который вызывает подозрения, с его серийным номером из вывода
smartctl -i. - Полный вывод
smartctl -xдля этого диска в виде вложенного файла. - При программном RAID:
cat /proc/mdstatи серийный номер диска, который должен остаться на месте. - Соответствующие строки журнала ядра с отметками времени, а также информацию о том, есть ли у вас резервная копия данных.
При программном RAID следуйте руководству Управление программным RAID 1 с помощью mdadm, чтобы подготовить массив перед заменой диска и восстановить его после.
Следующие шаги
- Измеряйте производительность по воспроизводимой методике: Тестирование производительности процессора, дисков и сети.
- Исправьте систему, которая перестала загружаться, в режиме восстановления.
- Не знаете, как интерпретировать вывод? Обратитесь в поддержку: диагностика оборудования входит в ее задачи, 24/7.