如何故意对文件进行碎片化

Fla*_*nfl 7 linux ext3

我正在寻找一种对现有文件进行分段的方法,以评估某些工具的性能。我找到了一个名为MyFragmenter 的NTFS 文件系统解决方案,如该线程中所述。但是我找不到 ext2/3/4 的任何东西......我可以开发自己的文件碎片,但由于时间限制,我想找到一个更快的解决方案。我发现了一些像HJ-Split这样的工具,它可以将文件分割成更小的位,但我怀疑这会模拟文件碎片。

他们对我的问题有什么解决方案吗?

Ale*_*ios 6

如果您想确保碎片化而不是阻止它(因此您只能部分控制发生的事情),并且您不关心碎片化的细节,那么这里有一种快速而肮脏的做事方式。

n在至少两个片段中创建块文件:

  1. 用同步写入打开文件,写入 m < n 个块。
  2. 打开另一个文件。添加它直到磁盘上最多有 n - m 个空闲块。不要误把它稀疏!
  3. 将剩余的 n - m 个块写入第一个文件。
  4. 关闭和unlink第二个文件。

您可以通过隔行扫描更多文件来分割成更多片段。

这假设文件系统可用于这种折磨,即不在多用户或关键任务环境中。它还假设文件系统没有保留块,或者保留块是为您的 UID 保留的,或者您是 root。

没有直接的方法来确保碎片化,因为 Unix 系统采用文件系统抽象,所以你永远不会与原始文件系统交谈。

此外,确保文件系统级别的碎片不会告诉您较低级别发生的情况。LVM、软件和硬件 RAID、硬件级扇区重映射和其他抽象层可能会破坏您的期望(和测量)。