Jistě je diskutabilní snažit se disky uspávat, když jsou to WD Red, které by měly být na nepřetržitý provoz stavěné, rozdíl spotřeby je malý a roztáčení disků je práve ta chvíle, kdy může dojít k poruchám. Mně je ale proti mysli nechávat je každý den nějakých 12 hodin točit zbytečně, protože z nich nikdo nic nepřečte, a tak jsem k uspávání přistoupil. Ostatně MyBook World to dělal také.
Z poměrně triviálního úkolu se ale vyklubalo netriviální pátrání.
K uspávání se používá program hdparm. Tedy nejen k tomu, je to mocný nástroj, například výpis všemožných informací o disku získáte voláním (zdroj informací)
hdparm -i /dev/sda
Nás ale zajímá to uspávání. K tomu slouží parametr -S, následovaný číslem. Hodnoty znamenají pokaždé něco jiného, přečtěte si jejich výpis.
Rozhodl jsem se to nejprve vyzkoušet a nastavit jim 5 sec:
hdparm -S 1 /dev/sdc
hdparm -S 1 /dev/sde
Zapnul jsem si sledování stavu:
watch hdparm -C /dev/sdc
watch hdparm -C /dev/sde
A čekal, až usnou. 5 sec, 10 sec, 30 sec, minuta… já už usínám, disky ale ani náhodou. Začal jsem tedy hledat, co to znamená, jedna stopa mluvila o chybějícím APM v RED discích (tady a tady).
Také jsem narazil na povídání o timeoutu pro přechod do IDLE režimu a teprve potom o timeoutu pro standby, zkrátka zmatek. A pak najednou koukám, ty dva, co jsem jim dal 5 sec, usnuly. Asi po 10 minutách. Vyvozuji z toho, že přešly do IDLE a pak za 5 sec i do standby, takže to možná funguje?
(Podle téhle diskuze se zdá být idle přednastavené na 300 sec.)
Spokojeně jsem všem čtyřem diskům nastavil 3 hodiny:
hdparm -S 246 /dev/sda
hdparm -S 246 /dev/sdb
hdparm -S 246 /dev/sdc
hdparm -S 246 /dev/sde
Do cronu si dal po 15 minutách výpis:
hdparm -C /dev/sda /dev/sdb /dev/sdc /dev/sde
A ráno se uvidí, kdy vlastně usnuly… Bylo 23.20, kdy jsem pomocí touch na obou polích udělal poslední přístup.
Po 10 minutách, ve 23.30:
/dev/sda:
drive state is: active/idle
/dev/sdb:
drive state is: active/idle
/dev/sdc:
drive state is: active/idle
/dev/sde:
drive state is: active/idle
Po 3 hodinách a 10 minutách, ve 2.30:
/dev/sda:
drive state is: standby
/dev/sdb:
drive state is: standby
/dev/sdc:
drive state is: standby
/dev/sde:
drive state is: active/idle
Všechny tři nové červené disky spí, zatímco starý green na nastavení kašle… Ach jo. Zkouším tedy dvě hodiny, sledování – a zase ne. To už bylo podezřelé. A pak jsem našel fascinující článek, že některé zelené nefungují (!).
Neuvěřitelné. Takže do cronu výpis po dvou minutách a zkoušet jednotlivé hodnoty.
čas | červený za | zelený za |
---|---|---|
15 sec (kód 3) | 10 min | cca 20 min |
5 min (kód 60) | 10 min | 20 min |
10 min (kód 120) | 10 min | 20 min |
20 min (kód 240) | 20 min | 20 min |
30 min (kód 241) | 30 min | ani za 50 min |
3 hod (kód 246) | 3 hod | ani za 6 hod |
Červený (Model Number: WDC WD10EFRX-68FYTN0) tedy ne méně než 10 minut, ale pak funguje podle přání, zatímco zelený (Model Number: WDC WD10EADS-11M2B2) na cokoliv pod 20 minut usne za 20 minut a na cokoliv nad 20 minut neusne nikdy.
Dobrá tedy, jedno pole bude usínat po 3 hodinách, to druhé s green diskem po 20 minutách. Nastavil jsem, pak ještě laboroval se serverem, jednou ho restartoval… A druhý den koukám na logovací mail, že disky zase nespí. Ani jeden.
Nastavení totiž není perzistentní (jak potvrzuje tento a tento odkaz)!
Hurá, naučím se i dělat služby system.d.
Nejprve tedy uděláme skript pro nastavení disků:
#!/bin/bash
# nastaveni uspavani prvniho pole - 3 hodiny
/sbin/hdparm -S 246 /dev/sda
/sbin/hdparm -S 246 /dev/sdb
# nastaveni uspavani druheho pole - 20 min
# (green disk /dev/sdc cokoliv vyssiho ignoruje a nespi vubec)
/sbin/hdparm -S 240 /dev/sdc
/sbin/hdparm -S 240 /dev/sde
Pak soubor s definicí služby: vi /etc/systemd/system/disk_suspend_settings.service
[Unit]
After=network.target
[Service]
ExecStart=/root/system/setup_disks.sh
[Install]
WantedBy=default.target
Souboru změníme práva
chmod 664 /etc/systemd/system/disk_suspend_settings.service
Znovu evokujeme démona služeb:
systemctl daemon-reload
A naši novou službu zapneme:
systemctl enable disk_suspend_settings
Výpis to potvrdí:
Created symlink from /etc/systemd/system/default.target.wants/disk_suspend_settings.service to /etc/systemd/system/disk_suspend_settings.service.
A teď už konečně opravdu disky uspáváme. I po restartu.
Zdroj informací: How to automatically execute shell script at startup boot on systemd Linux.
Hodnocení hvězdičkami používá jako prevenci
opakovaného kliknutí anonymní cookie.
Pokud s tím nesouhlasíte, neklikejte.
Další podrobnosti k cookies zde.