Dlaczego nie możesz sprawdzić zamontowanej partycji?

43

Powszechnie wiadomo, że nigdy nie należy sprawdzać zamontowanej partycji. Rozumiem, jak łatwo może to doprowadzić do uszkodzenia, jeśli system plików jest zapisany przez fsck (np. Używana jest opcja -a), ale dlaczego nie można uruchamiać kontroli tylko do odczytu na zamontowanych dyskach?

mikrofon
źródło

Odpowiedzi:

28

Od:

http://linux.die.net/man/8/fsck.ext3

„Należy pamiętać, że w ogóle nie jest bezpiecznie uruchomić e2fsckna zamontowanych systemach plików. Jedynym wyjątkiem jest sytuacja, gdy -nopcja jest określona, a -c, -lalbo -Lopcje nie są określone. Jednakże, nawet jeśli jest to bezpieczne, wyniki drukowane przez e2fsckto nieważne, jeśli system plików jest zamontowany. Jeśli pojawi się e2fsckpytanie, czy powinieneś sprawdzić zamontowany system plików, jedyną prawidłową odpowiedzią jest „nie”. Tylko eksperci, którzy naprawdę wiedzą, co robią, powinni rozważyć odpowiedź na to pytanie w innym sposób. "

MathewC
źródło
3
Jeden wyjątek: jeśli system plików jest zamontowany tylko do odczytu, a fsck jest również w trybie tylko do odczytu, to wszystko jest w porządku
Demi
31

Podstawowym problemem jest to, że narzędzie do sprawdzania systemu plików nie jest (zwykle) częścią systemu plików. Zamiast tego jest to osobny program, który czyta i zapisuje na tym samym dysku, co kod systemu plików w jądrze. W rezultacie, jeśli uruchomisz fsck na aktywnym systemie plików, masz dwa różne podmioty, które odczytują (i potencjalnie modyfikują) te same dane (dysk), ale nie koordynują się ze sobą w żaden sposób. W rezultacie, jak zauważyli inni, większość kontrolerów oczekuje, że nikt inny nie zmienia metadanych systemu plików podczas ich działania. Zostaną zdezorientowani i / lub zgłoszą fałszywe błędy, jeśli system plików jądra zmieni coś, czego nie oczekuje moduł sprawdzający.

Istnieje kilka systemów plików z kontrolerami, które są specjalnie zaprojektowane do uruchamiania „on-line” (tzn. Gdy system plików jest aktywny). Nowsze wersje FFS / UFS robią to, uruchamiając fsck z najnowszą migawką systemu plików (replika tylko do odczytu, kopia w czasie, tylko do odczytu). Jeśli znajdzie problemy, takie jak niespójności w mapach bitowych alokacji, poprawi je za pomocą wywołania systemowego, a nie poprzez zapisanie na dysku surowym. Pozwala to na koordynację z aktywnym systemem plików.

WAFL NetApp ma również narzędzie do sprawdzania on-line. Prawdopodobnie są inni.

Keith Smith
źródło
11

Uruchamianie fsck na partycji do odczytu i zapisu byłoby głupie, nawet z fsck w trybie tylko do odczytu. System plików zmieni się pod fsck, a dane w pamięci podręcznej, które fsck buforuje z systemu plików, staną się nieprawidłowe (i dlatego fsck zobaczy niespójność). Możesz uruchomić fsck na systemie plików montowanym tylko do odczytu w trybie tylko do odczytu i uzyskać prawidłowe wyniki. Uruchomienie fsck w trybie do odczytu / zapisu na zamontowanym systemie plików tylko do odczytu, jeśli fsck wprowadzi zmiany do systemu plików podczas jego uruchamiania, spowoduje, że jądro zobaczy nieoczekiwanie zmiany struktur systemu plików pod nim. To też byłoby złe.

Evan Anderson
źródło
Napisałeś: „Uruchomienie fsck w trybie odczytu / zapisu na zamontowanym systemie plików tylko do odczytu spowoduje, że jądro zobaczy pod nieoczekiwanymi zmianami struktury systemu plików”. Dlaczego struktury systemu plików zmieniają się w systemie plików montowanym tylko do odczytu?
guettli
Zgodnie z tą odpowiedzią, fsck na partycji tylko do odczytu jest w porządku, jeśli uruchomisz ponownie po
totach
@guettli - Odpowiedź, do której linkujesz, mówi to samo co ja. (Naprawiłem błąd pisowni, BTW. Dzięki!) Jeśli fsck wprowadza zmiany, podczas gdy jądro ma zamontowane w systemie plików dane buforowane tylko do odczytu w jądrze, mogą stać się nieprawidłowe w świetle zmian dokonanych przez fsck. Jasne, możesz później zrestartować komputer. Możesz także odkryć ekscytujący błąd jądra i spanikować jądro, zanim pojawi się szansa na ponowne uruchomienie.
Evan Anderson
9

Poza faktem, że prawdopodobnie zabiłoby to twoją przepustowość we / wy, jeśli system plików jest modyfikowany podczas fsckd, nie ma mowy, aby fsck mógł śledzić zmiany i zgłaszać niezgodności.

Niektóre systemy plików, takie jak XFS, pozwalają na sprawdzenie spójności, gdy system plików jest zamontowany do odczytu i zapisu, z zastrzeżeniem, że prawdopodobnie zostaną zgłoszone fałszywe błędy. xfs_checkzaleca odmontowanie systemu plików lub zamontowanie go w trybie tylko do odczytu przed wykonaniem sprawdzenia.

Kamil Kisiel
źródło
6

Cóż, celem fsck jest zgłaszanie niespójności systemu plików, czyli naruszonych niezmienników.

Jednak wiele z tych kontroli obejmuje więcej niż jedną strukturę FS. Jeśli ktoś modyfikuje FS (zapis danych), struktury te mogą być tymczasowo niezsynchronizowane. fsck uznałby to za niespójność, nawet jeśli tak naprawdę nie stanowi to problemu. fsck nie ma sposobu, aby stwierdzić, czy niespójność jest tylko tymczasowa, czy trwały problem, który wymaga naprawy. Więc to nie może działać (chyba, że ​​FS został zaprojektowany specjalnie, aby umożliwić sprawdzanie online. Niektórzy tak robią, ale ext3 nie).

Śleske
źródło
3

Cóż, możesz. fsck -n / dev / sda1 zrobi dokładnie to, przynajmniej na ext3. Właśnie to przetestowałem :)

Sven
źródło
-4

Możesz, tak jak możesz wsadzić rękę do ruchomego blendera i być może nie zranić się, lub tak samo, jak możesz zeskoczyć z wysokiego budynku, dążąc do małego stosu poduszek ułożonych na chodniku poniżej.

Ale dlaczego miałbyś nie sprawdzać własnej śmiertelności? Ponieważ twój szef z pewnością ponownie go przetestuje, gdy dowie się, DLACZEGO serwer pocztowy nie rozpoznaje teraz dysku głównego.

Zenham
źródło
Wydaje mi się, że lepszą analogią byłoby spojrzenie na ruchomy mikser lub rzut oka na krawędź wysokiego budynku. Tylko czytać.
Mike