dumpe2fs
এবং এর সংমিশ্রণ সহ debugfs
, যা e2fsprogs
প্যাকেজের পাশাপাশি অন্তর্ভুক্ত রয়েছে fsck.ext*
।
আপনাকে অবশ্যই পরবর্তী আদেশটির আর্গুমেন্ট হিসাবে একটি কমান্ডের আউটপুট ব্যবহার করতে হবে।
এই সরঞ্জামগুলি ফাইল সিস্টেমের ব্লক আকারটি স্বতঃ-সনাক্ত করে, তাই এটি সরাসরি badblocks
অনুরোধের চেয়ে সামঞ্জস্যপূর্ণ এবং নিরাপদ ।
ফাইল সিস্টেমের নিবন্ধিত খারাপ ব্লকগুলি মুদ্রণ করে:
# dumpe2fs -b DEVNAME
প্রদত্ত ব্লক তালিকাটি ব্যবহার করে এমন ইনোডগুলি মুদ্রণ করে:
# debugfs -R "icheck BLOCK ..." DEVNAME
প্রদত্ত ইনোড তালিকায় পাথের নামগুলি মুদ্রণ করে:
# debugfs -R "ncheck INODE ..." DEVNAME
debugfs
এছাড়াও একটি ইন্টারেক্টিভ শেল এবং -f cmd_file
বিকল্প রয়েছে, তবে তারা এই ক্ষেত্রে খুব শক্তিশালী বা দরকারী নয়।
-আর বিকল্পটি এর চেয়ে আরও বেশি স্বয়ংক্রিয় স্ক্রিপ্টগুলির অনুমতি দেয়:
#!/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"