为什么不需要对 Linux 系统进行碎片整理?因为它使用的是 ext2/ext3 文件系统,还是因为它是 Linux?
这是相关的,因为我有一个双引导系统(W7 / Ubuntu)和一个可以被两个系统访问的公共分区(NTFS)。如果我在 Linux 上使用这个分区,它会变得碎片吗?
另一个问题是 Truecrypt 容器。我也使用 Linux 和 Windows 访问它们,它们是 FAT32。它们会因 Linux 在其上运行而产生碎片吗?
答案1
这是一篇关于如何极客关于ext2/ext3如何在磁盘上分配文件。他们还有一篇文章询问“你真的需要碎片整理吗?”
关于FAT为什么会变得碎片:
“当您将文件保存到 FAT 文件系统时,[文件将被保存]尽可能靠近磁盘的开头。当您保存第二个文件时,[文件将被保存]在第一个文件之后 - 所以当原始文件变大时,它们总是会变得碎片化,附近没有空间容纳它们。”
-如何极客
关于EXT2,3,4如何分配文件:
“ext2、ext3 和 ext4 文件系统 [...] 以更智能的方式分配文件。Linux 文件系统不是将多个文件彼此靠近地放置在硬盘上,而是将不同的文件分散在整个磁盘上,从而留下大量文件它们之间的自由空间。”
-如何极客
(以及更多信息ext3 上的碎片整理,来自维基百科)
“现代 Linux 文件系统通过将文件中的所有块保持在一起来将碎片保持在最低限度,即使它们不能存储在连续的扇区中。一些文件系统,如 ext3,可以有效地分配最接近其他块的空闲块。因此不必担心 Linux 系统中的碎片。”
-TLDP
答案2
无论文件系统是什么,碎片始终是一个问题。不过,Ext3/Ext2 已将问题最小化到大多数管理员都可以正常操作,就好像这不是一个问题一样。通过使用有效的 I/O 调度程序以及文件系统在每个文件后留下尾随空间以适应增长,可以最大限度地减少这种情况。最重要的是,额外的碎片存储得更近,因此即使存在碎片,效果也会严重减弱。 Ext4 切换到范围也是为了帮助进一步减少碎片。
碎片仍然存在,ext2有一个离线碎片整理工具,ext4正在获得一个在线碎片整理工具,btrfs(只是因为它与问题相关)已经有一个在线碎片整理工具。如果您使用的是 ext3,那么您唯一真正的选择是转换为 ext4(通过tune2fs
),或者尝试看看您对诸如 之类的用户空间工具有多少运气shake
。
根据文件系统正在经历的 I/O 类型,即使在静音级别,它仍然可能是一个问题,这就是为什么在线工具一开始就被认为是有用的。
对于FAT32的问题,当你只操作一个文件时,不会产生碎片,而是当你写入文件时才会产生碎片。直接回答您的问题,碎片是文件系统设计的一个方面,因此每当您向 FAT32 文件系统写入内容时,就有可能产生碎片。
答案3
一一回答您的问题:
为什么不需要对 Linux 系统进行碎片整理?因为它使用 ext2/ext3 文件系统还是因为它是 Linux?
因为 ext2/3/4 对文件和文件夹有不同的处理方式,所以它们几乎不会出现碎片。其他人已经回答过了,你可以阅读更多详细信息这里
这是相关的,因为它有一个双引导系统(W7 / Ubuntu)和一个可以被两个系统访问的公共分区(NTFS)。如果我在 Linux 上使用这个分区,它会变得碎片吗?
是的,它可能会变得支离破碎。 Windows、Linux 或其他任何东西是否访问它并不重要,重要的是每个文件系统如何处理文件大小、如何存储所有这些块、是否在每个文件之间留下空白空间......
另一个问题是 Truecrypt 容器。我也使用 Linux 和 Windows 访问它们,它们是 FAT32。它们会因 Linux 在其上运行而产生碎片吗?
对于所有实际问题,Truecrypt 容器都是一个文件。当您使用 TrueCrypt 创建容器时,您将创建一个您选择大小的文件。对于您的操作系统,它就像任何其他文件一样。如果您对其进行复制等,也许这些副本最终可能会被保存得支离破碎。
但是,请记住,拥有同一个容器的多个副本从来都不是好事,这可能会降低容器的安全性。始终制作一个新容器。
当您保存、删除、复制、移动等文件时里面容器,操作系统不知道它,它与打开、编辑和保存任何其他文件相同,而不改变它的大小。
如果您担心 truecrypt 的碎片安全性,请研究一下将 truecrypt 与 SSD 一起使用:由于 SSD 试图平衡其内部所有内存的磨损,因此您可能会获得与复制容器相同的效果。
答案4
最后,这取决于操作系统内的文件系统驱动程序。
ext2和FAT文件系统都是记录磁盘上哪些块属于哪个文件的方法。当文件的所有块不连续时,该文件称为碎片文件。但显而易见的是,碎片是由写入文件时的块分配策略引起的,而不是由记录这些块的方式引起的。
真正重要的是文件系统驱动程序可以向前看多远。如果驱动程序知道还有 10 个块要写入,它可以选择一个连续的空闲区域并避免将来的碎片。这取决于驱动程序架构,这是特定于操作系统的。但可以在 FAT 和 ext2 上执行完全相同的可用空间搜索。
事实上,ext2 和 FAT 并没有您想象的那么不同。我在现有 FAT 代码之上编写了引导加载程序的 ext2 部分,这需要不到 100 行额外的代码。