Odpowiadam na to w ogólnym kontekście „rejestrowanych systemów plików”.
Myślę, że jeśli nie kilka postojów „nieczystych” (przez ciągnięcie za przewód zasilający lub coś ) prędzej czy później można dostać się do stanu systemu plików, które wymagałyby fsck
lub moralny odpowiednik fsck, xfs_repair
. ext4
Fileystsm na moim laptopie w większości przypadków po prostu odtwarza dziennik na każdym restarcie, czyste postoje w cenie, ale raz na jakiś czas, to jednak w pełni na fsck
.
Ale zadaj sobie pytanie, co osiąga „odtworzenie dziennika”. Ponowne odtworzenie dziennika tylko zapewnia, że bloki dyskowe reszty systemu plików są zgodne z kolejnością wymaganą przez wpisy dziennika. Ponowne odtworzenie dziennika jest małe fsck
lub pełne fsck
.
Wydaje mi się, że trwa słowna sztuczka: odtwarzanie dziennika jest częścią tego, co tradycyjne fsck
, i xfs_repair
jest dokładnie tym samym rodzajem programu, jakim jest e2fs.fsck
(lub jakikolwiek inny system plików fsck
). Ludzie XFS po prostu uwierzyli lub ich doświadczenie sprawiło, że nie uruchamiali się xfs_repair
przy każdym uruchomieniu, tylko odtwarzali dziennik.
fsck
wynika , że automatyka nie jest „pedantyczna”. Przekształciłemext3
LVM
partycjęext4
i zacząłem otrzymywać błędy „ext4_mb_generate_buddy” z powodu, jak rozumiem, błędu wext4
kodzie, który spowodował niedopasowanie kopii bitmapy na dysku i w pamięci na przekonwertowanych partycjach „LVM”. O ile wiemfsck
, nie doszło do korupcji. Rozwiązaniem było albo wyłączenieUNINIT_BG
opcji, albo przeniesienie danych i ponowne zainicjowanie partycji jakoext4
; Wybrałem ten drugi kurs. Ale nadal uważam, że kilka minut oczekiwania na niefsck
jest warte utraty danych!Pierwszą rzeczą godną uwagi jest to, że XFS, reiser i większość konfiguracji ext wdrażają tylko rejestrowanie metadanych, co polega na unikaniu fsck. Dziennik nie zawsze jest odtwarzany przy uruchamianiu - może zostać odrzucony, jeśli jest niekompletny.
Istnieją systemy, które obsługują pełną rejestrację danych - ale w praktyce poziom pewności, jaki dają one w przypadku rejestrowania tylko metadanych, jest bardzo niski w rzeczywistych scenariuszach.
Tak więc „niespójny stan” i problemy naprawione przez fsck, są rozbieżnościami między metadanymi i samymi plikami. Aby tego uniknąć, system operacyjny zapisuje proponowane zmiany metadanych w dzienniku, a następnie zapisuje rzeczywiste dane na dysku, a następnie stosuje zmiany metadanych, które są replikowane w dzienniku na dysk. Jedynym problemem jest to, że kontroler dysku buforuje i potencjalnie zmienia kolejność żądań. Aby tego uniknąć, większość systemów plików kronikowania implementuje bariery: oddzielają każdą operację i czekają, aż dysk potwierdzi, że operacja została zakończona. Ale wiele współczesnych dysków faktycznie potwierdza zakończenie zapisu przed zatwierdzeniem danych. W związku z tym sprawy mogą się popsuć.
Większość systemów plików utrzymuje liczbę podłączeń - po osiągnięciu tego licznika zostanie uruchomione pełne polecenie fsck przy kolejnej próbie zamontowania dysku. Powodem jest to, że dane na dysku mogą być uszkodzone, nawet jeśli nie są jawnie zapisywane, nawet bez błędów w oprogramowaniu. powyższy komentarz psusi jest błędny.
źródło
hdparm -W
), dysk nie zakończy żądań zapisu, dopóki nie znajdzie się na nośniku. Jak myślisz, dlaczego ta opcja istnieje? Bariery uniemożliwiają zmianę kolejności w przypadku wydania wielu żądań. Bez barier fs po prostu nie wysyła więcej żądań, dopóki poprzednie nie zostaną zakończone, utrzymując w ten sposób porządkowanie bez barier ... pod warunkiem, że pamięć podręczna zapisu dysku nie jest włączona. Celem barier jest umożliwienie włączenia pamięci podręcznej zapisu bez uszkadzania FS podczas awarii.sync
. Pozwól mi spróbować jeszcze raz. Procedura zapisu na dysk bez barier polega na zapisaniu do dziennikasync
, a więc opróżnieniu pamięci podręcznej zapisu, a następnie zapisaniu rzeczywistych danych. Dzięki temu dziennik zawsze może zostać użyty do odzyskania fs po awarii, ale synchronizacja spowalnia rzeczy, a połowa pokonuje cel pamięci podręcznej zapisu. W ten sposób bariery zostały dodane jako lepsze zamiennikisync
, a przy odpowiedniej obsłudze dysków mogą bezpiecznie odzyskać znaczną część wydajności, którą zabiera synchronizacja.Nie ma potrzeby fsck systemu plików kronikowania tylko z powodu nieczystego zamknięcia.
Cała przyczyna trwałej karę wydajność runtime księgowaniem metadanych jest zapewnienie, że system plików może być wykonana w 100% spójne ponownie automatycznie odtwarzanie dziennik metadanych na następny zamontować, jeśli system plików nie był czysto nieoprawione.
Jedyną rolą fsck jest zapewnienie spójności metadanych, więc uruchamianie fsck jest zbędne, ponieważ system plików nie został poprawnie odmontowany.
System plików kronikowania może ulec uszkodzeniu z innych powodów - awarii sprzętu, błędów sterownika, błędów administracyjnych itp. - więc narzędzia fsck są z pewnością niezbędne. Po prostu nie ma powodu, aby je wywoływać wyłącznie z powodu nieczystego zamknięcia.
źródło