Znajdź, na które pliki mają wpływ uszkodzone bloki w systemie plików ext4
13
Mam system plików ext4, który niedawno rozwinął niektóre uszkodzone sektory. Uruchamianie fsck.ext4 -cznajduje i zapamiętuje złe bloki. Jak mogę znaleźć, które pliki (jeśli w ogóle) zawierały te uszkodzone bloki, aby móc je przywrócić z kopii zapasowych?
podczas gdy interakcyjnie naprawiałem go za pomocą fsck, pokazywałem, które pliki mają problemy; ale jeśli jest ich zbyt wiele, lepiej odpowiedzieć @Nethox.
Z kombinacją dumpe2fsi debugfs, które są zawarte w e2fsprogspakiecie wraz z fsck.ext*.
Musisz użyć wyniku polecenia jako argumentu następnego.
Narzędzia te automatycznie wykrywają rozmiar bloku systemu plików, dzięki czemu jest spójny i bezpieczniejszy niż bezpośrednie badblockswywołanie.
Drukuje zarejestrowane uszkodzone bloki systemu plików:
# dumpe2fs -b DEVNAME
Wyświetla i-węzły korzystające z podanej listy bloków:
# debugfs -R "icheck BLOCK ..." DEVNAME
Wyświetla nazwy ścieżek na podanej liście i-węzłów:
# debugfs -R "ncheck INODE ..." DEVNAME
debugfsma również interaktywną powłokę i -f cmd_fileopcję, ale nie są one zbyt mocne ani przydatne w tym przypadku.
Opcja -R pozwala na bardziej zautomatyzowane skrypty takie jak to:
#!/bin/sh# Finds files affected by bad blocks on ext* filesystems.# Valid only for ext* filesystems with bad blocks registered with# fsck -c [-c] [-k] or -l|-L options.# Can be extremely slow on damaged storage (not just a corrupt filesystem).
DEVNAME="$1"[-b "$DEVNAME"]|| exit 1
BADBLOCKS="$(dumpe2fs -b "$DEVNAME" | tr '\n' ' ')"[-n "$BADBLOCKS"]|| exit 0
INODES="$(debugfs -R "icheck $BADBLOCKS" "$DEVNAME" | awk -F'\t' '
NR > 1 { bad_inodes[$2]++; }
END {
for (inode in bad_inodes) {
if (inode == "<block not found>") {
printf("%d unallocated bad blocks\n", bad_inodes[inode]) > "/dev/stderr";
continue;
}
printf inode OFS;
}
}
')"[-n "$INODES"]|| exit 0
debugfs -R "ncheck -c $INODES""$DEVNAME"
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.