Mam pytanie dotyczące nieodwracalnych błędów w systemie plików BTRFS. W szczególności niedawno uruchomiłem Scrub BTRFS po napotkaniu problemu z jednym z moich drążków pamięci RAM i wydaje się, że odkryłem 4 błędy, których nie da się naprawić. To jest wynik:
scrub status for <UUID>
scrub started at Thu Dec 25 15:19:22 2014 and was aborted after 89882 seconds
total bytes scrubbed: 1.87TiB with 4 errors
error details: csum=4
corrected errors: 0, uncorrectable errors: 4, unverified errors: 0
Na szczęście mam kopię zapasową wszystkiego w trzeciorzędnej kopii zapasowej, więc nie martwię się szczególnie o utratę plików (jestem świadomy problemów związanych z eksperymentalnym statusem BTRFS, mam wiele kopii zapasowych, aby zapewnić bezpieczeństwo moich danych, i postanowiłem nadal go używaj, więc nie: „Rozwiązanie; nie używaj postów BTRFS”).
Chciałbym jednak wiedzieć, jak ustalić, które pliki są powiązane z błędami, których nie można naprawić? Chcę je znaleźć, usunąć i zastąpić ich kopiami zapasowymi.
Jeśli ktoś ma informacje, jak to zrobić, chciałbym usłyszeć od ciebie.
Z góry dziękuję.
źródło
sort | uniq
aby pozbyć się duplikatów, tak:dmesg | grep "checksum error at" | cut -d\ -f24- | sed 's/.$//' | sort | uniq
Tak, mapowanie z INODE lub numeru bloku z powrotem na nazwę pliku może być trudne. Jeśli jesteś naprawdę zainteresowany, możesz wypróbować coś takiego i zobaczyć, które pliki należy skopiować ... mimo wszystko, jeśli plik jest zły, powinien zgłosić błąd podczas kopiowania. Wcześniej użyłem tego typu techniki.
źródło
cp -v
, można również monitorować postęp:find / -type f -exec cp -v {} /dev/null \; 2> corrupted-files.txt
. Jednak/proc/kcore
plik może być ogromny (mój miał 128 TB), więc operacja kopiowania prawdopodobnie się zawiesi. Ponieważ/proc
katalog zawiera specjalne magiczne pliki, nie musimy ich sprawdzać. Wyklucz/proc
katalog:sudo find / -type f -and -not -path /proc -exec cp -v {} /dev/null \; 2> corrupted-files.txt
dmesg
poda szczegółowe informacje na temat plików związanych z błędami sumy kontrolnej, których nie można naprawić. Komunikaty zwykle wyglądają następująco: „BTRFS: błąd sumy kontrolnej przy logicznym [...] w dev [...], sektorze [...], root [...], i-węzle [...], offset [ ...], długość [...], linki [...] (ścieżka: [...]) "; ostatnia informacja to bezwzględna ścieżka do uszkodzonego pliku.źródło
Przybyłem tutaj, szukając „błędu niemożliwego do naprawienia” z BTRFS. Powyższy grep nie działał dla mnie; Musiałem zamiast tego użyć:
Zwróć uwagę, w jaki sposób ścieżka jest zależna od początku podobjętości - brak wskazania, która podobjętość jest w środku. Na szczęście nie stanowiło to dla mnie problemu.
źródło
somepath/somefile.txt
? Wygląda na to, że wpisujesz je jako osobne polecenie - czy jest to wynik działania wpisanego polecenia? Jeśli to wszystko ma być jednym wierszem poleceń, nie rozbijaj wierszy poleceń dla celów wyświetlania - po prostu umieść go w odpowiedzi jako jedną długą linię. Ale co to jest? Czy udostępniasz dwa dane wejściowesort
(potok i plik)? Czy masomepath/somefile.txt
to być plik wyjściowy? (Określanie plików wyjściowych nie jest zbyt pomocne, chyba że są to pliki pośrednie, których używasz ponownie. Ludzie wiedzą, jak radzić sobie z wynikami; np. Za pomocą pipingu.)