Отключение парковки ноутбучных дисков

Частая парковка головок ноутбучных шпиндельных накопителей на жёстких дисках приводит к износу механизма и преждевременной смерти диска. Чем больше значение SMART параметра Load_Cycle_Count тем ближе время вероятной кончины диска.

smartctl -A /dev/sda | grep 'Load_Cycle_Count'
193 Load_Cycle_Count        0x0012   098   098   000    Old_age   Always       -       21418

В старых версиях Fedora я это решал строчкой в init скрипте.
В новых использовал модуль. И итолько недавно мне подсказали решение для нормальной поддержки Hybernate и Suspend.

Создайте файл /etc/systemd/system/hddapmoff@.service

# cat /etc/systemd/system/hddapmoff@.service 
[Unit]
Description=Disable automatic head parking for the main disk after suspend/restore
After=dev-%i.device suspend.target hibernate.target sysinit.target hybrid-sleep.target
#Requires=dev-%i.device

[Service]
Type=oneshot
# адресация диска по имени например sda
#ExecStart=/sbin/hdparm -B 255 /dev/%i
#использую поиск диска по его ID. Научен тем с некоторыми биосами диски могут "двигаться"
ExecStart=/sbin/hdparm -B 255 /dev/disk/by-id/ata-HGST_HTS725050A7E630_MA1469DA0BUK7D

[Install]
WantedBy=suspend.target
WantedBy=hibernate.target
WantedBy=hybrid-sleep.target
WantedBy=sysinit.target

Для Fedora 20 у меня не получилось использовать адресацию диска по параметру

ExecStart=/sbin/hdparm -B 255 /dev/<strong>%i</strong>

Это не отрабатывало. Fedora не создавала symlink, а упорно искала файл с таким именем. (На Fedora 21 отрабатывает нормально)

strace systemctl enable hddapmoff@sda.service
....
access("/etc/systemd/system/hddapmoff@sda.service", F_OK) = -1 ENOENT (No such file or directory)
access("/run/systemd/system/hddapmoff@sda.service", F_OK) = -1 ENOENT (No such file or directory)
access("/usr/local/lib/systemd/system/hddapmoff@sda.service", F_OK) = -1 ENOENT (No such file or directory)
access("/usr/lib/systemd/system/hddapmoff@sda.service", F_OK) = -1 ENOENT (No such file or directory)
access("/etc/rc.d/init.d/hddapmoff@sda", F_OK) = -1 ENOENT (No such file or directory)

Поэтому я прописал фиксировано по ID диска

[root@younghacker system]# systemctl enable hddapmoff@.service
ln -s '/etc/systemd/system/hddapmoff@.service' '/etc/systemd/system/suspend.target.wants/hddapmoff@.service'
ln -s '/etc/systemd/system/hddapmoff@.service' '/etc/systemd/system/hibernate.target.wants/hddapmoff@.service'
ln -s '/etc/systemd/system/hddapmoff@.service' '/etc/systemd/system/hybrid-sleep.target.wants/hddapmoff@.service'
ln -s '/etc/systemd/system/hddapmoff@.service' '/etc/systemd/system/sysinit.target.wants/hddapmoff@.service'

Теперь можно быть спокойным, APM отключится даже после hibernate.

Про отключение парковки серверных дисков в RAID контроллере можно прочесть здесь.

Leave a Reply