10 из 15 конфигураций серверов в наличииМгновенная выдачаБез платы за установку

Диски и RAID

Проверка состояния дисков с помощью smartctl и nvme-cli

Установите smartmontools и nvme-cli, научитесь читать показатели, по которым можно предсказать отказ HDD и NVMe SSD, настройте тесты и оповещения по расписанию и отправляйте нужные данные, когда диск требует замены.

6 мин чтенияОбновлено UbuntuDebianAlmaLinuxRocky LinuxProxmox VE

Применимо к
UbuntuDebianAlmaLinuxRocky LinuxProxmox VE
Время чтения
6 минут
Обновлено

Не получается? Инженеры отвечают 24/7

На этой странице

Каждый сервер DediJet проходит проверки SMART и состояния NVMe во время стресс-тестирования (burn-in), прежде чем попасть в пул готовых серверов. Тем не менее диски изнашиваются и иногда выходят из строя — но обычно заранее предупреждают об этом. Эти предупреждения читают два инструмента: smartctl (из пакета smartmontools) — для дисков любого типа и nvme-cli — для NVMe-накопителей.

Установка инструментов

В Ubuntu и Debian:

Shell
apt update
apt install -y smartmontools nvme-cli

В AlmaLinux и Rocky Linux:

Shell
dnf install -y smartmontools nvme-cli

В Proxmox VE пакет smartmontools уже есть. Выведите список дисков с серийными номерами; ROTA = 1 означает вращающийся HDD:

Shell
lsblk -d -o NAME,MODEL,SERIAL,SIZE,ROTA,TRAN

Чтение данных SMART на HDD и SATA SSD

Shell
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

Shell
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 выводит примерную длительность при запуске теста.

Shell
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.

Shell
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:

Shell
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.

Чтобы ускорить диагностику, укажите всю информацию в первом же сообщении:

  1. IP-адрес сервера и диск, который вызывает подозрения, с его серийным номером из вывода smartctl -i.
  2. Полный вывод smartctl -x для этого диска в виде вложенного файла.
  3. При программном RAID: cat /proc/mdstat и серийный номер диска, который должен остаться на месте.
  4. Соответствующие строки журнала ядра с отметками времени, а также информацию о том, есть ли у вас резервная копия данных.

При программном RAID следуйте руководству Управление программным RAID 1 с помощью mdadm, чтобы подготовить массив перед заменой диска и восстановить его после.

Следующие шаги

Нужна помощь?

Клиенты с активным сервером создают тикеты в личном кабинете, а отвечают на них инженеры 24/7.

Как работает поддержка