Naprawa systemu XFS

Naprawa systemu XFS
Systemy plików są zbudowane na urządzeniach pamięci masowej. Istnieją kontrolery rajdowe i kontrolery dyskowe, z których każdy działa własny kawałek oprogramowania układowego. Istnieją buformy, aby poprawić wydajność. Istnieją dyski o różnych rozmiarach sektorów i są dyski, które zgłaszałyby inny rozmiar sektora w zależności od tego, jak zadasz pytanie.

Przy tak wielu różnych częściach, które stanowią typowy stos do przechowywania, jest cudem, że wszystko w ogóle działa. Jednak przez większość czasu sprawy działają dobrze. Kilka razy, gdy coś pójdzie nie tak, potrzebujemy narzędzi takich jak XFS_REPAIR, aby wyciągnąć nas z bałaganu.

Rzeczy mogą pójść nie tak, gdy piszesz plik, a zasilanie wychodzi lub jest panika jądra. Nawet dane siedzące uśpione na dysku mogą z czasem rozpadać się z powodu fizycznej struktury elementów pamięci, jest to znane jako rot bit. We wszystkich przypadkach potrzebujemy mechanizmu:

  1. Sprawdzanie odczytanych danych to te same dane, które zostały ostatnio napisane. Jest to zaimplementowane przez posiadanie suma kontrolnego dla każdego bloku danych i porównanie sumy kontrolnej dla tego bloku podczas odczytu danych. Jeśli suma kontrolna pasuje, dane nie zostały zmienione
  2. Sposób na zrekonstruowanie skorumpowanych lub utraconych danych, z bloku lustrzanego lub z bloku parzystości.

Konfiguracja piaskownicy

Skonfigurujmy testBench do uruchomienia procedury naprawy XFS zamiast używania rzeczywistych dysków z cennymi danymi. Jeśli masz już zepsuty system plików, możesz pominąć tę sekcję i przeskakiwać prawą głowę do następnego. Ten test testowy składa się z maszyny wirtualnej Ubuntu, do której podłącza się dysk wirtualny, zapewniając surową pamięć. Możesz użyć VirtualBox do utworzenia maszyny wirtualnej, a następnie utworzyć dodatkowy dysk do przymocowania do maszyny wirtualnej.

Po prostu przejdź do ustawień maszyn wirtualnych i poniżej Ustawienia → Przechowywanie Sekcja Możesz dodać nowy dysk do kontrolera SATA, możesz utworzyć nowy dysk. Jak pokazano poniżej, ale upewnij się, że maszyna wirtualna jest wyłączona, kiedy to zrobisz.

Po utworzeniu nowego dysku włącz maszynę wirtualną i otwórz terminal. Komenda lsblk wymienia wszystkie dostępne urządzenia blokowe.

$ lsblk
SDA 8: 0 0 60G 0 Dysk
├tsda1 8: 1 0 1m 0 część
└tsda2 8: 2 0 60g 0 część /
SDB 8:16 0 100G 0 Dysk
sr0 11: 0 1 1024m 0 rom

Oprócz głównego urządzenia blokowego SDA, Tam, gdzie system operacyjny jest zainstalowany, jest teraz nowe urządzenie SDB. Szybko utwórzmy z niego partycję i sformatuj ją za pomocą systemu plików XFS.

Otwórz rozstanie narzędzie jako użytkownik root:

$ rozstał -a optymalny /dev /sdb

Utwórzmy najpierw tabelę partycji za pomocą MKLABEL, po tym następuje utworzenie pojedynczej partycji z całego dysku (który ma rozmiar 107 GB). Możesz sprawdzić, czy partycja jest tworzona, wymieniając ją za pomocą polecenia drukuj:

(rozdzielny) MKLABEL GPT
(rozdzielny) Mkpart Primary 0 107
(rozdzielenie) wydruku
(rozdzielił się) zrezygnować

Okej, teraz widzimy za pomocą LSBLK, że pod urządzeniem SDB znajduje się nowe urządzenie blokowe o nazwie SDB1.

Sformatujmy tę pamięć jako XFS i zamontuj go w katalogu /mnt. Ponownie wykonaj następujące działania jako root:

$ mkfs.xfs /dev /sdb1
$ Mount /dev /sdb1 /mnt
$ df -h

Ostatnie polecenie wydrukuje wszystkie zamontowane systemy plików i możesz sprawdzić, czy /dev /sdb1 jest zamontowany na /mnt.

Następnie piszemy wiązkę plików jako manekin do defragmentacji tutaj:

$ dd if =/dev/urandom o =/mnt/myfile.liczba txt = 1024 BS = 1024

Powyższe polecenie zapisałoby plik myfile.TXT o rozmiarze 1 MB. Jeśli chcesz, możesz automatycznie generować więcej takich plików, rozłóż je na różnych katalogach w systemie plików XFS (zamontowany w /mnt), a następnie sprawdzić fragmentację. Użyj do tego Bash lub Python lub dowolnego innego z ulubionego języka scenariuszy.

Sprawdzanie i naprawianie błędów

Korupcje danych mogą cicho wkraczać się do twoich dysków bez twojej wiedzy. Jeśli blok danych nie jest odczytany, a suma kontrolna nie jest porównywana, błąd może po prostu pojawić się w niewłaściwym czasie. Kiedy ktoś próbuje uzyskać dostęp do danych, w czasie rzeczywistym. Zamiast tego dobrym pomysłem jest przeprowadzenie dokładnego skanowania wszystkich bloków danych w celu często sprawdzania zgnilizny lub innych błędów.

Narzędzie xfs_scrub ma wykonać to zadanie dla twojego. Ta funkcja eksperymentalna zainspirowana częściowo przez polecenie szorowania OpenZFS jest dostępna tylko na XFSProgs w wersji 4.15.1-1ubuntu1, który nie jest stabilnym wydaniem. Jeśli błędnie wykrywa błąd, może wprowadzić cię w błąd do spowodowania uszkodzenia danych zamiast go naprawić! Jeśli jednak chcesz z nim eksperymentować, możesz użyć go na zamontowanym systemie plików za pomocą polecenia:

$ xfs_scrub /dev /sdb1

Przed próbą naprawy uszkodzonego systemu plików, najpierw będziesz musiał go rozwiązać. Ma to na celu powstrzymanie aplikacji przed nieumyślnym pisaniem do systemu plików, gdy powinien być pozostawiony sam.

$ umount /dev /sdb1

Błędy naprawcze jest tak proste, jak bieganie:

$ xfs_repair /dev /sdb1

Niezbędne metadane są zawsze przechowywane jako wiele kopii, nawet jeśli nie używasz RAID, a jeśli coś poszło nie tak z superblock lub inodes, to polecenie może rozwiązać ten problem dla Ciebie.

Następne kroki

Jeśli często widzisz uszkodzenie danych (lub nawet raz, jeśli uruchamiasz coś krytycznego misji) Zastanów się nad zastąpieniem swoich dysków, ponieważ może to być wczesny wskaźnik dysku, który wkrótce umrze.

Jeśli kontroler się nie powiedzie lub karta RAID zrezygnowała z życia, żadne oprogramowanie na świecie nie może naprawić systemu plików. Nie chcesz kosztownych rachunków za odzyskiwanie danych i nie chcesz długi!