如何损坏文件系统


8

我将在某些大型文件系统(大约50 TB)上测试“ xfs_repair”,因为过去内存使用率很高。虽然我只能在正确的文件系统上测试程序,但是在损坏的系统上测试它们会很好。

因此,破坏文件系统的最佳方法是什么。如果该方法每次都重复给出相同的损坏,则表示额外的信誉。

让人们了解我在2006年的意义ish

“要在多TB的文件系统上成功检查或运行修复,您需要:

  • 一台64位机器
  • 一个64位的xfs _修复/ xfs _检查二进制文件
  • 每TB文件系统约2GB RAM
  • 文件系统中每百万inode 100-200MB RAM。

xfs_repair通常使用的内存少于此数量,但是这些数字为您提供了一个修理数字,说明已修复80%以上的大型文件系统需要什么。

FWIW,上一次内部出现此问题时,有问题的29TB文件系统需要约75GB的RAM +交换来修复。”


有趣的问题,但是可以改进报价的格式吗?
合作社

如果是这样,我不知道该怎么办?
詹姆斯

尝试用`
Brad Gilbert

这是一个有趣的测试。我打算在任何地方发布结果吗?
3dinfluence

好吧,我可能会发布到xfs邮件列表,并且我总是可以用结果编辑该问题。
詹姆斯

Answers:


12

xfs_db有一个选项垃圾桶,

垃圾箱随机选择的文件系统元数据块。选定块中随机选择的位发生破坏。该命令仅在xfs_db的调试版本中可用。对于测试xfs_repair(8)和测试非常有用xfs_check(8)

例如

xfs_db -x -c blockget -c "blocktrash -s 512109 -n 1000" /dev/xfstest/testfs


2

dd阻止文件系统所在的设备。您可以对此编写脚本,以使其可重复。在随机位置仅几个随机块,然后继续前进。


在一个50TB的文件系统(几乎是空的)中,您肯定会很幸运地损坏系统?
詹姆斯

好吧,您只需要使用足够的随机块即可:-)。无论哪种方式,由于生日悖论,“碰撞”的可能性都可能比您想象的要大:en.wikipedia.org/wiki/Birthday_Paradox
sleske

0

您可以尝试覆盖块设备的前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修复。


我希望有一个相对较小的损坏,因为运行时和内存使用量取决于文件数和文件系统的大小
James

这只是512字节的损坏。这只是检查文件系统是否能够在没有任何有关文件系统外观的信息的情况下进行恢复-如果xfs尚未在某个地方存放一些备用超级块。
2009年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.