一种对FAT文件系统进行碎片整理的聪明方法?


10

在运行Linux / Unix(例如,在USB记忆棒上)时,对FAT文件系统进行碎片整理的最佳方法是什么?


4
如果空间不是问题,我会选择您的第一选择。我会在循环安装的大文件中创建一个干净的文件系统。这样,您就有机会在覆盖记忆棒之前检查结果。
jippie

@jippie的建议也提供了备份。否则,我会去使用碎片整理实用程序,但首先要仔细检查它是否可靠,如果我对数据有任何附件,请事先进行备份。
vonbrand

@jippie:您的意思是创建一个与初始胖分区相同大小的循环文件,将其复制到所有文件,检查,然后dd到原始设备?您将需要额外的空间,而且我不明白仅将文件临时复制到本地ext文件系统会有什么好处。或者我想念一些东西。
马克·莫里斯

1
您可以在更改闪存驱动器内容之前检查结果。
jippie

Answers:


7

您可以使用该filefrag实用程序检查文件是否碎片。

这样,您可以筛选出没有碎片的文件,并仅对已经碎片的文件进行复制/复制。那应该节省您一些时间。但是请注意,不能保证新文件的布局会比旧文件好。

最好的方法是完全忽略文件碎片。尤其是在USB记忆棒上,这几乎没有关系,仅浪费了写入周期,而且与HDD不同,它没有可移动的部件,因此不会因碎片而造成太大的损失。

仅当发生一些有趣的事情导致文件以非常极端的方式碎片时,才需要进行碎片整理。例如,洪流客户端以随机顺序下载文件内容而无需预先分配。但是除非FAT在某个时候开始支持稀疏文件,否则根本就不是问题,因为在这样的FS上必须进行预分配。


1
感谢您的回答。实际上,我需要一种对FAT文件系统进行完全碎片整理的方法,因为我使用的是Easy2boot,并且每个iso文件都不能碎片化。
Marc MAURICE

在我看来,这是一种过时的方法。GRUB2 isoloop非常流行,因此许多发行版都支持从任何地方循环安装iso。不能的话,可能是它直接在分区上工作,但也可能失败。完全取决于ISO本身。
弗罗斯特斯

2
GRUB2 isoloop的缺点是它将直接在ISO中加载Linux内核。您必须知道要加载的内核/ initrd的路径,并且您将失去提供自定义引导选项的ISOLINUX菜单。
Marc MAURICE

找到路径并不难,其余的取决于您要付出多少努力才能将isolinux菜单项转换为grub2子菜单...但是,是的,所有解决方案都有其缺点。我刚刚测试了我的ISO分区-没有文件是完整的。然后一一复制。修复该问题对我来说将是一个巨大的痛苦,因此我宁愿放弃不支持isoloop安装的ISO。
frostschutz

我本人从未使用过easy2boot,但是由于此解决方案涉及分区的创建,因此您不能一开始就这样做-每个ISO和dd一个分区。这样就不可能产生碎片。或者,如果可能的话,也可以选择无碎片文件系统(ISO是否在ISO内?)
frostschutz

0

让我们从另一个角度来看这个问题,因为您举了一个例子“例如在usb上”

坏例子

USB记忆棒是FLASH存储器,需要考虑两件事:1)由于FLASH存储器没有活动部件,因此进行碎片整理不会显着提高性能。Defrgs用于清理文件系统或重组文件块以使它们彼此靠近-减少臂的物理移动(搜索)和光盘旋转的等待时间(等待时间)。Flash没有此功能。2)写入以及在闪存上进行写入会消耗掉它。现在,对于100K的写续航能力,您的USB记忆棒可能会持续数年至10年,但是您可以写的次数是一个“有限的”数字。由于耐久性的限制,对USB记忆棒进行持续的碎片整理会耗尽您的生命。

这不仅仅是您的USB记忆棒,SD卡,紧凑型闪存甚至SSD驱动器。

我的观点是,不要仅仅对磁盘碎片整理,要了解文件系统下的底层技术及其含义,即使它是磁性的而不是电子的,但过多的磁盘碎片整理最终可能会损坏您的文件系统,从而使您松散您的文件。

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.