我将在一些大型文件系统(大约 50 TB)上测试“xfs_repair”,因为过去内存使用率很高。虽然我只能在正确的文件系统上测试该程序,但最好在损坏的系统上测试它们。
那么破坏文件系统的最佳方法是什么?如果该方法每次都重复导致相同的损坏,则可获得额外加分……
让人们了解我在 2006 年的意思
“要成功检查或修复多 TB 文件系统,您需要:
- 64位机器
- 64 位 xfs _ repair/xfs _ check 二进制文件
- 每 TB 文件系统约需 2GB RAM
- 文件系统中每百万 inode 需要 100-200MB 的 RAM。
xfs_repair 通常会使用比这更少的内存,但这些数字可以为您提供修复已满 80% 以上的大型文件系统所需的大致数字。
值得一提的是,上次内部出现此问题时,有问题的 29TB 文件系统需要大约 75GB 的 RAM+交换空间来修复。”
答案1
xfs_db 有一个选项 blocktrash,它
丢弃随机选择的文件系统元数据块。丢弃所选块中随机选择的位。此命令仅在 xfs_db 的调试版本中可用。它对于测试
xfs_repair(8)
和很有用xfs_check(8)
。
例如
xfs_db -x -c blockget -c "blocktrash -s 512109 -n 1000" /dev/xfstest/testfs
答案2
将块添加到文件系统所在的设备。您可以编写脚本,以便重复执行。只需在随机位置添加几个随机块,然后继续。
答案3
您可以尝试覆盖块设备的前 512 个字节(MBR 和分区表)。
首先备份:
dd if=/dev/device bs=512 count=1 of=backup.bin
稍后将其归零:
dd if=/dev/zero bs=512 count=1 of=/dev/device
此后您的机器将无法启动,您可以使用实时 CD 测试 XFS 修复。