Знайдіть, на які файли впливають погані блоки файлової системи ext4


13

У мене є файлова система ext4, яка нещодавно розробила деякі погані сектори. Біг fsck.ext4 -cзнаходить і запам'ятовує погані блоки. Як я можу знайти, які файли (якщо такі є) включали ці погані блоки, щоб я міг відновити їх із резервних копій?

linux  ext4 

поки я інтерактивно виправляв це за допомогою fsck, він показав, які файли мали проблеми; але, якщо їх занадто багато, краще, що відповів @Nethox.
Сила Водолія

Відповіді:


11

За допомогою комбінації dumpe2fsта debugfs, які входять в e2fsprogsкомплект разом fsck.ext*.
Ви повинні використовувати вихід команди як аргумент наступної.
Ці інструменти автоматично визначають розмір блоку файлової системи, тому він є послідовним і безпечнішим, ніж пряме badblocksвиклик.

Друкує зареєстровані погані блоки файлової системи:

# dumpe2fs -b DEVNAME

Друкує вставки, які використовують даний список блоків:

# debugfs -R "icheck BLOCK ..." DEVNAME

Друкує імена шляхів до даного списку inode:

# debugfs -R "ncheck INODE ..." DEVNAME

debugfsтакож є інтерактивна оболонка та -f cmd_fileопція, але вони не дуже потужні чи корисні для даного випадку.
Опція -R дозволяє більш автоматизовані сценарії, подібні до цього:

#!/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"

просто зазначити, що налагодження помилок у дуже великій файловій системі може зайняти багато часу, перш ніж щось показати
Power Aquarius Power
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.