跳到正文
Defragment
下载
简明指南

磁盘碎片整理,一次讲清楚。

文件为什么会变成碎片,碎片为什么让机械硬盘变慢,碎片整理程序那几个小时里究竟在忙什么,以及你的电脑现在还需不需要它。

最后核对于

什么是磁盘碎片?

文件系统并不是一个字节一个字节地存放文件。它按固定大小的块来分配空间,这种块叫作簇(也叫分配单元或块),是一个文件所能占用的最小磁盘空间。在簇大小为 4 KB 的磁盘上,一个 10 KB 的文件要占用三个簇。

理想情况下,一个文件的各个簇紧挨在一起。如果不是这样,文件被分成好几段、散落在磁盘各处,这个文件就是碎片化的。

整理前整理后
  • 一个文件,分成四段
  • 其他文件
  • 可用空间
一个文件分成四段,散落在其他文件和空隙之间。整理之后,它连成完整的一段,其他文件紧跟在后面,可用空间都集中到了末尾。

只要磁盘在用,碎片就会自然产生:

  • 删除会留下空洞。删掉一个文件,它占用的簇就变成了一个空隙。下一个写入的文件可能比这个空隙大,于是只能被拆开:一部分放进空隙,其余的放到别处有空的地方。
  • 文件会变大。给文档加一页,给日志文件添上一天的记录,新增的簇往往没法紧接在原来的簇后面,因为那里已经有别的文件了。
  • 文件系统图的是快,不是整齐。FAT 是 MS-DOS 以及 Windows 95 和 98 使用的文件系统,它通常从上次分配的最后一个簇接着往下,拿下一个空闲的簇。这样很快,但时间一长,文件就散得到处都是。

碎片其实分两种。文件碎片是一个文件被拆成了好几段。可用空间碎片是空闲空间被切成了许多小空隙,而它正是前者的根源:当没有哪个空隙足够大时,每个新文件一写进来就是碎的。

磁盘碎片为什么会拖慢机械硬盘?

机械硬盘是一叠旋转的盘片,外加装在摆臂上的读写磁头。读取任何数据之前,摆臂要先把磁头移到正确的磁道上(即寻道),然后等盘片上的目标位置转到磁头下方(即旋转延迟)。之后数据才开始流出,而且只要数据是连续的一整段,读起来就很快。

每多一个碎片,就要多一次寻道、多等一次。微软的工程师把这两种延迟称为“两大罪魁祸首”。一个分成 50 段的文件,要付出 50 次这样的代价,而不是一次。

平均等待时间就是转半圈所需的时间:30 ÷ 转速(转/分)秒。寻道时间还要另外算上:1996 年昆腾最早的 Bigfoot 硬盘约为 15 毫秒,Barracuda 7200.14 则不到 8.5 毫秒。
主轴转速平均旋转延迟典型硬盘
3600 转/分8.3 毫秒20 世纪 90 年代末的廉价硬盘,例如昆腾 Bigfoot CY
5400 转/分5.6 毫秒笔记本硬盘,例如希捷 Momentus 5400
7200 转/分4.2 毫秒台式机硬盘,例如希捷 Barracuda 7200.14
固态硬盘无没有任何东西在转;数据放在哪里都没有区别

几毫秒听起来不算什么,但同一块硬盘在这段时间里,本可以连续读出几十甚至几百 KB 的数据。所以碎片多的磁盘用起来总是慢吞吞的:程序启动要等更久,磁头来回跳动时,硬盘还咔哒咔哒响个不停。

数据放在哪里也有讲究。采用区位记录(ZBR)技术时,外圈磁道比内圈磁道容纳更多扇区,所以磁盘的开头(最外圈)是速度最快的部分。好的碎片整理程序会利用这一点。

碎片整理程序到底在做什么?

碎片整理程序是个小心翼翼的搬运工。对每个碎片化的文件,它先找一段足够大的连续空闲区域,把各个片段按顺序复制过去,核对副本,让文件系统指向新位置,然后才释放原来的簇。万一中途出了问题,原文件还好好地待在原处。

实时演示:磁头读取磁盘后方零散的块,把它们写进前面的空隙,原来的位置随之空出来。整齐的行从上往下逐渐堆积起来。

在这个过程中,好的碎片整理程序还会:

  • 合并可用空间,把零散的空闲区域集中成一大片,好让新文件能完整地写进去。
  • 有意识地安排文件位置:系统文件和常用文件放在磁盘开头速度快的地方,不常用的放远一些。Windows 98 甚至会按照程序实际加载的顺序来排列程序文件。
  • 有些东西不去动。在 Windows 2000 中,系统一直打开着的文件,比如分页文件和 NTFS 主文件表(MFT),在 Windows 运行时无法移动。有些工具会在开机时专门处理一遍。

碎片整理不会删除任何东西,也不会让磁盘变大。它只是挪动数据,让磁头少跑几趟就能把数据读完。

Windows 95 和 98 的磁盘碎片整理程序

对很多人来说,碎片整理程序指的就是它:一个窗口里满是小方块,随着程序一点点处理完驱动器 C,颜色慢慢改变。它随 Windows 95 一起推出,和 MS-DOS 6 里的 DEFRAG 命令一样,出自赛门铁克(Symantec)之手,也就是开发 Norton Utilities 及其中 Speed Disk 的那家公司。

点击显示详细信息,就会打开那张著名的磁盘图。图例解释了每一种方块:

  • 已优化(已整理碎片)的数据已经处理好的文件:连成完整的一段,并且待在该待的位置。
  • 未优化的数据仍需移动的数据,按它应在的位置分别标注:驱动器的开头、中间或末尾。
  • 可用空间空着的簇,等待被填满。
  • 不会被移动的数据碎片整理程序必须原封不动留在原处的文件。
  • 磁盘的坏(损坏)区域被标记为不可用的簇。Windows 把它们画成一个白色方框,中间贯穿一条红线。
  • 当前正在读取的数据磁头此刻正在拾取的块。
  • 当前正在写入的数据这些块正被放下的位置。

图的底部有一行字,一句话就解释了整张图:“每个方框代表一个磁盘簇。”(“Each box represents one disk cluster.”)这里用的颜色,正是 Defragment 的 Classic 98 主题中的颜色。

正在整理驱动器 C
正在整理文件系统…已完成 0%
详细信息: 正在对着软驱吹口气
Defragment 的 Classic 98 主题,实时运行中。你可以暂停、重新打乱,或者打开图例看看。

Windows 98 新增了一个复选框:“重新安排程序文件,使程序启动更快”(“Rearrange program files so my programs start faster”)。它背后是英特尔的 Application Launch Accelerator(应用程序启动加速器):一个名为“任务监视器”(Task Monitor)的小程序会记下每个程序启动时读取了哪些文件的哪些部分,碎片整理程序再严格按照这个顺序排列这些部分。英特尔在 1997 年的测试中,Office 程序的启动时间从 11.3 秒缩短到了约 3.7 秒。

这也解释了一个出了名的烦恼:如果碎片整理程序工作时,有别的程序往磁盘里写东西(屏幕保护程序就是常见的元凶),它先前建立的磁盘图就过时了,只好从头再来。很多人都记得,碎片整理好像永远过不了 10%。

磁盘碎片整理简史

  1. 1986

    Diskeeper 和 DiskExpress

    Executive Software 为 VAX/VMS 小型机推出 Diskeeper,Alsoft 则为 Mac 推出 DiskExpress。

  2. 1987

    Norton Speed Disk

    Speed Disk 随 Norton Utilities 4.0 高级版问世,成为 DOS 时代最知名的碎片整理程序之一。

  3. 1993

    MS-DOS 6.0:DEFRAG

    DOS 有了自己的 DEFRAG 命令:一个精简版的 Speed Disk,由赛门铁克授权。

  4. 1995

    Windows 95

    磁盘碎片整理程序(同样是赛门铁克的代码)把由簇组成的磁盘图带到了数以百万计的屏幕上。

  5. 1996

    Windows NT 4.0

    系统没有自带碎片整理程序,但新增的系统功能让 Diskeeper 等工具可以在 Windows 运行时安全地移动簇。

  6. 1998

    Windows 98

    借助英特尔的 Application Launch Accelerator,碎片整理学会了按加载顺序排列程序文件。

  7. 2000

    Windows 2000 和 XP

    碎片整理程序与 Diskeeper 的开发商 Executive Software 合作打造。它的条形图用红色表示碎片文件,蓝色表示连续文件,绿色表示无法移动的文件,白色表示可用空间。

  8. 2003

    Mac OS X 10.3 Panther

    Mac 的文件系统开始在打开文件时,自动为碎片严重的小文件整理碎片。

  9. 2007

    Windows Vista

    碎片整理改为在后台按计划运行,磁盘图也随之消失。

  10. 2009

    Windows 7

    进度重新变得可见,可以同时整理多个驱动器,固态硬盘也不再参与碎片整理。

  11. 2012

    Windows 8:优化驱动器

    工具改了名字,并学会区别对待固态硬盘:不再移动数据,而是向它发送 TRIM 指令。

  12. 2017

    APFS

    苹果的新文件系统专为闪存设计。在固态硬盘上,碎片整理从此根本不再是个问题。

Windows 10 和 11 如何整理磁盘碎片

Windows 依然会整理碎片,只是你看不到了。这个工具现在叫优化驱动器(在“开始”菜单中搜索“碎片整理和优化驱动器”),默认每周自动运行一次。

  • 在机械硬盘上,它会分析驱动器并整理碎片。
  • 在固态硬盘上,它改为执行重新剪裁(retrim):告诉硬盘哪些块已经不再使用。
  • 在用 FAT 格式化的可移动 U 盘或 SD 卡上,它什么也不做。

有一个例外常常让人意外:如果开启了系统还原或其他卷快照,Windows 也会对固态硬盘进行碎片整理,大约每月一次。微软存储团队解释说,碎片严重的卷会拖慢快照,还可能触及文件系统对单个文件碎片数量的上限。

喜欢命令行的话,defrag C: /A 可以分析驱动器,defrag C: /O 会根据驱动器类型执行合适的优化,defrag C: /L 则对固态硬盘执行重新剪裁。完整的碎片整理需要驱动器至少有 15% 的可用空间。

固态硬盘需要碎片整理吗?

不需要。固态硬盘(SSD)没有磁头,也没有旋转的盘片,所以既不用寻道,也不用等待。它的主控维护着一张自己的映射表,把电脑使用的地址对应到数据真正所在的闪存单元,还会有意把写入分散到整个芯片上。在 Windows 看来碎片化的文件,在固态硬盘内部可能位于任何地方,而且无论怎样,读取速度都一样快。

碎片整理只会把原本好好待着的数据重写一遍,而闪存能承受的写入次数是有限的。全球最大的固态硬盘厂商之一三星明确表示,固态硬盘不需要碎片整理,并建议为其硬盘关闭自动碎片整理。

固态硬盘真正需要的是 TRIM:由操作系统告诉它哪些块已经空闲,让硬盘提前清理,从而保持快速写入。Windows 和 macOS 会自动执行,大多数 Linux 发行版也会定时运行。

Mac 需要碎片整理吗?

几乎不需要。在经典 Mac OS 时代,人们会用 Alsoft 的 DiskExpress 和 PlusOptimizer、Norton Utilities 中的 Speed Disk 或 TechTool Pro 之类的工具。从 Mac OS X 开始,大部分工作都由系统自己完成了。

  • Mac OS X 10.2 加入了延迟分配:文件系统先等一等,再决定把新数据放在哪里,这样就能找到一整块连续的位置。
  • Mac OS X 10.3 Panther 加入了自动碎片整理:当一个小于 20 MB、被分成超过八段的文件被打开时,系统会悄悄把它挪成完整的一段。
  • 热文件聚集(Hot File Clustering)会把启动磁盘上最常读取的小文件,集中到磁盘上一块预留的“热”区域。

苹果当年自己的建议是:用 Mac OS X 的话,你很可能根本不需要做优化。如今的 Mac 在固态硬盘上使用 APFS,碎片无关紧要。如果是在机械硬盘上使用 APFS,macOS 提供了一个开关:diskutil apfs defragment,后面跟上卷以及 status、enable 或 disable。

Linux 上的碎片整理

Linux 的文件系统在设计上着重于避免碎片,而不是事后修补,所以很少需要整理碎片。

  • ext4 通过区段(extent,用一条记录表示一长串连续的块)、延迟分配,以及让文件数据靠近其元数据,把文件保持在一起。偶尔需要时,还有 e4defrag。
  • XFS 自带 xfs_fsr,它会重新整理碎片最严重的文件,默认每次最多运行两小时。
  • Btrfs 提供 btrfs filesystem defragment 命令和 autodefrag 挂载选项,后者默认关闭。使用快照时要小心:碎片整理会打破文件与其快照副本之间的共享,占用的空间可能随之增加。

为什么大家爱看碎片整理

在硬盘的咔哒声和小方块由浅变深之间,碎片整理不知不觉成了一件值得观看的事。一个缓慢、有条不紊、看得到终点的过程,每一步都让一切更整齐一点,看着竟莫名让人平静。

直到今天,还有人专门找来看。2018 年,TechCrunch 报道过一个 Twitch 频道,它什么都不做,只是全天候给一块 DOS 磁盘整理碎片;长达数小时、连硬盘噪音都一并录下的 Windows 98 碎片整理视频,至今在 YouTube 上仍有人观看。

这正是 Defragment 的全部初衷:享受看着磁盘慢慢变整齐的那份平静,却不需要一块真的需要整理的磁盘。你的 iPhone 或 iPad 上会显示一块假想的磁盘,永远在整理碎片,共有六款主题(包括 Classic 98),愿意的话还能在一旁显示时间。

常见问题

SSD 要不要做碎片整理?

不要。固态硬盘没有活动部件,碎片不会让它变慢,碎片整理只会增加磨损。Windows 会自动改为向固态硬盘发送 TRIM 指令,保持开启就好。

Win10、Win11 还会自动整理磁盘碎片吗?

会。“优化驱动器”默认每周运行一次:对机械硬盘整理碎片,对固态硬盘执行重新剪裁。如果开启了系统还原,它还会大约每月对固态硬盘整理一次碎片。

我的 Mac 要做磁盘碎片整理吗?

几乎从不需要。Mac OS X 从 10.3 版起就会自动整理小文件的碎片,而如今的 Mac 在固态硬盘上使用 APFS,碎片无关紧要。

碎片整理要多长时间?

取决于磁盘的大小、文件的数量、碎片的程度以及磁盘有多满。在 20 世纪 90 年代的电脑上,一次完整的碎片整理可能要花上好几个小时,Windows 98 的使用指南也正是这样提醒的。如今 Windows 会按计划自动运行,所以每次通常没剩多少活儿。

碎片整理进行到一半可以停止吗?

可以。“暂停”和“停止”按钮就是为此准备的,而且碎片整理程序会先复制并核对每个片段,再释放原来的位置。突然断电就是另一回事了,所以在笔记本电脑快没电时整理碎片,从来都不是个好主意。

碎片整理会删除文件吗?

不会,它只是移动文件。不过它会覆盖可用空间,所以之前删除的文件在整理之后就更难恢复了。

碎片整理需要多少可用空间?

需要足够的空间来腾挪。微软要求驱动器至少有 15% 的可用空间,才能完整地整理碎片;空间不够的话,有些文件会一直是碎的。

Windows 98 的碎片整理为什么总是重新开始?

因为它工作时有别的程序在往磁盘里写数据,通常是屏幕保护程序或后台程序。这样它的磁盘图就过时了,只好从头开始。关掉其他程序、停用屏幕保护程序会有帮助。

“每个方框代表一个磁盘簇”是什么意思?

在 Windows 95 和 98 的磁盘图里,每个小方块代表一个簇,也就是一个文件所能使用的最小磁盘空间。颜色表示簇里装的是什么:已整理好的数据、待移动的数据、可用空间等等。

还能再看一次碎片整理吗?

能:iPhone 和 iPad 上的 Defragment 就是干这个的,一块永远在整理碎片的磁盘,还有 Classic 98 主题。它不会碰任何真实数据。

看它再收拾一遍。

Defragment 是 iPhone 和 iPad 上一场安静、永无止境的碎片整理。免费,六款主题,带时钟,而且没有任何真实的东西需要整理。

即将登陆 App Store看看 Defragment

参考资料

内容已对照使用手册、微软和苹果的文档以及当年的资料核实。

  1. Microsoft: Disk defragmentation background and engineering the Windows 7 improvements (2009)
  2. Microsoft: Disk defragmentation in Windows 2000
  3. Microsoft Learn: defrag command
  4. Microsoft Learn: Optimize-Volume
  5. Microsoft Support: Defragment or optimise your drives in Windows
  6. Microsoft KB Q120962: DEFRAG in MS-DOS 6 is developed by Symantec
  7. Microsoft KB Q160043: bad clusters in the Disk Defragmenter map
  8. Microsoft KB Q155679: Windows NT 4.0 has no disk defragmenter
  9. Microsoft KB 186978: Disk Defragmenter restarts repeatedly
  10. Intel: Application Launch Accelerator announcement (1997)
  11. Scott Hanselman: Does Windows defragment your SSD? (2014)
  12. Apple: About disk optimization with Mac OS X (HT1375)
  13. Amit Singh: Fragmentation in HFS Plus volumes
  14. Linux kernel documentation: ext4 block and inode allocators
  15. xfs_fsr manual page
  16. Btrfs documentation: Defragmentation
  17. Samsung Semiconductor: SSD FAQ
  18. Wikipedia: Hard disk drive performance characteristics
  19. Wikipedia: Quantum Bigfoot
  20. Seagate Barracuda 7200.14 data sheet
  21. Seagate Momentus 5400 product manual
  22. Alsoft: company history
  23. Wikipedia: Norton Utilities
  24. Wikipedia: Diskeeper
  25. TechCrunch: Watch a hard drive defrag forever on Twitch (2018)