Sprawdzanie i naprawa systemu plików extended.
Struktura systemu plików extended może zostać uszkodzona gdy system zostanie niepoprawnie wyłączony lub nastąpi jego awaria. Do utrzymania integralności systemu plików extended używane jest narzędzie e2fsck, zlinkowane hardlinkiem do komend fsck.ext3 i fsck.ext4, które mogą także używane. e2fsck uruchamiane jest automatycznie podczas startu systemu, przed którym nastąpiła awaria systemu. Program uruchamia sprawdzanie i naprawę całego systemu plików, który nie ma dziennika (journal). Jeżeli program nie jest w stanie usunąć niespójności systemu plików zgłasza to użytkownikowi. Jeżeli program ustali, że system plików ma dziennik (journal), to go przywraca i przywraca poprzedni spójny stan systemu plików. System nie pozwala na zamontowanie systemu plików z uszkodzonym bądź utraconym podstawowym superblokiem (primary superblock). W takiej sytuacji musimy z ustalić położenie kopii zapasowej superbloku komendą dumpe2fs po czym ponownie uruchomić e2fsck wskazując położenie backupu superbloku. Po naprawie podstawowego superbloku możliwe jest ponowne zamontowanie systemu plików. W czasie sprawdzania systemu plików e2fsck może napotkać plik z zagubioną nazwą. Taki plik trafia do katalogu lost+found w tym samym systemie plików. Plik nazywany jest plikiem sierotą (orphan file) jako nazwę nadaje mu się numer iwęzła (inode number). Aby określić typ takiego pliku można użyć komendy file. Jeżeli jest to plik tekstowy to można podejrzeć jego zawartość komendami cat lub more. Można także użyć komendy string aby wypakować czytelną zawartość pliku, który następnie będzie można odczytać.
Ćwiczenie 1. Naprawa uszkodzonego systemu plików extended.
Odmontowujemy uszkodzony system plików:
# umount /mntext4
Uruchamiamy e2fsck na logicznym woluminie /dev/vg10/lvolext4:
# e2fsck /dev/vg10/lvolext4
/dev/vg10/lvolext4: clean, 11/73728 files, 13789/288768 blocks
Uzyskujemy listę kopii zapasowych superbloków dla tego system plików:
# dumpe2fs /dev/vg10/lvolext4 | grep superblock
Primary superblock at 0, Group descriptors at 1-1
Backup superblock at 32768, Group descriptors at 32769-32769
Backup superblock at 98304, Group descriptors at 98305-98305
Backup superblock at 163840, Group descriptors at 163841-163841
Backup superblock at 229376, Group descriptors at 229377-229377
Uruchamiamy e2fsck i wskazujemy położenie pierwszej kopii zapasowej superblocku (32768) aby naprawić podstawowy superblock:
# fsck –b 32768 /dev/vg10/lvolext4
e2fsck 1.42.9 (28-Dec-2013)
/dev/vg10/lvolext4 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg10/lvolext4: ***** FILE SYSTEM WAS MODIFIED *****
/dev/vg10/lvolext4: 11/73728 files (9.1% non-contiguous), 13789/288768 blocks
Montujemy naprawiony system plików:
# mount /mntext4
Sprawdzanie i naprawa systemu plików XFS.
Do naprawy systemu plików XFS przewidziane jest narzędzie xfs_repair. Wymaga ono aby system plików był odmontowany i w znajdował się w czystym stanie (clean state). W czasie wykonywania wszystkich niezbędnych operacji narzędzie automatycznie przywraca dziennik (journal) bez zadawania pytań użytkownikowi. Uruchomione xfs_repair przechodzi przez siedem faz: sprawdzanie elementów takich jak iwęzły (inodes), katalogi, nazwy ścieżek, liczniki linków i superbloki. Po uszkodzeniu systemu plików w czasie ponownego uruchamiania systemu program nie uruchamia się sam tak jak ma to miejsce w przypadku e2fsck. Program po prostu powtarza log w czasie montowania systemu plików (replays log at mount time) upewniając się, że system plików jest spójny.
Przykład użycia xfs_repair:
# umount /mntxfs
# xfs_repair /dev/vg10/lvolxfs
Phase 1 - find and verify superblock…
Phase 2 - using internal log
- zero log…
- scan filesystem freespace and inode maps…
- found root inode chunk
Phase 3 - for each AG…
- scan and clear agi unlinked lists…
- process known inodes and perform inode discovery…
- agno = 0
- agno = 1
- process newly discovered inodes…
Phase 4 - check for duplicate blocks…
- setting up duplicate extent list…
- check for inodes claiming duplicate blocks…
- agno = 0
- agno = 1
Phase 5 - rebuild AG headers and trees…
- reset superblock…
Phase 6 - check inode connectivity…
- resetting contents of realtime bitmap and summary inodes
- traversing filesystem …
- traversal finished …
- moving disconnected inodes to lost+found …
Phase 7 - verify and correct link counts…
done
# mount /mntxfs