ด้วยการรวมกันของdumpe2fs
และdebugfs
ซึ่งจะรวมอยู่ในแพคเกจพร้อมe2fsprogs
คุณต้องใช้เอาต์พุตของคำสั่งเป็นอาร์กิวเมนต์ของคำสั่งถัดไป
เครื่องมือเหล่านี้ตรวจจับขนาดบล็อกของระบบไฟล์โดยอัตโนมัติดังนั้นจึงมีความสอดคล้องและปลอดภัยกว่าการเรียกใช้โดยตรงfsck.ext*
badblocks
พิมพ์บล็อกที่ไม่ดีที่ลงทะเบียนของระบบไฟล์:
# dumpe2fs -b DEVNAME
พิมพ์ inodes ที่ใช้รายการบล็อกที่กำหนด:
# 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"