Strona 1 z 1

Usypianie dysku twardego na żądanie

: 09 wrz 2020, 10:44
autor: sppp
Witam wszystkich Forumowiczów.
Posiadam laptopa Lenovo G50-30 na Ubuntu 19, powłoka XFCE. Laptop pracuje całą dobę więc postanowiłem wykorzystać go dodatkowo jako domowy NAS. Podłączyłem do niego dysk Seagate Archive st8000as0002 przez USB3, sformatowany na ext4, udostępniony przez sambę.
Dostęp do danych na dysku nie jest potrzebny non stop więc chciałbym dysk usypiać w czasie kiedy nie ma połączeń.
Zacząłem od hdparm -S 120. Dysk wchodzi w stand-by po określonym czasie. Niestety po kilku minutach uruchamia się ponownie. Po kilkunastu godzinach licznik włączeń w S.M.A.R.T. wzrasta o kilkadziesiąt. W tym czasie nie ma żadnych żądań z innych komputerów. Polecenie fatrace -c -t nie pokazuje w tym czasie żadnych odwołań do punktu zamontowania tego dysku. W przypadku gdy pojawiało się odwołanie do dysku to bez problemu od razu startował, po kilku czy kilkunastu sekundach był dostęp do danych.
Niestety dysk (zgodnie ze specyfikacją producenta) nie ma wbudowanej funkcji APM więc nie działa polecenie hdparm -B. Dodatkowo polecenie hdparm -C cały czas pokazuje stan dysku jako stand-by, niezależnie od tego czy dysk pracuje czy nie.
Dalej ustawiłem hdparm -S 0 i ręcznie przełączyłem dysk w stand-by hdparm -y. Dysk po kilku minutach się włączył, mimo że nie było do niego odwołań.
Następnie, przy ustawionym hdparm -S 0, uśpiłem dysk poleceniem hdparm -Y. Dysk się wyłączył i nie włączał się sam. Przy odwołaniu do dysku oczekiwanie na dostęp długie - 40-50 sekund. Zauważyłem, że w tym czasie obciążenie procesora szło na 100% (ale nie był to żaden z widocznych procesów). Dysk startował dopiero 20-30 sekund po odwołaniu. Gdzieś przeczytałem, że do wybudzenia z uśpienia konieczny jest reset dysku co linux robi automatycznie, pewnie stąd ta zwłoka.
Teraz chciałem sprawdzić, czy się wybudzi i czy będzie dostęp do danych. Niestety, dysk nie chce współpracować. W tej chwili łączę się z komputerem zdalnie więc nie mam możliwości "fizycznie" zresetować dysku.
Nie da się go odmontować (cel jest zajęty). Nie da się wyświetlić smarta. Skończy się pewnie restartem systemu, ale nie mogę tego zrobić w tej chwili.
Miałem pomysł żeby napisać skrypt, który czytał by z wyjścia fatrace, jeśli nic nie pojawia się tam przez ileś minut to uruchamia hdparm -Y. Gdyby na fatrace pojawiło się jakieś odwołanie przy wyłączonym dysku to wysyłałby sygnał resetu dysku, żeby dostęp do danych nastąpił szybciej. Niestety musi to działać niezawodnie, a ponieważ właśnie się wszystko wywaliło to raczej takie rozwiązanie odpada.
Czy ma ktoś jakiś pomysł w jaki sposób uzyskać skuteczne i niezawodne wyłączenie tego dysku? Z góry dziękuję za pomoc.

Pozdrawiam, Sebastian.

EDIT: Przeczytałem, że problem może stanowić usługa udisks2, ale udisksctl monitor pokazuje tylko odwołania "SmartUpdated" do dysku systemowego, co 10 minut.