更改NTFS MFT区域

时间:2016-07-22 14:28:13

标签: windows ntfs ntfs-mft

我正在MSDN网站上阅读有关NTFS的文章。这是其中的一部分,请注意突出显示的部分:

您可以将新创建​​的卷的MFT区域大小更改为 ,以对应于要用作MFT区域的卷的百分比。区域大小如下:

设置1(默认值)保留约为音量的12.5%。

设定2储备约25%。

设定3储备约37.5%。

设置4保留约50%。

在大多数计算机中,默认设置为1就足够了。默认设置适用于平均文件大小为8 KB的卷。存储大量较小的文件可能需要为新卷增加 MFT区域的大小。 增加MFT区域的大小后,NTFS不会立即分配空间以容纳新MFT区域的大小 。相反,NTFS会在增加MFT区域的大小之前耗尽 原始保留空间

这是否意味着我将来只能更改新卷的MFT区域?那么,“原始预留空间”在这里是12.5%?这意味着即使是拥有50%MFT区域的新卷也不得不放弃12.5%的剩余部分? 非常感谢你!

*文章:https://technet.microsoft.com/en-us/library/cc781134(v=ws.10).aspx

2 个答案:

答案 0 :(得分:0)

<块引用>

更改计算机的设置不会立即影响任何现有卷

当然不会。事实上,如果不重新格式化有问题的卷,似乎没有任何方法可以减少 MFT 保留集群的大小。如果有人知道怎么做,我全神贯注。

我在检查我的 VMWare 虚拟机硬盘空间时遇到了这个问题。运行chkdsk返回

<块引用>

11.533.072 KB

但 Windows 资源管理器、cmd 目录等返回 19.6 GB!谁吃了丢失的空间?谁做的?!谷歌当然一无所知。想成为专家会告诉您在资源管理器中启用隐藏文件,删除 hiberfil.sys 等等。废话,当然,都是。所以,最后,我遇到了关键字 $mft。所以我检查:

<块引用>

fsutil fsinfo ntfsinfo c:

惊喜!

Total Reserved Clusters: 1.820.556 (6,9 GB)
Reserved for Storage Reserve: 1.809.957 (6,9 GB)

你来了,你这调皮的失去了空间!因此,这是在 VMWare 内的 Windows Enterprise 20H2 10.0.19042.804 x64 上检查的。为了进行比较,我在我的真实硬盘 Windows LTSC 10.0.10240 x86 上进行了检查。输出:

<块引用>

保留集群总数:0x0000000000000d30

好吧,谈论 Windows 更新!在过去的 5 年里,他们确实改进了 fsutil 命令!不管怎样,xd30 == 3.376 个集群,而 20H2 保留了 1.820.556 个集群 -> 6.9 GB!那么……如何回收?查了谷歌,想当高手的又张大了可怜的嘴巴!他们说,只需对硬盘进行碎片整理,问题就会消失!走了我的屁股!碎片整理只是对 MFT 进行碎片整理,不会减少保留的大小。

所以,太好了。手段,备份,格式化一切,恢复。当然,问题遍地都是。所以首先,备份:

将 Win10 ISO(*.esd 可以转换为 ISO,据我所知,但我这里有一个 ISO)作为 DVD 驱动器安装到 VMWare 中

连接第二块硬盘。为什么?好吧,你继续读下去。

现在启动到 boot.wim,执行:

<块引用>

dism /Capture-Image /ImageFile:XXX:\six.wim /CaptureDir:XXX:\ /Name:Win10 /ConfigFile:XXX:\peexclude.ini /Compress:fast /Verify

其中peexclude.ini 包含bullsh*t 之类的

\$Recycle.Bin
\RECYCLER
\System Volume Information
\pagefile.sys
<块引用>

错误 80:文件存在

Errr... 错误什么?!嗯,这是告诉你 dism 内存不足的 MS 神秘方式。这在我的真实电脑上从未发生过,因为我的旧电脑有 4GB 内存,新电脑有 32GB,但目前,我在旧电脑上运行,4 GB - 500 MB 保留给硬件,因为 x86 ,所以

wmic os get freephysicalmemory, totalvisiblememorysize

FreePhysicalMemory  TotalVisibleMemorySize
2415424             3644720

所以我只能为 VMWare 分配 1.5 GB,这还不够。所以需要“ScratchDir”,因此需要另一个硬盘:

mkdir XXX:\tmp

... /ScratchDir:XXX:\tmp

好的,所以 Win dism-ed 硬盘,然后我启动到虚拟来宾并使用 VMWare 工具(共享文件夹 -> HKLM\SYSTEM\CurrentControlSet\Services\vmhgfs)将 *.wim 备份复制到我的真实硬盘。然后,在真机上:

<块引用>

oscdimg -u2 -h -o -m -us -r "c:\copy\test" "d:\copy\burn.iso"

所以基本上,创建一个包含要恢复的 *.wim 的 ISO。

将 20H2 安装媒体作为 DVD 驱动器再次安装到 VMWare 中,与包含 Windows 备份的 ISO 作为另一个 DVD 驱动器相同。再次启动到 Win 安装介质上的 boot.wim,然后:

format /fs:ntfs /v:XXX /q c:

Invalid volume name...

无效什么??!!让我们检查一下:

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/format

/v:<label>

好吧,微软说,语法是正确的,但格式命令本身说它是错误的。去搞清楚。所以删除了标签参数,这个工作了。 Format 两次询问卷名。一次似乎还不够。烦人!该死的这个奇怪的命令!恢复了 VMWare 快照,尝试使用 diskpart format 子命令代替:

diskpart

select disk 0

select partition 1

format fs=ntfs quick label=XXX

Volume in use. Use "override"

Err.. over-what?像这样吗?

format fs=ntfs quick label=XXX override

看,它做到了!幸运的猜测。再次检查总保留集群大小,大小合适,4 MB 或类似的大小。所以尝试恢复wim镜像:

dism /Apply-Image /ImageFile:XXX:\six.wim /Index:1 /ApplyDir:XXX:\ /Verify

Error 1450: "Insufficient system resources exist to complete the requested service"

就是这样!我要回家了!不要再为我着迷了!嗯,至少,这次错误更清楚了。再次耗尽内存。所以我给 VMware 分配了 1.6 GB,这让我的真实 Windows 没有内存,裤子掉下来,而不是虚拟访客关心我的问题。这次成功了。重新启动虚拟 Windows,在资源管理器中检查硬盘空间:

> 12.087 GB

现在我们正在谈论。检查预留集群:

Total Reserved Clusters: 13.360  (52,2 MB)
Reserved for Storage Reserve: 0  ( 0,0 KB)

终于!另外,检查以下值:

<块引用>

HKLM\SYSTEM\CurrentControlSet\Control\FileSystem

我真的很想知道最初为 MFT 保留的 7 GB 是什么。另外,我仍然不知道如何在重新格式化之前减少 MFT 保留大小。微软?有人吗?

答案 1 :(得分:0)

无法发表评论。

@WRFan 你在谈论“系统保留存储”,Windows 为更新等分配的空间,不是 MFT !!

要启用或禁用预留存储(释放或分配空间),请使用:

DISM.exe /Online /Get-ReservedStorageState

DISM.exe /Online /Set-ReservedStorageState /State:Enabled
DISM.exe /Online /Set-ReservedStorageState /State:Disabled