为什么对C驱动器进行碎片整理会增加10 GB我的可用磁盘空间?


27

我使用Defraggler对100 GB C:\驱动器(已满85 GB)上的可用空间进行碎片整理。进行碎片整理后,驱动器仅显示75 GB的完整空间。10 GB的可用空间是如何神奇地出现的?我有没有丢失任何数据?

我在进行碎片整理之前先进行了磁盘清理,而我的垃圾桶只有大约11 MB,所以不能因为清理临时文件而已。请注意,我对“可用空间”进行了碎片整理,这意味着它应该已经将空块重新排列为连续的。


1
例如参见(:可能是一个与卷影副本的互动piriform.com/docs/defraggler/technical-information/...
霍拉旭

2
另外,碎片整理程序可以选择在整理碎片之前清空回收站。
2013年

Answers:


14

可能发生的情况是,碎片整理操作迫使Windows抛出了一些系统还原快照。造成碎片化的病理情况可能会导致元数据开销超出Windows通常使用的磁盘空间的10%。即使那样,我也不确定是否有可能。

在Defraggler的版本历史记录或文档中没有看到任何表明它能够正确对文件进行碎片整理以防止清除卷影副本的内容。实际上,来自Defraggler支持论坛的该线程表明他们知道它正在发生(董事会管理员在帖子中标有“ Official Piriform Bug Fixer”的帖子),但没有指出他们是否要对其进行修复。

对卷进行碎片整理时,卷影副本可能会丢失:发生这种情况的原因是,默认情况下,VSS默认情况下使用16 KB群集运行,而大多数NTFS卷使用4 KB群集格式化。因此,如果碎片整理操作正在移动的数据不是16 KB群集的倍数(或者它移动的“距离”不是16 KB的倍数),则VSS会将其作为更改进行跟踪,并可能清除所有快照。

MSDN:对文件进行碎片整理

如果可能,以16 KB为增量在彼此相对对齐的块中移动数据。启用卷影副本时,这会减少写时复制开销,因为在满足以下条件时,卷影副本的空间会增加,性能也会降低:

  • 移动请求块的大小小于或等于16 KB。
  • 移动增量不能以16 KB为增量。

Vista的内置碎片整理功能无法执行此操作

对用户而言不明显的一项更改是我们在碎片整理过程中对卷影副本进行了优化。Defrag具有特殊的试探法,可以以最小化写时复制活动和卷影副本存储区消耗的方式移动文件块。如果没有这种优化,则碎片整理过程将加速旧卷影副本的删除。


我不知道此答案的快照部分,但我不相信碎片整理释放了空间。碎片整理可以清空您的回收站吗?在没有将小文件合并到单个群集中的文件系统上,我看不到碎片整理将如何导致这种空间增加。我可以想象您有这么小的块有10G的可用空间,以至于Windows不会计算它,但是我以前从未听说过这种行为。
Slartibartfast 2011年

@Slartibartfast:如果应用程序编写不正确,这是一个问题。既然我不在手机上,我将用更多证据更新答案。:-)
afrazier 2011年

@afrazier-尽管我认为ThouArtNotDoc的更新答案是更好的一般答案。我必须同意,卷影副本可能在OP的情况中起作用。我也发现了这一点:“如果计划对启用了卷影副本的卷进行碎片整理,建议您使用大小为16 KB或更大的群集(或分配单元)。如果不这样做,则导致的更改数量进行碎片整理可能会导致卷影副本的删除速度比预期的要快。” -MS:“设计卷影复制策略” technet.microsoft.com/en-us/library/cc728305(WS.10).aspx
2011年

@afrazier:确认。以前的所有系统还原点均已消失。在配置中,我将12%设置为卷影副本允许的最大空间,因此10 GB并非没有道理。另一方面,我刚刚安装了一个9 GB的游戏,该游戏可能只是覆盖了以前的还原点。
goweon

@firebat:“系统还原”所使用的空间用于跟踪对现有文件(快照文件)的更改,而不是对新文件的更改。安装新游戏不会影响系统还原空间,但是会产生较大补丁。
afrazier 2011年

23

每个片段都必须在某个地方进行跟踪。这会占用存储空间(在文件系统的管道中,而不是您直接访问的东西)。

一个示例:假设您有一个包含1000个片段的文件。因此,您的文件是通过随机块的集合存储的。而不是单个连续块。这意味着,如果仅用于存储每个片段的地址,则碎片文件需要在文件系统的管道内增加1000倍的存储空间。文件系统管道对文件的每个片段的位置几乎没有字典/数据库/映射/表/列表。因此,对于文件系统管道而言,与包含1000个片段指针的列表相比,存储单个片段指针的列表不需要太多空间。

但是,嘿,也许我错了...

编辑:来自这里的支持信息

当非居民数据流过于零散,以致其有效分配图不能完全适合MFT记录时,分配图也可以存储为非居民数据流,只有一个小的居民流包含间接分配映射到非居民数据流的有效非居民分配图。

翻译:如果您有大量碎片,则文件系统管道的一般情况假设将不适用。因此,FS必须采取措施来容纳碎片并最终花费额外的存储空间,仅用于管理碎片。从一开始我就是我的猜测。


编辑:鉴于上述情况,似乎10GB只是由于文件碎片而丢失是疯狂的。我敢打赌,在进行碎片整理时,您会遇到一些常见的文件系统损坏,这些损坏会自动纠正。我在考虑的不仅是大量碎片,而且部分删除的文件会占用存储空间。很高兴看到该碎片整理中的磁盘扫描日志(或在磁盘碎片整理之前运行磁盘扫描)


3
PS-一定是一些铁杆碎片。
James T Snell

我不知道碎片整理后如此大的存储消耗增加的正当理由。但是我已经注意到很多次了,如果您的系统还原点很旧(如果定期运行磁盘清理实用程序,通常不会发生),然后在C盘上收集了很多数据后就进行了碎片整理,内存消耗无处不在,但是如果删除该还原点,它将清理该占用的存储。从技术上讲,这可能没有任何意义,但是我经历了很多次,因为超时后,还原点会占用内存。
Kushal 2011年

Dunno,10G似乎很多,但是IME,非常完整的磁盘比不那么零散的磁盘碎片化的速度要快得多。如果他以前的> 85%(因为他的概率表示85GiB但100GB磁盘),并且在此期间可能更饱满,那么他本来可能会有惊人的高碎片化和伴随的可怕表现。
Bernd Haug,

3
除非该卷的块大小过高,否则我个人无法相信仅通过不跟踪片段就可以释放10GB的空间。在4096k的块大小下,并假设每个片段都需要一个完整的块来跟踪(这是错误的),这将需要250万个先前被跟踪的片段,但不再需要释放足够的空间。
Carf 2011年

1
@Doc-指针不会占用整个块。如果(很可能)每个分配块是多个扇区,则由于需要跟踪的数据块更少,因此需要的指针也就更少了,因此跟踪所有片段的最大可能开销将远远小于3%。我不知道NTFS的确切细节,但是使用FAT文件系统(效率相对较低),您仍然无法获得FAT命名的文件分配表(那些碎片跟踪指针)的10%的开销。
Steve314,2011年
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.