如果您是Linux用户,您可能听说过不需要对Linux文件系统进行碎片整理。您还会注意到Linux发行版没有提供磁盘碎片整理工具。但这是为什么呢?
要理解为什么Linux文件系统在正常使用时不需要碎片整理——而Windows文件系统需要——您需要理解为什么会出现碎片整理,以及Linux和Windows文件系统的工作方式是如何不同的。
碎片是什么
许多Windows用户,即使是没有经验的用户,也相信定期整理文件系统会提高电脑的运行速度。很多人不知道的是为什么会这样。
简而言之,硬盘驱动器上有许多扇区,每个扇区可以包含一小块数据。文件,尤其是大文件,必须跨多个不同的扇区存储。假设您将许多不同的文件保存到文件系统中。每个这些文件将存储在一个连续的扇区集群中。稍后,您将更新您最初保存的一个文件,增加文件的大小。文件系统将尝试将文件的新部分存储在原始部分的旁边。不幸的是,如果没有足够的不间断空间,文件必须被分割成多个部分——这一切对你来说都是透明的。当你的硬盘读取文件时,它的磁头必须在硬盘上不同的物理位置之间跳来跳去读取每个扇区块——这会降低速度。
碎片整理是一个密集的过程,它移动文件的位来减少碎片,确保每个文件在驱动器上是连续的。
当然,这与固态硬盘不同,固态硬盘没有移动部件,也不应该进行碎片整理——对固态硬盘进行碎片整理实际上会减少它的寿命。而且,在最新版本的Windows上,你真的不需要担心文件系统的碎片整理——Windows会自动为你做这件事。有关碎片整理最佳实践的更多信息,
请阅读本文:
HTG Explains: Do You Really Need to Defrag Your PC?
Windows文件系统如何工作
微软的旧FAT文件系统——最后一次出现是在Windows 98和ME上,尽管它现在仍然在USB闪存驱动器上使用——并没有试图智能地安排文件。当您将文件保存到FAT文件系统时,它会尽可能地将其保存在接近磁盘开始的位置。当您保存第二个文件时,它会将其保存在第一个文件之后,以此类推。当原始文件变大时,它们总是会变成碎片。附近没有让它们生长的空间。
微软(Microsoft)最新的NTFS文件系统试图变得更智能一些,该系统曾在安装了Windows XP和2000的个人电脑上推出。它在驱动器上的文件周围分配更多的“缓冲区”空闲空间,尽管,正如任何Windows用户可以告诉你的那样,NTFS文件系统仍然会随着时间的推移而变得碎片化。
由于这些文件系统的工作方式,需要对它们进行碎片整理,以保持最高的性能。微软已经通过在最新版本的Windows上运行后台碎片整理进程来缓解这个问题。
Linux文件系统如何工作
Linux的ext2、ext3和ext4文件系统——ext4是Ubuntu和当前大多数Linux发行版使用的文件系统——以一种更智能的方式分配文件。Linux文件系统不是将多个文件放在硬盘上,而是将不同的文件分散在磁盘上(这里可以理解成顺序IO和随机IO的区别),在它们之间留下大量的空闲空间。当一个文件被编辑并需要扩展时,通常会有足够的空间供该文件扩展。如果确实出现了碎片,文件系统将尝试在正常使用时移动文件以减少碎片,而不需要碎片整理实用程序。
由于这种方法的工作方式,如果文件系统被填满,您将开始看到碎片。如果它是95%(甚至80%)满的,你就会开始看到一些碎片。但是,文件系统的设计是为了避免在正常使用时出现碎片。
如果在Linux上确实存在碎片问题,则可能需要更大的硬盘。如果您确实需要对文件系统进行碎片整理,最简单的方法可能也是最可靠的方法:从分区中复制所有文件,擦除分区中的文件,然后将文件复制回分区中。当您将文件复制回磁盘时,文件系统将智能地分配文件。
您可以使用fsck命令度量Linux文件系统的碎片—在输出中查找“不连续的inode”。