Nie wykończ dysku twardego używając Ubuntu (na laptopie)
Jak się okazuje z niewyjaśnionych*** jeszcze powodów często zdarza się ze kombinacja Ubuntu + Laptop możne być szkodliwa dla dysku twardego na tym laptopie. Cale szczęście można ten problem po części usunąć.
Postaram się tu opisać;
Problem – polega na tym ze Ubuntu zainstalowany na laptopie we właściwy sposób zbyt “agresywnie” próbuje oszczędzać energie. Miedzy innymi poprzez zbyt częste parkowanie głowicy dysku. Niestety takie parkowania mogą sprawić ze nasz dysk twardy zużyje się bardzo szybko. Według specyfikacji dysk twardy może zaparkować głowice około 600.000 razy w czasie swojego życia. W normalnych warunkach parkowanie nie odbywa się zbyt często, zwłaszcza na dyskach w komputerach stacjonarnych i dlatego tez problem ten nie dotyczy dysków w desktopach. W laptopie parkowanie głowicy zabezpiecza wnętrzności dysku podczas wstrząsów. Nowsze generacje laptopów Lenowo maja takie zabezpieczenie pod nazwa “Poduszka powietrzna dla dysku”.
Problem ma prawdopodobnie związek z journaling’iem (księgowaniem) partycji typu ext3. Proces ten z natury utylizuje dysk podczas kiedy system oszczędzania energii stara się jednoczesnie zaparkować głowice .
Kontrola – By sprawdzić czy mamy problem musimy odczytać pewien parametr z naszego dysku. Po Ubuntu musimy mieć zainstalowany programik smartmontools, jeżeli go nie mamy możemy należy go zainstalować komeda:
sudo apt-get install smartmontools
następnie z linii komend (terminal) wykonujemy następujące polecenie
sudo smartctl -d ata -a /dev/sda | grep Load_Cycle_Count
u mnie wyszło z tego coś takiego:
193 Load_Cycle_Count 0x0032 086 086 000 Old_age Always – 145578
co oznacza ze u mnie ta wartość wynosi 145578 cykli. Zważywszy ze ten dysk nie ma jeszcze pól roku to bardzo dużo. Be uzyskać lepszy rezultat warto powtórzyć ta komendę kilka razy w ciągu powiedzmy 15 minut. Specjaliści twierdza ze jeżeli ilość cykli rośnie powyżej 90 na dobę należy to skorygować.
Warto również zwrócić uwagę na inne parametry który możemy uzyskać z komendy
sudo smartctl -d ata -a /dev/sda
Wycinek z rezultatów mojego dysku na laptopie u mnie był taki:
3 Spin_Up_Time 0x0027 100 100 001 Pre-fail Always – 1582
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always – 5849
9 Power_On_Hours 0x0032 088 088 000 Old_age Always – 5066
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always – 588
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always – 233
193 Load_Cycle_Count 0x0032 086 086 000 Old_age Always – 145578
194 Temperature_Celsius 0x0022 100 100 000 Old_age Always – 37 (Lifetime Min/Max 13/41)
220 Disk_Shift 0x0002 100 100 000 Old_age Always – 143
222 Loaded_Hours 0x0032 090 090 000 Old_age Always – 4094
226 Load-in_Time 0x0026 100 100 000 Old_age Always – 336
a na moim desktopie taki:
3 Spin_Up_Time 0x0007 109 109 024 Pre-fail Always – 144 (Average 158)
4 Start_Stop_Count 0x0012 100 100 000 Old_age Always – 1702
8 Seek_Time_Performance 0x0005 113 113 020 Pre-fail Offline – 42
9 Power_On_Hours 0x0012 099 099 000 Old_age Always – 13148
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always – 919
192 Power-Off_Retract_Count 0x0032 099 099 050 Old_age Always – 1821
193 Load_Cycle_Count 0x0012 099 099 050 Old_age Always – 1821
194 Temperature_Celsius 0x0002 157 157 000 Old_age Always – 35 (Lifetime Min/Max 13/57)
Prosze zauwazyc ze na latopie dysk został uruchomiony 588 razy i w miedzy czasie odbyło się 145578 cykli parkowania głowicy (!). Na moim desktopie przy 919 uruchomieniach głowica była zaparkowania tylko 1821 razy.
Usuwamy problem – W wypadku mojego dysku w laptopie stwierdziłem ze Load_Cycle_Count był około 150 na dobę i postanowiłem to zlikwidować.
Usuniecie problemu polega na tym ze instruujemy system oszczędzania energii w Ubuntu by parkował dysk tylko kiedy nasz laptop jest zasilany z baterii. Jeżeli podłączymy się do sieci elektrycznej dysk nie ma być parkowany. Nie jest to optymalne rozwiązanie ponieważ nasz dysk w laptopie jest teraz teoretycznie bardziej narażony na uszkodzenie spowodowane wstrząsami.
Proponowane rozwiązanie to kompromis pomiędzy szansa na szybkie wykończenie dysku przez częste parkowanie albo wykończenie dysku poprzez brak zabezpieczenia przed wstrząsami.
Tak wiec podejmując się tego rozwiązania wychodzimy z założenia ze będę “delikatnie” obchodzil siesię z laptopem.
By to naprawić tworzymy skrypt pod nazwa 99-hdd-ugly-fix.sh komenda:
$sudo gedit 99-hdd-ugly-fix.sh
skrypt musie zawierać następujący kod:
#!/bin/bash
if on_ac_power; then
# on AC so don’t do any head parking
hdparm -B 254 /dev/sda
hdparm -B 255 /dev/sda
else
# either on battery or power status could not be determined
# so quickly park the head to protect the disk
hdparm -B 128 /dev/sda
fi
skrypt należy teraz skopiować w następujące 4 miejsca:
$sudo install 99-hdd-ugly-fix.sh /etc/acpi/resume.d/
$sudo install 99-hdd-ugly-fix.sh /etc/acpi/start.d/
$sudo install 99-hdd-ugly-fix.sh /etc/acpi/ac.d/
$sudo install 99-hdd-ugly-fix.sh /etc/acpi/battery.d/
Po tym wszystkim należy wystartowac ponownie nasz laptop i obserwować co się dzieje kiedy zasilanie pochodzi z baterii a co kiedy z sieci. Do tego należy ponownie przeprowadzić pomiar komenda:
sudo smartctl -d ata -a /dev/sda | grep Load_Cycle_Count
Jezeli liczba nie rośnie więcej niż 90 na dobę jest zdecydowanie lepiej. Po zastosowaniu tego rozwiązania w moim laptopie (Lenovo ThinkPad t40p) liczba rośnie od 2 – 4 na dobę.