Jak zatrzymać dysk w systemie Linux?
: 08 grudnia 2008, 20:12
Jak zatrzymać dysk w systemie Linux?
Wydaje się banalne, ale takie nie jest. Jak wiadomo system i działające aplikacje chcą coś zapisywać i odczytywać z dysku. Gdy wykorzystujemy laptopa pracując na baterii nie mile widziane są niepotrzebne straty energii. Więc do dzieła! Większość poleceń wymaga uprawnień root lub sudo.
Potrzebny nam jest program hdparm
Zatrzymać dysk możemy poleceniem:
Gdzie sda to dysk, który chcemy zatrzymać. Po takim zabiegu dysk powinien zwolnić. Niestety prawdopodobnie za momencik usłyszysz przyspieszenie obrotów talerzy dysku... NIESTETY, jakiś program zapragnął dostępu do dysku ;-)
Co możemy zrobić, aby to ograniczyć? Sprawdzić samemu kto potrzebuje dostępu do dysku. Wystarczy wydać polecenie:
Następnie:
Zobaczymy jakie procesy odczytują oraz zapisują dane.
Schemat jest taki [NUMER] [NAZWA_PROCESU]([PID]): [CO ROBI] [JAKI BLOK] [NA JAKIEJ PARTYCJI]
loop0(3543): READ block 13793312 on sda5
Czyli loop0 o PID 3543 odczytuje blok 13793312 na partycji sda5.
Według tego ręcznie możemy wyłączyć procesy, które korzystają z dysku. Poleceniem:
Rozwiązaniem również jest użycie lm-profiler. Jest on częścią pakietu laptop-mode-tools. Więc instalujemy:
Teraz wydajemy polecenie:
Teraz musimy poczekać 600 sekund. Program będzie monitorował użycie dysku, a na koniec zapyta nas czy chcemy wyłączyć pewne usługi przy starcie i podpowie, które programy korzystają z dysku. Jeżeli jesteśmy pewni, że chcemy wyłączyć usługę przy starcie wybieramy y i ENTER.
Już jesteśmy prawie na końcu, wyłączyłeś wszystko, ale dysk ciągle startuje? Normalne
Ale i na to znajdziemy radę!
Prawdopodobnie procesy, które odwołują się do dysku to kjournald, syslogd i pdflush.
syslogd jest programem, który zapisuje logi systemowe co jakiś okres czasu, wyłączenie jego jest bardzo proste. Wystarczą dwa polecenia:
pdflush - zrzuca obraz procesów. Nie wyłączymy go, ale można ograniczyć dostęp do dysku poprzez polecenie:
Komenda ta powoduje zrzucanie obrazu procesów co 900 sekund (15 minut). Teoretycznie bezpieczne jest 15 sekund, ale ... 
kjournald - no cóż tutaj już nie jest tak kolorowo. To jest proces, który jest odpowiedzialny za księgowanie. Najbardziej popularny teraz system plików ext3 posiada księgowanie zawartości partycji. Przez co możemy odzyskać dane przy twardym restarcie. Domyślnie odstęp czasu między zapisami to 5 sekund. Czyli proces co 5 sekund zapisuje coś na dysku. Rozwiązanie jest proste. Wystarczy zaaplikować poprawkę na źródła kernela. Do ściągnięcia tutaj:
Journal 15 minut patch
Patch powoduje zmianę odstępu czasowego między zapisem księgi na 900 sekund (15 minut). Jak zastosować to do swojego kernela?
Wchodzimy w źródła i wykonujemy polecenie:
Następnie wykonujemy kompilację i gotowe. Teraz możemy spróbować zatrzymać dysk i cieszyć się ciszą ;-)
Patch działa poprawnie na kernelu 2.6.27.7, na wcześniejszych też powinien działać!
Wydaje się banalne, ale takie nie jest. Jak wiadomo system i działające aplikacje chcą coś zapisywać i odczytywać z dysku. Gdy wykorzystujemy laptopa pracując na baterii nie mile widziane są niepotrzebne straty energii. Więc do dzieła! Większość poleceń wymaga uprawnień root lub sudo.
Potrzebny nam jest program hdparm
Kod: Zaznacz cały
apt-get install hdparm
Kod: Zaznacz cały
hdparm -Y /dev/sda
Co możemy zrobić, aby to ograniczyć? Sprawdzić samemu kto potrzebuje dostępu do dysku. Wystarczy wydać polecenie:
Kod: Zaznacz cały
sysctl vm.block_dump=1
Kod: Zaznacz cały
dmesg | grep -e READ -e WRITE
Kod: Zaznacz cały
[ 6627.835410] loop0(3543): READ block 13793312 on sda5
[ 6627.835633] deluged(3627): READ block 48613400 on dm-0
[ 6627.835698] deluged(3627): READ block 48613552 on dm-0
[ 6627.840766] loop0(3543): READ block 13793568 on sda5
[ 6627.842378] deluged(3627): READ block 48613656 on dm-0
[ 6627.842400] deluged(3627): READ block 48613904 on dm-0
[ 6627.843391] loop0(3543): READ block 13793824 on sda5
loop0(3543): READ block 13793312 on sda5
Czyli loop0 o PID 3543 odczytuje blok 13793312 na partycji sda5.
Według tego ręcznie możemy wyłączyć procesy, które korzystają z dysku. Poleceniem:
Kod: Zaznacz cały
kill [PID_PROCESU]
Kod: Zaznacz cały
apt-get install laptop-mode-tools
Kod: Zaznacz cały
lm-profiler
Już jesteśmy prawie na końcu, wyłączyłeś wszystko, ale dysk ciągle startuje? Normalne

Prawdopodobnie procesy, które odwołują się do dysku to kjournald, syslogd i pdflush.
syslogd jest programem, który zapisuje logi systemowe co jakiś okres czasu, wyłączenie jego jest bardzo proste. Wystarczą dwa polecenia:
Kod: Zaznacz cały
/etc/init.d/klogd stop
/etc/init.d/sysklogd stop
Kod: Zaznacz cały
echo 90000 > /proc/sys/vm/dirty_writeback_centisecs

kjournald - no cóż tutaj już nie jest tak kolorowo. To jest proces, który jest odpowiedzialny za księgowanie. Najbardziej popularny teraz system plików ext3 posiada księgowanie zawartości partycji. Przez co możemy odzyskać dane przy twardym restarcie. Domyślnie odstęp czasu między zapisami to 5 sekund. Czyli proces co 5 sekund zapisuje coś na dysku. Rozwiązanie jest proste. Wystarczy zaaplikować poprawkę na źródła kernela. Do ściągnięcia tutaj:
Journal 15 minut patch
Patch powoduje zmianę odstępu czasowego między zapisem księgi na 900 sekund (15 minut). Jak zastosować to do swojego kernela?
Wchodzimy w źródła i wykonujemy polecenie:
Kod: Zaznacz cały
cd /usr/src/linux-[wersja]/
patch -p0 < journal.patch
Patch działa poprawnie na kernelu 2.6.27.7, na wcześniejszych też powinien działać!