我是 XP 用户,我一直想知道为什么文件会变得“碎片化”,为什么在 Linux 中不必对硬盘进行碎片整理?这是 Windows 独有的问题吗?还是 Linux 用户也必须处理这个问题?
答案1
这是由文件系统的实现方式决定的。虽然您可以将长达百万字节的文档的每个字节逐个存储在驱动器上,但这显然非常低效(请记住,您需要记录这些字节。)
因此,大多数文件系统都使用“块”的概念,例如 4 千字节。因此,如果您的文档占用 10 千字节,它将占用 3 个块。最后一个块将只占一半(您可以在 Windows 的文件属性下看到这一点。比较“大小”与“磁盘大小”)。
如果您稍后向此文档添加内容,而下一个块(即第 3 个块)被其他内容占用,则文件系统必须在其他地方找到这最后一个块。这就是碎片。该文档占用了 4 个块,但只有前 3 个块在磁盘上是连续的。第 4 个位于其他地方。这可能会导致性能下降。
现在,这是对你的问题的“经典”解释。有许多文件系统,它们以各种不同的方式解决这个问题。
答案2
它实际上并不是 Windows 特有的,而是文件系统特有的......
通常,一些基于 *nix 的文件系统会在运行过程中在后台自动进行碎片整理。
至于基于 Windows 的文件系统......如果您可以想象按 1-1000 的顺序将一千字节的各种文件写入硬盘驱动器,然后删除占用 50-100 的文件,从而产生 50 的间隙。然后您需要写入 75 个字节,因此它将填充 50-100,然后写入 1001-1025。
因此,新的 75 文件由块 50-100 和 1001-25 组成,这意味着它分布在两个地方。
现在,想象一下这些位于硬盘的不同端,可能需要一些时间才能到达所有这些端,因此为了进行碎片整理,它会将 50-100 和 1001-1025 的部分移动到 1001-1075 的插槽。
它还将尝试将所有内容向下移动并填补所有间隙,以便在完成所有文件操作后,50-100 之间没有间隙。
当文件有序时,它可以大大提高访问时间,因为读取头可以一次性获得它。(显然,对于固态硬盘来说,这不是一个重要因素,也不太重要)。