Перейти

Выключение SATA-дисков в Linux

Обновлено 8 ноября 2026

Как ядро останавливает диски при выключении, что значит старое предупреждение про shutdown utility и как по SMART проверить, что диск выключается штатно.

Зачем правильно выключать диск

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

Жёсткий диск считает аварийные парковки в атрибуте SMART 192 (Power-Off_Retract_Count). У многих SSD есть похожий счётчик небезопасных выключений, название зависит от производителя.

Как ядро выключает диски сейчас

При выключении системы драйвер дисков отправляет каждому диску команду сброса кэша, а затем команду остановки. Для дисков SATA это включено по умолчанию. Проверить можно в sysfs:

grep . /sys/class/scsi_disk/*/manage_*

В старых ядрах есть один параметр manage_start_stop. В новых (6.6 и новее) он разделён на manage_system_start_stop, manage_runtime_start_stop и manage_shutdown. Значение 1 означает, что ядро само останавливает диск.

Откуда взялась эта страница

В ядре 2.6.22 libata начал сам останавливать диски при выключении. Старые версии утилит halt и shutdown тоже отправляли дискам команду остановки, и диск мог раскрутиться повторно, а потом выключиться аварийно. В таких случаях ядро писало в журнал предупреждение:

DISK MIGHT NOT BE SPUN DOWN PROPERLY. UPDATE SHUTDOWN UTILITY

Решение было в обновлении пакета с утилитами выключения. В современных дистрибутивах с systemd этой проблемы нет.

Как проверить, что выключение штатное

  1. Запишите текущее значение атрибута 192: sudo smartctl -A /dev/sda | grep -i retract.
  2. Выключите компьютер обычным способом и включите снова.
  3. Сравните значение. Если оно растёт после каждого штатного выключения, питание пропадает раньше, чем диск остановился.

Частые причины: старый контроллер USB-SATA во внешнем боксе, корзина с собственным питанием, скрипты выключения, которые обесточивают диски раньше ядра. Подробнее об атрибутах в статье про SMART.

Внешние и съёмные диски

Перед отключением USB-диска отмонтируйте его и выключите питание командой:

udisksctl power-off -b /dev/sdb

Для внутреннего SATA-диска, который вы снимаете на ходу, порядок описан в статье о горячей замене.

Ручная остановка

sudo hdparm -y /dev/sdb   # перевести в standby (шпиндель остановлен)
sudo hdparm -Y /dev/sdb   # режим sleep, выход только через сброс

Таймер автоматической остановки и APM разобраны в статье об энергосбережении SATA.