fsck: Opcje najdokładniejszego sprawdzania dysku

12

Mam dysk ze znanym problemem (wiem, że dd dławi się, gdy próbuję go sklonować). Ale kiedy uruchamiam z Live CD i uruchamiam fsck na odmontowanej partycji, otrzymuję:

ubuntu@ubuntu:~$ sudo fsck /dev/sdf1
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
/dev/sdf1: clean, 227091/9625600 files, 12789815/38497756 blocks

milisekundę później. Trudno uwierzyć, że sprawdził cały dysk twardy w ciągu ms.

Nie jestem też pewien, czy powinienem fsck'ing sdf1 czy cały dysk fizyczny sdf. Kiedy próbuję całego dysku:

ubuntu@ubuntu:~$ sudo fsck /dev/sdf
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
fsck.ext2: Device or resource busy while trying to open /dev/sdf
Filesystem mounted or opened exclusively by another program?

Nie rozumiem tego, ponieważ żadna z partycji nie wydaje się być zamontowana (właśnie wystartowałem z live CD i uruchomiłem polecenie).

Więc moje podstawowe pytanie brzmi: w jaki sposób mogę uzyskać fsck (lub inne narzędzie, które może działać lepiej), aby poświęcić więcej niż milisekundę na analizę mojego dysku z problemami?

Fred Hamilton
źródło

Odpowiedzi:

14

Po pierwsze, masz rację o uruchomieniu fsck na partycji - fsck działa tylko na systemach plików, a nie na całych dyskach. Możesz uzyskać listę wszystkich partycji na dysku za pomocą fdisk -l /dev/sdd.

Twój typ systemu plików to prawdopodobnie ext3 (domyślnie w większości dystrybucji Linuksa), co oznacza, że ​​zwykle przekaże fsck, o ile jego dziennik jest czysty. fsck -f, jak wspomniano powyżej, wymusi pełną kontrolę.

Jeśli jednak odczytałeś błędy na dysku, żadna ilość plików fsck nie pomoże dd - ponieważ dd tak naprawdę nie dba o zawartość dysku.

Aby dd odczytał dysk i kontynuował po błędach odczytu, użyj dd conv=noerror,sync, który będzie kontynuował po błędach odczytu i doda bajty zerowe do dowolnego bloku, gdy wystąpi błąd odczytu.

Po zakończeniu tworzenia kopii zapasowej powinieneś uruchomić fsck -fklon, aby go ponownie uruchomić.

Kolejna wskazówka: jeśli wykonasz kopię zapasową partycji do pliku, możesz ją zamontować w pętli zwrotnej mount -o loop filename.ext3 /mountpoint. resize2fs /dev/sdx1Załóżmy również, że klonujesz partycję 200G na dysk 500G, możesz następnie uruchomić (gdzie sdx jest nowym dyskiem podzielonym na partycje z pojedynczą partycją 500G), a rozmiar systemu plików zostanie zmieniony na 500G.

Wreszcie, jeśli dysk ma taki kształt, że powoduje błędy odczytu, radzę unikać wyłączania go i włączania do momentu zakończenia odzyskiwania danych. W niektórych trybach awarii dysk w pewnym momencie po prostu przestanie się obracać lub nie zostanie rozpoznany przez system operacyjny, a wtedy pobieranie danych z dysku staje się dość drogie.

Kristian
źródło
Próbowałem „dd conv = noerror, sync”, ale sklonowanego dysku nie można było uruchomić. Co jest frustrujące, ponieważ dysk rozruchowy działa dobrze, fscks dobrze, ale nie mogę go sklonować na inny dysk, ponieważ dysk ma 1 wadliwy blok (gdzie najwyraźniej nie ma danych). Wydaje mi się, że utknąłem ...
Fred Hamilton,
Nie zapominaj, że mogą istnieć inne powody, dla których dysk był niemożliwy do uruchomienia (inna geometria dysku i problemy z MBR / boot loader). Jeśli możesz najpierw potwierdzić, że system plików na nowym dysku jest OK, możesz uruchomić system za pomocą trybu ratunkowego z instalacyjnej płyty CD, aktualizując program ładujący GRUB itp. To znaczy. najpierw uruchom fsck -f / dev / sdx1, a następnie spróbuj zamontować system plików za pomocą mount / dev / sdx1 / mnt - zamień x na odpowiednią literę napędu.
Kristian,
Doskonała sugestia, ale kiedy uruchomiłem fsck -f na sklonowanej partycji dostałem dosłownie setki błędów (niedozwolone bloki w i-węzłach, bity kompresji ustawione w systemie plików bez obsługi kompresji, złe bloki rozszerzonych atrybutów itp.), Zanim przyznałem, że dd klon był całkowicie ukryty ... Nie jestem pewien, co robić dalej ... Przypuszczam, że spróbuję po prostu skopiować wszystkie pliki na czystą partycję ... W każdym razie dzięki.
Fred Hamilton,
4
Lepiej jest użyć ddrescue (lub dd_rescue + dd_rhelp) niż dd; jest mądrzejszy w obsłudze błędów, ponawianiu sektorów, w których wystąpiły błędy. gnu.org/software/ddrescue/ddrescue.html kalysto.org/utilities/dd_rhelp/index.en.html garloff.de/kurt/linux/ddrescue
freiheit
1
Najdokładniejsze sprawdzenie dysku (ze wszystkimi poprawkami zautomatyzowanymi, jeśli to możliwe) dla partycji root ext2, ext3 lub ext4 wykonuje się w następujący sposób: (1) uruchom z nośnika ratunkowego (partycja root musi być odmontowana), (2) uruchom e2fsck -f -cc -D -p. To powoduje wymuszone sprawdzanie z nieniszczącą kontrolą odczytu i zapisu nośników i naprawia wszystkie znalezione problemy, które można bezpiecznie naprawić. Dysk twardy 2 TB może potrwać kilka dni ...
Mikko Rantalainen
10

Może to nie mieć znaczenia w twoim przypadku, ale pomyślałem, że i tak o tym wspomnę:

Do sprawdzenia dysku niższego poziomu możesz użyć tego badblocksnarzędzia. Przechodzi przez urządzenie i zgłasza wszelkie uszkodzone bloki (oczywiście nie może nic naprawić). Przydaje się to przynajmniej do sprawdzenia, czy dysk nie jest fizycznie uszkodzony.

Można także e2fsckużyć, badblocksaby uniknąć użycia błędnych bloków przez system plików. Z e2fsckinstrukcji:

  -c     This option causes e2fsck to use badblocks(8) program to do a  read-
         only scan of the device in order to find any bad blocks.  If any bad
         blocks are found, they are added to the bad block inode  to  prevent
         them from being allocated to a file or directory.  If this option is
         specified twice, then the bad block scan will be done using  a  non-
         destructive read-write test.
Jonik
źródło
Uwaga fsck_hfs -sbędzie również skanować w poszukiwaniu złych bloków.
awiebe
5

Chcesz, aby opcja -f działała w trybie fsck (wymuszone sprawdzanie, nawet jeśli system plików wydaje się czysty).

Powinieneś uruchomić fsck w trybie pojedynczego użytkownika. Jednym z łatwych sposobów, aby to zrobić bez uruchamiania na żywo cdrom, jest ponowne uruchomienie z opcją -F.

shutdown -rF now 
Richard Hoskins
źródło
Dzięki, ale jedno pytanie: Jeśli zrestartuję się z opcją -F przy użyciu płyty CD na żywo, skąd ta płyta CD wie, że ma uruchomić sprawdzanie? To CD, nie ma pamięci, o której wiem ...
Fred Hamilton,
Nie sądzę, że musisz to robić z płyty CD na żywo. Po prostu uruchom z płyty CD na żywo i uruchom fsck na odmontowanej partycji z włączoną opcją -f (force). LUB możesz zrestartować system z dysku twardego za pomocą polecenia shutdown -rF. To wymusi fsck przed zamontowaniem systemu plików.
Richard Hoskins,
W rzeczywistości wykona fsck w trybie pojedynczego użytkownika. Zredagowałem swoją odpowiedź.
Richard Hoskins,
1
-FFlag na shutdownnie zwykle oficjalnie udokumentowane (patrz man shutdowni shutdown --helpi zauważ, że tam nie ma), więc nie można ufać do pracy. Czasami jest to brak możliwości. Oficjalnie jedyną metodą skanowania partycji głównej jest uruchomienie z alternatywnego nośnika.
Mikko Rantalainen