什么不需要碎片整理?Linux还是ext2 ext3 FS?


32

您为什么不必对Linux系统进行碎片整理?是因为它使用的是ext2 / ext3文件系统,还是因为是Linux?

这很重要,因为我有一个双启动系统(W7 / Ubuntu)和一个公共分区(NTFS),两个系统都可以访问该分区。如果我在Linux上使用此分区,它会变得碎片化吗?

另一个问题是Truecrypt容器。我也使用Linux和Windows访问它们,它们是FAT32。它们是否因在其上运行Linux而变得支离破碎?


2
其他答案很好,但是遗漏了一个重要的方面:所有文件系统:当磁盘空间不足时,ext2 / 3/4和NTFS将使文件碎片很多。如果要防止碎片,请不要使文件系统使用率超过90%。
Zan Lynx

1
如果您使用ext4,那么您会惊讶地看到e4defrag -v .在目录树中运行时会有多少碎片,特别是如果其中包含通过torrent客户端下载的文件(尽管某些文件确实使用fallocate/ posix_fallocate)。
rbrito

尽管该问题取决于个人意见,但我认为它更多地取决于实际情况。
朱莉·

Answers:


27

这是一篇关于如何极客 ext2 / ext3如何在磁盘上分配文件的文章。他们也有一篇文章问“ 您是否真的需要进行碎片整理?”


关于FAT为何变得零碎的原因:

“当您将文件保存到FAT文件系统时,[文件保存]尽可能靠近磁盘的开头。当您保存第二个文件时,[文件保存]紧接在第一个文件之后–依此类推当原始文件增大时,它们将始终变得碎片化。附近没有空间供它们增长。”
-如何极客

维基百科有大约FAT碎片的详细信息

关于EXT2,3,4如何分配文件:

“ ext2,ext3和ext4文件系统以更智能的方式分配文件。Linux文件系统没有将多个文件彼此靠近放置在硬盘上,而是将不同的文件散布在整个磁盘上,从而留下大量它们之间的自由空间。”
-如何极客

(以及有关ext3上的碎片整理的更多信息,来自Wikipedia

“现代Linux文件系统通过将文件中的所有块保持在一起而使碎片最小化,即使它们不能存储在连续的扇区中。某些文件系统(例如ext3)有效地分配了离其他块最近的空闲块块中的文件。因此不必担心Linux系统中的碎片。”
- TLDP


4
好答案!但是,您应该多添加一些内容。这个想法是,StackExchange的任何答案本身都应该足够。如果您的问题的链接断开了,您的答案将无济于事,因此您应该在帖子中给出足够的解释,然后提供链接以供进一步阅读。
lgeorget

1
谢谢@lgeorget-我用一些方向引号充实了答案,所以总有一些内容可以阅读“为什么”。感谢您的投入/建设性的批评!!
dougBTV

“将文件保存到FAT文件系统时,它会保存”。没道理 它是什么”?FAT是一种文件系统格式。它描述了您可以保存的位置,但并没有将您限制在一个位置。实际上,由操作系统决定。但是有许多不同的操作系统可以写入FAT,并且每个操作系统都有自己的决定。
MSalters

@MSalters-同意 我将编辑引用的部分,以消除这种模糊性。
dougBTV

只是现在才隐隐约约。该语句仍然是绝对的(保存“ FAT”的地方),而整个FAT规范都没有这样的说法。实际上,您引用的Wikipedia链接与之直接矛盾:它明确表示Windows选择第二个文件的位置,而不是直接在第一个文件之后。(“提前选择大的连续区域”)
MSalters 2014年

23

无论文件系统是什么,碎片始终是一个问题。但是,Ext3 / Ext2将问题最小化,以至于大多数管理员似乎都不必担心。通过使用功能强大的I / O调度程序以及文件系统在每个文件之后留下尾随空间来适应增长,可以将这种情况最小化。最重要的是,其他片段会更紧密地存储在一起,因此即使出现碎片,效果也会严重减弱。Ext4切换到范围也旨在进一步减轻碎片。

碎片仍然存在,ext2具有脱机碎片整理工具,ext4正在获得联机碎片整理,而btrfs(仅因为它与问题有关)已经具有联机碎片整理功能。如果您使用的是ext3,那么唯一的选择就是通过(转换为tune2fs)转换为ext4,或者尝试查看用户空间工具(如)的运气shake

根据您的文件系统所经历的I / O类型,即使处于静音状态也可能会引起关注,这就是为什么在线工具一开始被认为有用的原因。

对于FAT32的问题,仅在文件上操作时不会发生碎片,而在写入文件时会发生碎片。为了直接回答您的问题,碎片是文件系统设计的一个方面,因此FAT32文件系统在您向其中写入任何内容时都有可能产生碎片。


“通过使用合格的I / O调度程序,可以最大程度地减少这种情况”。这个短语有些不对劲。
Faheem Mitha 2014年

感谢您抓住这一点。我很难修改我的语言,而又不纠正该修改对段落句子整体语法造成的任何问题。
布拉奇利2014年

这是一个很好的答案。我会添加一些有关CoW的信息(写时复制)。fs是否碎片化与它有着密切的关系。
Martin Sugioarto

4

一一回答您的问题:

您为什么不必对Linux系统进行碎片整理?是因为它使用ext2 / ext3文件系统,还是因为Linux?

因为ext2 / 3/4对文件和文件夹有不同的处理方式,所以它们几乎不会碎片化。其他人已经对此做出了回答,您可以在此处阅读更多详细信息

这很重要,因为一个具有双启动系统(W7 / Ubuntu)和一个公共分区(NTFS),两个系统都可以访问该分区。如果我在Linux上使用此分区,它会变得碎片化吗?

是的,它可能会碎片化。Windows或Linux或其他任何东西都在访问它不是问题,这是每个文件系统如何处理文件大小,如何存储所有这些块,是否在每个文件之间留有空白...

另一个问题是Truecrypt容器。我也使用Linux和Windows访问它们,它们是FAT32。它们是否因在其上运行Linux而变得支离破碎?

对于所有实际问题,Truecrypt容器都是一个文件。使用TrueCrypt创建容器时,将创建所选大小的文件。对于您的操作系统,它就像其他任何文件一样。如果您制作它的副本,等等,也许这些副本最终可能会被零碎保存。

但是,请记住,同一容器具有多个副本永远都不是一件好事,这可能有助于降低其安全性。始终制作一个新容器。

当您在容器保存,删除,复制,移动等文件时,操作系统对此一无所知,这与打开,编辑和保存任何其他文件相同,而无需更改其大小。

并且,如果您担心truecrypt的碎片安全性,请对将truecrypt与SSD结合使用进行一些研究:由于SSD试图利用其中的所有内存,因此复制容器的效果可能相同。


3

最后,取决于操作系统中的文件系统驱动程序。

ext2和FAT文件系统都是记录磁盘上哪些块属于哪个文件的方法。当文件的并非所有块都连续时,该文件称为碎片。但显而易见的是,碎片是由写入文件时的块分配策略引起的,而不是由您记录这些块的方式引起的。

确实有所不同的是,文件系统驱动程序可以看起来有多远。如果驱动程序知道还有10个块要写入,它可以选择一个连续的空闲区域并避免将来出现碎片。这取决于特定于操作系统的驱动程序体系结构。但是可以在FAT和ext2上进行完全相同的可用空间搜索。

实际上,ext2和FAT并没有您想象的那么不同。我已经在现有的FAT代码之上编写了引导加载程序的ext2部分,这需要少于100行额外的代码。

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.