Sprawdzanie dysku w poszukiwaniu b

Archiwalne, stare wpisy FAQ i HowTo Użytkowników
Awatar użytkownika
Morfik
Beginner
Posty: 149
Rejestracja: 21 lutego 2009, 21:00

Sprawdzanie dysku w poszukiwaniu błędów systemu plików

Post autor: Morfik »

Czasami zdarzają się błędy w systemie plików, które mogą doprowadzić do poważnych awarii systemu. Dlatego Linux co kilkanaście lub kilkadziesiąt uruchomień systemu sprawdza stan systemu plików i ewentualnie naprawia błędy. Gdy błędy nie będą naprawiane, mogą powodować pojawienie się kolejnych błędów, aż system plików padnie całkowicie.

fsck służy do sprawdzania i opcjonalnie, do naprawy jednego lub kilku linuksowych systemów plików. System plików (ang. file system) może być nazwą urządzenia (np. /dev/hdc1, /dev/sdb2), punktem montowania (np. /, /usr, /home), albo etykietą ext2 lub identyfikatorem UUID (np. UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd lub LABEL=root). W celu skrócenia łącznego czasu potrzebnego do sprawdzenia wszystkich systemów plików, program fsck będzie usiłował sprawdzać równolegle systemy plików umieszczone na fizycznie różnych dyskach.

Skanowanie systemu plików możemy zainicjować ręcznie lub też może się ono odbywać automatycznie, co kilka montowań partycji, przy starcie systemu operacyjnego. Możemy też je całkowicie wyłączyć.

By zdefiniować co ile montowań systemu plików ma być dokonywane sprawdzanie integralności plików, posłużymy się programem tune2fs z opcją -c, w argumencie podając liczbę, która oznacza liczbę montowań np.

Kod: Zaznacz cały

tune2fs -c 30 /dev/sda1
W powyższym przykładzie co 30 uruchomień systemu, partycja główna zostanie przeskanowana. W przypadku gdy zamiast 30 wstawimy 0, skanowanie zostanie trwale wyłączone. Nie jest to jednak zalecane, gdyż może się to przyczynić do utraty danych. Jeżeli jednak nie odpowiada nam, że w najmniej oczekiwanym momencie licznik montowań akurat osiągnął stan 30 i zostaje automatycznie uruchomione skanowanie systemu plików, możemy ustawić parametr na 0 i ręcznie dokonywać sprawdzania systemu plików.

Za pomocą polecenia:

Kod: Zaznacz cały

dumpe2fs /dev/sda1
możemy zobaczyć szczegółowe statystyki systemu plików dla konkretnej partycji. Nas głównie interesują dwie pozycje:

Kod: Zaznacz cały

Mount count:              6
Maximum mount count:      38
,,Mount count'' oznacza liczbę montowań, innymi słowy ile razy zamontowaliśmy już tą partycję. Druga linijka przedstawia graniczną wartość, przy której nastąpi skanowanie systemu plików. W tym przypadku po 38 montowaniach nastąpi zresetowanie licznika w pierwszej linii i zostanie zainicjowany program fsck dla tej partycji.

Sprawdzanie systemu plików, możemy wyłączyć też za pomocą opcji ustawionych w pliku: /etc/fstab. Edytujemy wspomniany plik ulubionym edytorem jako root:

Kod: Zaznacz cały

nano /etc/fstab

Kod: Zaznacz cały

/dev/sda1       /               ext3    errors=remount-ro       0       1

i zmieniamy ostatnia cyfrę (1) na 0. Ta pozycja pozwala wybrać kolejność sprawdzania systemu plików przy starcie systemu. Wartość 0 oznacza, że partycja nie będzie sprawdzana. Wartość 1 oznacza, że partycja ma być sprawdzana w pierwszej kolejności. Natomiast wartość 2 oznacza, że napęd czy partycja mają być sprawdzane jako następne (po sprawdzeniu partycji z opcją 1).
Więcej w: http://debian.linux.pl/threads/704-Mont ... 3#post9203 i w dokumentacji systemowej.

Ręcznego skanowania systemu plików możemy dokonać na kilka sposobów. Pierwszym z nich jest zresetowanie lub zamknięcie systemu z opcją -F (jako root):

Kod: Zaznacz cały

shutdown -Fr now
shutdown -Fh now

Parametr -r oznacza (ang. reboot) (zrestartuj), zaś parametr -h oznacza (ang.halt) (zatrzymaj). Po ponownym uruchomieniu komputera nastąpi sprawdzenia systemu plików.

W przypadku gdy chcemy zaplanować skanowanie systemu plików przy następnym resecie komputera ale nie uśmiecha nam się resetować go w tym konkretnym momencie, możemy utworzyć plik forcefsck w głównym katalogu (jako root).

Kod: Zaznacz cały

cd /
touch forcefsck

Później już tylko wystarczy zresetować system.

Plik forcefsck jest kasowany przy starcie systemu operacyjnego, chwilę po zakończeniu sprawdzania integralności plików. W przypadku gdy dodamy atrybut +i dla tego pliku, za pomocą

Kod: Zaznacz cały

chattr +i /forcefsck
(dotyczy to tylko systemu plików extx) system będzie sprawdzał wszystkie wpisy zdefiniowane w /etc/fstab przy każdym uruchomieniu komputera, a to z tego względu, że plik z atrybutem +i nie może być zmieniony czy skasowany, nawet przez użytkownika root.

W przypadku skanowania zaszyfrowanych partycji musimy wcześnie odszyfrować partycję, a dopiero później ją skanować. Problematyczne może być znalezienie dysku (lub partycji), który chcemy przeskanować. Pomocne mogą się okazać narzędzia fdisk oraz df. Zaszyfrowane partycje pod Linuksem wykrywane są jako /dev/dm-0, /dev/dm-1, /dev/dm-2, itp. Gdy ustalimy już co chcemy skanować robimy to poleceniem np.:

Kod: Zaznacz cały

fsck.ext3 -nfv /dev/dm-1
Użyte parametry odpowiadają za:

[INDENT]-n - nie dokonuje zmian w systemie plików (tryb tylko do odczytu)
-f - wymusza sprawdzenie nawet "czystego" systemu plików
-v - pokazuje większą ilości informacji[/INDENT]

W przypadku dokonywania skanu w trybie tylko do odczytu, partycja może być zamontowana, w przeciwnym wypadku musi zostać odmontowana, gdyż naprawa zamontowanego systemu plików grozi utratą danych.
Zablokowany