如何对NTFS磁盘上的MFT进行碎片整理?


28

前一阵子,我几乎快要填满硬盘驱动器,远远超过建议的最大85%的容量。我相信NTFS开始将文件存储在为主文件表(MFT)保留的空间中,并且随着MFT的增长,它不得不分散到其他地方。
我已经清理了硬盘驱动器上的空间,但是MFT显然仍然是零散的,即使是非常简单的操作(例如打开文件夹或小文件),也存在很多慢速磁盘访问的问题。这会破坏性能。我记得Windows标准磁盘碎片整理程序不会对MFT进行碎片整理,因为在运行操作系统时正在使用MFT。我正在运行Vista Ultimate,其碎片整理实用程序的报告方式很少,比旧版本少。

我怀疑一个解决方案可能涉及从具有基本操作系统(“ Live CD”)的光盘启动并从中运行碎片整理实用程序。谁能告诉我使用什么程序,或如何对MFT进行碎片整理?

谢谢!


1
它不是免费的,但我知道Disckeeper可以处理。
Zoredache

Answers:


35

您可以使用Sysinternals工具Contig

contig.exe c:\$mft

2
没为我工作。UltimateDefrag显示来自非系统分区的$ MFT已碎片化,但是contig表示“所有文件都已进行碎片整理或无法进行碎片整理。” 无论如何,我真的不知道为什么那里有$ MFT。
Yuri Ghensev

15

Auslogics Disk Defrag Pro将为您完成此任务。尽管不是免费程序,但您可以下载免费试用版,如果您决定购买许可证,则最多可在三台PC上使用该许可证。

Ultradefrag是用于Windows平台的免费且功能强大的FOSS碎片整理工具。它可以对任何系统文件进行碎片整理,包括注册表配置单元和页面文件。它包括MFT优化,仅处理MFT。


3
+1 Ultradefrag凭$固的$ MFT确实给我带来了奇迹,即使Contig(在这里有很多投票)也无法击败
BornToCode 2013年

@BornToCode有什么方法可以使Ultradefrag在优化MFT时不将文件移动到分区的末尾?
RockPaperLizard's

1
@RockPaperLizard-我不知道,但是不将这几个文件移到末尾的另一种方法是将磁盘上的所有其他文件移位。您可以尝试在Ultradefrag之后运行普通的Windows Defrag或Diskeeper。但是请记住,按文件使用次数排序每个文件将是一项长期运行的操作,它将在您下次启动Web浏览器时分崩离析。
KeithS

请注意,由于当前版本8不再是FOSS,因此您现在需要单击“旧版本”的下载链接。
trlkly

6

到目前为止,最好的工具是旧的JKdefrag,现在是Mydefrag。将对MFT进行碎片整理。另外,它是免费的。

原始站点已关闭,但可以在此处获取最新版本的资源:https : //www.techspot.com/downloads/3720-jkdefrag-mydefrag.html

编辑

MyDefrag使用的Windows Defrag API支持对MFT进行碎片整理。

以下是FSCTL_MOVE_FILE支持的“ filename:streamname:$ typename”格式的系统文件,流和流类型。

$ MFT :: $ DATA $ MFT :: $ ATTRIBUTE_LIST $ MFT :: $ BITMAP

还有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上运行,但可以在Bart PEUltimate Windows BootCD上运行

但是对MFT进行碎片整理都不需要。


是的,这个。我相信碎片整理API已随Vista更改,因此您甚至不需要重新启动。
Hydaral

1
MyDefrag仅在Windows上运行;您不能从开源LiveCD运行它。它声称只从保留的MFT空间中删除文件,而不对已分段的MFT进行碎片整理。是否有另一个程序(可以作为其他答案发布)可以对MFT进行碎片整理?
WBT

你错了。它不是很明确,因为Defrag API支持对MFT进行碎片整理。另外,您可以检查MyDrag脚本。
surfasb

该站点现在是:mydefrag.net
Randall Flagg

jkdefrag和mydefrag现在已经死了-如上面的注释所示,mydefragGUI仍然可以从mydefrag.net下载,但是自2009
thomasrutter

5

这些步骤对我有用:

  1. Hiren的BootCD中运行MiniXP
  2. 禁用休眠,虚拟内存和内核内存转储。
  3. 请遵循此链接中描述的说明(使用fsutil)。
  4. 使用选项“合并可用空间”在MiniXP上运行MyDefrag。
  5. 再次启动Windows,现在可以缩小分区。

-1

在Ultimatedefrag上有一个选项可以提供启动时的碎片整理,但是它对我没有用,但我希望它对您有用

Ultimatedefrag>工具>设置...>启动时间

选择所需的驱动器,需要一段时间才能分析驱动器。完成分析后,您可以调整mft文件的位置,但是我建议将其保留不变(如果更改了它,则有一个按钮可将其恢复为默认状态)。然后切换“在下次启动时运行”选项,然后重新启动电脑

对我来说,它每次都以24%的速度堆叠,然后在不损坏文件的情况下启动窗口,但希望它对您有用。也分享您的专业知识

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.