碎片整理的含义以及何时需要

Tim*_*Tim 1 filesystems terminology defragmentation

碎片整理似乎有两种含义:

  • 碎片整理是减少碎片量的过程。当文件系统不能或不会分配足够的连续空间来存储作为一个单元的完整文件,而是将它的一部分放在其他文件之间的间隙中时,就会发生碎片。

  • 在 Windows 下,如果我们尝试从 NTFS 分区释放现有的可用空间(以便稍后创建一个新分区,尤其是在 Ubuntu 的双引导安装期间,除了现有的 Windows 操作系统),我们将不得不使用 Windows 工具将所有文件移动到分区的一端,尽可能在分区的另一端留出空闲空间。我听说这也称为碎片整理

    或者,Linux 工具例如gparted可以从 ntfs 分区释放可用空间,而无需先对 NTFS 分区进行碎片整理(在上一段的意义上,而不是在第一段的意义上)。

问题:

  1. 我想知道上面的两种“碎片整理”是否总是一起发生?

  2. 文件系统(例如 NTFS)是否需要碎片整理取决于

    • 使用它的操作系统(例如 Windows 或 Linux),或
    • 文件系统类型(例如 NTFS)本身?
  3. 2 中问题的答案是否因碎片整理的不同含义而异(如前所述)?例如,我听说,

    • 在 Linux 中,EXT4 分区不需要进行第一种意义上的碎片整理,除非一个分区被占用超过 90%,因为 Linux 总是尝试自动进行碎片整理。
    • 使用Linux工具释放NTFS分区的空闲空间gparted,在第二种意义上不需要对NTFS分区进行碎片整理,是不是因为Linux总是尽可能地自动将所有文件移动到分区的一端?

der*_*ert 5

您可以对存储在文件系统(文件、文件系统结构、元数据等)、可用空间或两者上的数据进行碎片整理。

可能当有人只是说“碎片整理”时,他们指的是数据(您的第一个定义)。传统上,在对可用空间进行碎片整理时,它会放在最后(您的第二个定义)。通常,您只会在准备缩小分区时这样做,但您也可以这样做,例如,允许大量连续分配(例如,您将要编辑一些视频)。但实际上,除了缩小分区外,通常不需要对可用空间进行碎片整理。

分区收缩通常只能在一端进行(大多数,如果不是全部,分区格式 [1] 不允许在中间切孔)。通常文件系统数据结构占据分区的开始,所以收缩(和增长)通常在最后完成。无论您使用哪种工具(Windows 磁盘管理器、gparted 等),最后都必须有足够的可用空间——而这通常需要移动数据。Windows 和 gparted 都会这样做。

FS 是否需要碎片整理取决于很多事情,至少:

  • 它的用途是什么。随机不常用的文档,可以容忍无限碎片;突破极限 DVR 应用程序不能容忍任何。有些东西实际上比您想象的更能容忍碎片,例如数据库(因为它们通常进行随机读/写,而不是顺序)。
  • 它是什么类型的驱动器。对 SSD 的搜索几乎是免费的,因此碎片化要便宜得多。
  • 可用于磁盘缓存的内存量。如果它的所有读取都从缓存中得到满足,那么它在磁盘上的碎片化程度无关紧要。或者,如果所有写入都可以缓冲足够长的时间以将它们按顺序发送到磁盘。
  • 操作系统,主要是由于缓存差异。
  • 文件系统。有些对于非常零散的文件有很多开销。

碎片的主要问题通常是它向可能是顺序读/写的内容添加了搜索。


1:虽然逻辑磁盘管理器经常这样做。例如,当使用稀疏分配时,通常会尝试回收足够大的未使用空间块。请注意,他们向文件系统假装空间尚未回收(并在文件系统想要写入时将其返回)。