Answers:
现代文件系统,特别是那些设计成在多用户和/或多任务用例中有效的文件系统,做了很好的工作,不会碎片化数据,直到文件系统接近满(没有确切的数字显示“近满”的位置)。标记是因为它取决于文件系统的大小,文件大小的分布以及您的访问模式是什么(通常引用介于85%和95%之间的数字)或文件创建和写入的模式不正常,或者文件系统是很老,所以看到了很多“动作”。这包括ext2 / 3/4,reiser,btrfs,NTFS,ZFS等。
尽管目前还没有计划在ext4上线,但目前尚无内核/文件系统级方法对ext3或4进行碎片整理(有关更多信息,请参见http://en.wikipedia.org/wiki/Ext3#Defragmentation)碎片整理。
有用户界面工具(例如http://vleu.net/shake/以及该Wikipedia文章中列出的其他文件),它们尝试通过复制/重写来对单个文件或文件集进行碎片整理-如果有足够大的可用空间块,通常会导致该文件被赋予连续块。但是,这绝不能保证文件彼此靠近,因此,如果对一对大文件进行摇动,您会发现这两个文件本身会进行碎片整理,但在磁盘上彼此之间不会靠近。在多用户文件系统中,文件彼此之间的位置通常并不重要(当然,不重要的是文件本身的碎片化程度),因为驱动器磁头正在各处翻转以为不同的用户提供服务。
如果您的文件系统随着时间的推移变得碎片化严重,并且当前具有相当大的可用空间,那么shake
在其所有文件上运行类似内容可能会达到您想要的效果。另一种方法是将所有数据复制到新文件系统,删除原始文件,然后再次将其复制回。这以几乎相同的方式提供帮助,shake
但对于大量数据可能更快。
对于少量碎片,请不要担心。我知道在正常操作的多个生命周期中,花更多时间坐在碎片整理进度栏上的人比他们节省的时间(由于磁盘访问效率更高)所节省的时间多!
ureadahead
,就像最近的Ubuntu版本默认情况下一样(有关更多信息,请参见ubuntuforums.org/showthread.php?t=1434502),以达到类似的效果。如果您的disro的启动设置支持此操作(在Debian上的/ etc / defaults / rc中设置CONCURRENCY = shell)和类似的调整,可以通过要求它在可能的情况下同时启动服务来减少Linux启动顺序中的某些延迟。要检查您对所做的更改是否有所不同,请使用bootchart.org来显示在进行调整之前和之后进行的调整。
e2defrag
并进行了尝试以实现这种包装。您可以在launchpad.net/e2defrag上找到它。
/etc/defaults/rc
,但确实有/etc/default/rcS
在Debian 6
e2defrag
现在是否比更好地支持Ext3 shake
?