W czasie ładowania systemu Linux uruchamiany jest program fsck, zadaniem jego jest wychwycenie uszkodzonych plików i ich ewentualne naprawienie. W zależności od typu systemu plików, program uruchamia odpowiednie polecenia do przeprowadzenia sprawdzania i naprawy. Część danych normalnie przechowywanych na dysku jest okresowo przechowywana w pamięci komputera, gdy system nie będzie miał możliwości zapisania tych danych na dysku, system plików może zostać uszkodzony.
W wiekszości przypadków uszkodzenie systemu plików następuje gdy:
praca systemu została nagle przerwana w wyniku zaniku lub spadku napięcia w sieci
wyłaczenie sytemu nastąpiło przyciskiem reset lub wyłącznikiem zasilania
W normalnej sytuacji gdy Linux został zatrzymany za pomocą odpowiedniej komendy (shutdown, halt, reboot), wszystkie systemy plików zostają zapisane i odłączone przed ponownym załadowaniem systemu. Program fsck za pomocą sygnatury, którą jądro przypisuje systemowi plików, przed ich załadowaniem, sprawdza czy są w porządku. Po pomyślnym załadowaniu systemu plików sygnatura ta jest usuwana.
Gdy fsck uzna że coś jest tak, z systemem plików, rozpoczyna pełny test kontrolujący zawartość poszczególnych katalogów. Na ogół fsck potrafi automatycznie naprawić wszystkie błędy, bez angażowania użytkownika i system zostanie naprawiony oraz pomyślnie załadowany.
Gdyby okazało się jednak że system plików jest poważnie uszkodzony, automatyczny proces naprawy zostanie zatrzymany i zostaje uruchomiony shell (powłoka), dzięki czemu jako root będzie możliwe ręczne uruchomienie fsck i naprawa systemu. Pojawi się taki oto komunikat:
*** An error occured during the filesystem check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.
Give root password for mainteance
(or type Control-D for normal startup):
Powinieneś podać teraz hasło root`a i nacisnąć [ENTER]. System zgłosi się następującym komunikatem:
Repair filesystem #
Jeżeli przedtem na ekranie pojawiła się informacja jaki system plików jest uszkodzony np: hda3 napisz na konsoli:
fsck -r /dev/hda3
naciśnij [ENTER] i odpowiadaj na pytania fsck w celu podjęcia przez niego odpowiedniej akcji. Jeżeli za bardzo nie wiesz o co chodzi z tymi pytaniami, naciskaj po prostu y (yes).
W przypadku gdy nie wiesz który system plików został uszkodzony musisz sprawdzić każdy system plików, zrobisz to poleceniem:
fsck -A -V ; echo == $? ==
Tak samo jak w poprzednim poleceniu musisz odpowiadać na pytania. fsck w komunikatach wyświetlanych między znakami równości, będzie wyświetlał cyfry. Jeżeli watość tej cyfry będzie mniejsza od 4, to oznacza że wszystko jest w porządku. Poniżej (znaczenie poszczególnych cyfr) KOD WYJŚCIA:
0 - brak błędów.
1 - błędy zostały naprawione
2 - system powinien zostać przeładowany
4 - błędy nie zostały naprawione
8 - błąd operacyjny (operational error)
16 - błąd użycia (składni)
128 - bład wspólnej biblioteki
Na ogól fsck radzi sobie z naprawą sytemu plików i gdy problem zostanie usunięty, shell informuje o wykonaniu zadania. Teraz po napisaniu exit i zatwierdzeniu, system powinien załadować się ponownie, tym razem już bez błędów.
Kod wyjścia e2fsck jest taki sam jak fsck
Jeżeli często, bez wyraźnej przyczyny, spotykasz się z błędami odczytu systemu plików być może masz na dysku uszkodzone sektory. Aby sprawdzić i zaznaczyć (wyłączyć z użycia) uszkodzone sektory wykonaj polecenie:
e2fsck -c system_plików
Sprawdzenie to powinno być wykonane na odmontowanym systemie plików.
Polecam lekturę man fsck i man e2fsck
Dodane przez valldek dnia kwiecień 14 2006 19:03:48