不久前,我的硬盘几乎满了,远远超过了建议的最大容量 85%。我认为 NTFS 开始在为主文件表 (MFT) 保留的空间中存储文件,而 MFT 的增长导致其不得不在其他地方产生碎片。
我已经清理了硬盘上的空间,但 MFT 显然仍然碎片化,即使是打开文件夹或小文件等非常简单的操作,磁盘访问速度也很慢。这严重影响了性能。我记得 Windows 标准磁盘碎片整理程序不会对 MFT 进行碎片整理,因为操作系统运行时 MFT 正在使用中。我正在运行 Vista Ultimate,其碎片整理实用程序的报告很少,比旧版本更少。
我怀疑解决方案可能涉及从带有基本操作系统的光盘(“Live CD”)启动并从中运行碎片整理实用程序。有人能告诉我使用什么程序,或者如何对我的 MFT 进行碎片整理吗?
谢谢!
答案1
您可以使用 Sysinternals 工具重叠群:
contig.exe c:\$mft
答案2
Auslogics 磁盘碎片整理专业版会帮您实现这一点。虽然这不是一个免费程序,但您可以下载免费试用版,如果您决定购买许可证,则最多可在三台 PC 上使用。
超碎是一个免费且功能强大的自由/源码软件适用于 Windows 平台的碎片整理工具。它可以对任何系统文件(包括注册表配置单元和分页文件)进行碎片整理。它包括 MFT 优化,仅处理 MFT。
答案3
到目前为止,最好的工具是旧版 JKdefrag,现在是 Mydefrag。将对 MFT 进行碎片整理。而且,它是免费的。
原始网站已关闭,但可以从此处获取最新版本:https://www.techspot.com/downloads/3720-jkdefrag-mydefrag.html
编辑
Windows 碎片整理 API由 MyDefrag 使用,支持对 MFT 进行碎片整理。
以下是 FSCTL_MOVE_FILE 支持的系统文件、流和流类型(格式为“filename:streamname:$typename”)。
$MFT::$数据$MFT::$属性列表$MFT::$位图
还有 MyDefrag 的脚本文档:
Inode Filename Description
0 $MFT Master File Table - An index of every file.
1 $MFTMirr A backup copy of the first 4 records of the MFT.
2 $LogFile Transactional logging file.
3 $Volume Serial number, creation time, dirty flag.
4 $AttrDef Attribute definitions.
6 $Bitmap Contains volume's cluster map (in-use vs. free).
7 $Boot Boot record of the volume.
8 $BadClus Lists bad clusters on the volume.
9 $Quota [Windows NT only] Quota information.
9 $Secure Security descriptors used by the volume.
10 $UpCase Table of uppercase characters used for collating.
11 $Extend A directory for: $ObjId, $Quota, $Reparse, $UsnJrnl.
$Extend\$ObjId Unique Ids given to every file.
$Extend\$Quota Quota information.
$Extend\$Reparse Reparse point information.
$Extend\$UsnJrnl USN Journal.
$Extend\$RmMetadata Transactional data.
虽然它不能在 Live CD 上运行,但它可以在巴特·佩或者终极 Windows 启动光盘。
但是这两者都不是对 MFT 进行碎片整理所必需的。
答案4
我知道这是一个老话题,但我做的是旧系统。我正在发布一个开源项目https://github.com/DHorse2/TaylorDo欢迎所有人使用这个 MyDefrag 库或为其做出贡献。
MFT 移动和碎片整理是在正常运行的系统上进行的。但是,它们是一些 $xxx 和系统文件,如果您移动它们,该功能将失败。还原点就是最好的例子。
TaylorDo 产品的重点是它在系统启动后提供峰值性能,而其他产品往往仅仅优化启动。
编辑 20240315:该项目在最终发布之前需要进行少量清理(调度程序启用/禁用);我会保持开放。