Kiedy fsck jest niebezpieczny?

37

Ostatnio widziałem, jak główny system plików maszyny w zdalnym centrum danych został ponownie zamontowany w trybie tylko do odczytu, w wyniku problemów ze spójnością.

Podczas ponownego uruchamiania ten błąd był wyświetlany:

UNEXPECTED INCONSISTENCY: RUN fsck MANUALLY (i.e., without -a or -p options)

Po uruchomieniu fsck zgodnie z sugestią i ręcznym zaakceptowaniu poprawek Ybłędy zostały skorygowane i system jest już w porządku.

Teraz myślę, że byłoby interesujące, gdyby fsck został skonfigurowany do automatycznego uruchamiania i naprawy wszystkiego, ponieważ jedyną alternatywą w niektórych przypadkach (jak ta) jest osobiste przejście do zdalnego centrum danych i podłączenie konsoli do komputera, którego dotyczy problem.

Moje pytanie brzmi: dlaczego fsck domyślnie prosi o ręczną interwencję? Jak i kiedy korekta wykonana przez taki program byłaby niebezpieczna? W jakich przypadkach administrator systemu może chcieć odłożyć na bok sugerowaną korektę (w celu wykonania innych operacji) lub całkowicie ją przerwać?

scristalli
źródło
15
Jeśli programiści byliby w 100% pewni, że błąd można naprawić automatycznie, to nie byłby to błąd.
user253751

Odpowiedzi:

42

fsckzdecydowanie wyrządza więcej szkody niż pożytku, jeśli podstawowy sprzęt zostanie w jakiś sposób uszkodzony; zły procesor, zła pamięć RAM, konający dysk twardy, zepsuty kontroler dysku ... w takich przypadkach nieuniknione jest dalsze uszkodzenie.

W razie wątpliwości dobrym pomysłem jest zrobienie zdjęcia uszkodzonego dysku za pomocą dd_rescuelub innego narzędzia, a następnie sprawdzenie, czy uda się naprawić ten obraz. W ten sposób nadal masz dostęp do oryginalnej konfiguracji.

Janne Pikkarainen
źródło
4
Dużo pracowałem z niesprawnym sprzętem i zgadzam się z tym. Ostatnią rzeczą, którą chcę zrobić, jest fsck, jeśli istnieje podejrzenie złego sprzętu. Widziałem także zdarzenie niskiej mocy i późniejsze odzyskiwanie, które zostało znacznie opóźnione przez automatyczny fsck.
jorfus
Podając konkretny przykład: pracowałem na maszynie z kontrolerem dysku, który „losowo” (około 1 raz na 10 ^ 5) zamieniłby odczyt lub zapis w bloku XXXXXXYY na dowolnym urządzeniu w zapis w bloku 000000YY na pierwsze urządzenie. Tzn. Często wysyłał niewłaściwe i nieustrukturyzowane niewłaściwe dane do sektora rozruchowego i różnych krytycznych struktur systemu plików dysku rozruchowego. Uruchomienie fsck w takiej sytuacji (miliony odczytów) może wyeliminować pozostałą szansę na odzyskanie danych.
Eric Towers
2
1 na 10 ^ 5 to dużo ... to zawsze 10 bajtów Mb.
Nelson
1
@Nelson: To rodzaj… Jednostka ma „transfer pojedynczego bloku”, a nie „bajty”. Zatem dziesięć złych zapisów bloków na milion bloków (a bloki są znacznie większe niż bajty).
Eric Towers
21

Widziałeś jeden przykład, w którym fsckdziałało, ale widziałem więcej niż wystarczająco uszkodzonych systemów plików, w których w ogóle nie działało pomyślnie. Jeśli zadziała w pełni automatycznie, możesz nie mieć szansy na zrobienie czegoś takiego jak ddzrzut dysku lub coś takiego, co w wielu przypadkach byłoby doskonałym pomysłem na zrobienie przed próbą naprawy.

To nigdy, przenigdy nie jest dobry pomysł, aby spróbować coś takiego automatycznego wcale.

Aha, a nowoczesne serwery powinny mieć zdalne konsole lub przynajmniej niezależne systemy ratunkowe, aby odzyskać z czegoś takiego bez konieczności podłączania szafy KVM do serwera.

Sven
źródło
7
W rzeczywistości nie jest dobrym pomysłem na powiedzenie „ nigdy, nigdy ”, gdy nie jest to prawdą. Przypadek użycia, w którym jest to dobry pomysł: główne partycje serwera mogą zostać odtworzone od zera dość szybko, w przypadku problemów. Właściwie ważne dane są uzyskiwane za pośrednictwem zdalnego systemu plików, z odpowiednią nadmiarowością dla tych danych. Wolę zaryzykować fsck -p /i fsck -p /varitp. Działać dobrze, i uruchomić serwer bez ręcznej interwencji, i ryzykować małą, niezerową% szansę poważnej katastrofy na te partycje, które mogę po prostu odtworzyć w razie potrzeby .
TOOGAM
1
Jeśli system można łatwo zainstalować ponownie, po prostu to robię ...
Sven
1
To potrwa dłużej. Dostępne opcje to: A) Ryzyko robienia tego automatycznie. B) Poproś kogoś, fsckżeby powiedział , a potem wszystko działa dobrze. Jeśli to zajmie około 2 minut. Przestoje, dopóki tak się nie stanie. C) Niech ktoś ponownie zainstaluje system operacyjny. Trwa ponad 30 minut. Wybrałeś opcję C? Być może kluczową różnicą jest to, że miałem fsckwiększą część czasu pracy niż to, co podałeś w swojej odpowiedzi. Moim głównym celem nie była konstrukcja systemu (ten tani system nie korzysta ze zdalnej konsoli), ale tylko to powiedzenie „ nigdy, nigdy ” było zbyt mocnym frazą, aby być dokładnym
TOOGAM
Po prostu zgódźmy się nie zgodzić.
Sven
0

Przede wszystkim musisz zrozumieć, że w nowoczesnych (dziennikowanych) systemach plików, awaria systemu nie uszkodzi systemu plików i podczas uruchamiania nie będzie wymagany fsck.

Ext3, Ext4, ZFS, btrfs, xfs i wszystkie współczesne FS są w 100% spójne po awarii lub resecie systemu.

Nieopublikowane FS, takie jak ext2 lub vfat, są dużym NOGO dla rootfów systemowych.

Teraz, jeśli twój system wymaga fsck podczas startu systemu, powinieneś zadać sobie pytanie: jaki był tego powód?

Powinieneś sprawdzić swoje dzienniki jądra, aby dowiedzieć się, kiedy i co się stało. Powinieneś również cofnąć się w czasie w dziennikach, aby znaleźć, odkąd błąd się zaczął. Powinieneś sprawdzić dyski za pomocą smartctl. Itd ... Jeśli potrzebujesz fsck na opublikowanym fs, jest praktycznie pewne, że twój sprzęt zawiedzie, zakładając, że fs nie został uszkodzony przez administratora (z narzędziami na poziomie bloku jak dd) lub przez błąd.

Dlatego niemądrze jest używać fsck do „naprawienia” problemu bez badania i naprawiania podstawowej przyczyny (poprzez wymianę / aktualizację wadliwego sprzętu / oprogramowania / oprogramowania).

Wykonanie fsck, ukończenie rozruchu i bycie szczęśliwym jest co najmniej naiwnością. Stwierdzenie „Miałem pracę fsck większą część czasu niż to, co zacytowałeś” powoduje, że zastanawiam się, co masz na myśli przez „fsck work”. fsck mógł przywrócić twój fs do spójnego stanu przez utratę niektórych plików i danych w tym procesie ... Czy porównałeś z kopią zapasową? Wiele osób traci pliki lub ulega uszkodzeniu, nie zauważając ...

Francois Scheurer
źródło