避免NTFS上压缩系统映像的极端碎片化


8

问题说明

我将用wbadmin创建的Windows磁盘映像存储在NTFS驱动器上,然后发现进行压缩,然后再使用NTFS压缩可以节省1.5-2倍的空间,但仍具有恢复的全部可用性。

但是在压缩过程中,文件疯狂地碎片化了,通常系统磁盘映像的碎片超过100'000。

使用这种碎片,碎片整理会花费很长时间(每个图像需要多个小时)。一些碎片整理程序甚至无法处理它,他们只是跳过文件或崩溃。

我认为问题的根源是该文件是由单独压缩的块压缩的。

问题

有没有一种好的(快速)方法来对映像文件进行碎片整理,同时保持其压缩状态(或在不引起极端碎片的情况下进行压缩)?是使用某种实用工具快速对文件进行碎片整理以获取连续的可用空间,还是使用某种实用工具(或方法)从现有未压缩的文件中创建未碎片的压缩文件?

基于评论/答案的评论:

  1. 在我看来,外部(Windows内核)压缩工具不是一个选择。他们无法即时解压缩文件(要解压缩10 Gb文件,我需要10 Gb可用空间,这并不总是可用的;而且,这需要很多时间);从DVD引导系统进行恢复时,它们是不可访问的(正是在我需要可用映像时)。请停止提供它们,除非它们在ntfs上创建透明的压缩文件,例如compact.exe
  2. NTFS压缩对于系统映像而言还不错。除了碎片之外,它还不错。而且解压缩不会占用太多CPU时间,仍然减少了IO瓶颈,在适当的情况下(非碎片压缩文件的比例很高),可以提高性能。
  3. 碎片整理实用程序对碎片整理文件不加任何压缩。唯一的问题是碎片数,无论碎片文件是否压缩,碎片整理都会失败。如果碎片数量不高(大约10000已经可以),则压缩文件将进行碎片整理,并保持压缩状态不变。
  4. NTFS压缩率可以很好,具体取决于文件。系统映像通常被压缩到其原始大小的最多70%。

    一对不相信的截图,但是您可以进行自己的测试。

  5. 我实际上是从NTFS压缩的映像(片段的和非片段的)中恢复的,它可以正常工作,请相信我或自己检查一下。雷姆:我一年前发现,它在Windows 8.1中不起作用。它在Windows 7、8和10中仍然有效。

预期答案:

Windows可以使用的有效方法或程序:

  1. 压缩文件(使用NTFS压缩,并使Windows Recovery可以访问它)而不会创建很多碎片(可能到另一个分区或制作压缩副本;在HDD上,文件速度至少必须比compact+ 快3倍defrag),

    要么

  2. 迅速(至少比HDD上的Windows碎片整理快3倍)来整理碎片碎片文件,例如包含100K +碎片的碎片文件(碎片整理后必须保持压缩状态)。


我发现NTFS压缩这么多是很奇怪的(因为实际测试显示仅减少了2%到5%)。此外,NTFS在文件碎片(例如日记)方面也有一些保护措施。文件的大小(前后)是多少?另外,从图片中看,碎片整理程序似乎无法对压缩文件进行碎片整理。
Doktoro Reichard 2013年

1
1.您可以自己制作Windows映像并进行压缩。确实可以轻松压缩至少1.5倍(60-70%或原始大小)。2.是的,碎片整理程序和其他碎片整理程序可以对压缩文件进行碎片整理。这是真实的经验。
LogicDaemon 2013年

此外,压缩率是不合时宜的,但以下是带有标准软件集的全新安装的Windows 7 Professional(主要是32位,3或4 64位)系统的真实镜像:i.imgur.com/C4XnUUl .png
LogicDaemon 2013年

@DoktoroReichard它取决于文件的内容。文本文件和稀疏文件将具有非常好的压缩率。通常,我避免使用已经压缩的文件,例如zip文件,图像,音频/视频文件...,压缩后,我通常会发现大小减小了10-20%
phuclv

Answers:


4

避免碎片化

秘诀是不要在磁盘上开始写未压缩的文件。

确实,由于NTFS就地压缩算法的本质,在压缩一个已经存在的大文件之后,它将变得非常碎片化。

相反,通过在将文件写入磁盘之前,让OS即时压缩文件内容,可以完全避免此缺陷。这样,压缩文件将像任何普通文件一样写入磁盘-没有意外的间隔。为此,您需要创建一个压缩文件夹。(用与标记要压缩的文件相同的方式,可以标记要压缩的文件夹。)然后,写入该文件夹的所有文件都将被即时压缩(即,作为压缩块的流写入)。以这种方式压缩的文件最终仍会有些碎片化,但是与就地NTFS压缩所造成的混乱相去甚远。

NTFS将232 Mb的系统映像压缩到125 Mb:

  • 就地压缩创建了多达2680个片段!
  • 动态压缩创建了19个片段。

碎片整理

的确,NTFS压缩文件可能会对某些碎片整理工具造成问题。例如,我通常使用的工具无法有效地处理它们-它会降低爬网速度。不用担心Sysinternals的老版本可信赖的Contig可以轻松快速地对NTFS压缩文件进行碎片整理!


2

阅读Wikipedia上有关NTFS压缩的文章:

文件以16个群集块压缩。使用4 kB群集,文件将压缩为64 kB块。如果压缩将64 kB的数据减少到60 kB或更小,则NTFS会将不需要的4 kB页视为空的稀疏文件簇-它们不会被写入。

这允许合理的随机访问时间-操作系统只需要遵循片段链即可。

但是,大的可压缩文件变得高度碎片化,因为每个<64KB的块都变成一个碎片。

首先是第一件事。WBAdmin本质上是一个备份实用程序,可以还原整个系统。因此,预计它的输出文件很大(> 4 Gb)。如引号所示,大型文件会迅速碎片化。这是由于NTFS压缩的方式所致:不是按文件而是按扇区。

一个很好的类比是将蛋糕分成几个盒子,其中一些不是空的。这是初始文件。压缩部分挤压蛋糕,在盒子中留出空间。由于蛋糕块不在一起,由于存在空间,组成蛋糕的块变得支离破碎。

我仍然对NTFS给出这种压缩率持怀疑态度。根据MaximumCompression对多个文件进行的测试,NTFS的压缩率得分最低,仅为40%。从我的亲身经历,我可以告诉你它远低于此,实际上它是如此之低,以至于我从不费心使用它,也没有看到它的作用。

避免碎片的最佳方法是停止依赖NTFS。大多数碎片整理程序将无法展开或移动压缩文件。如果采用某种方式,NTFS将无法扩展文件,或者如果可以,则可能是由于碎片整理过程将压缩后的剩余空间(4kB)填满,因此扩展会碎片化文件,因为文件不会写在连续的簇中。

话虽如此,如果您不需要经常读取文件,请使用上面链接中建议的某些格式。7z和rar非常有效(即它们在适当的时间以高比率压缩)。如果您只关心空间而不是时间,那么请选择一种PAQ类型的算法(尽管您将花费很长时间来压缩和解压缩文件)。也有快速算法可用。

如果您确实需要不断读取文件,请不要完全压缩它。NTFS太乱了。


源(实际上是Wikipdia中的参考文献)实际上包含有关整个过程的良好信息,尽管是技术信息。
Doktoro Reichard

压缩率是不合时宜的,但以下是带有标准软件集的全新安装的Windows 7 Professional(主要是32位,3或4 64位)系统的真实镜像:i.imgur.com/C4XnUUl.png 通过压缩,我确实可以节省磁盘空间。之后,我可以对文件进行碎片整理,但是时间太长。
LogicDaemon 2013年

关于“避免” NTFS压缩:我已经这样做多年了,除了碎片之外,它几乎可以完美地工作。由于性能问题,它实际上不应该用于经常访问的文件,但是大多数可执行文件和文本都压缩得很好。此外,顺序写入的文件(如日志)不会碎片化,因此仍需压缩。而且,当然,压缩的系统映像可以完美地还原,执行多次,并且您无需显式地“扩展”它们,这显然是由NTFS驱动程序按块逐个自动完成的。
LogicDaemon 2013年

1
我不能真的与结果争论(为记录起见,我确实陈述了与您的测试结果相似的实际测试结果,以及我的个人经历,似乎是过时的)。我在评论中提供的链接确实包含有关为什么无法避免碎片问题的信息。同样在Wikipedia文章中,它指出在启动时Windows尚未为NTFS加载压缩库,也不确定恢复过程。可能提供见解。
Doktoro Reichard 2013年

后来谢谢了,但这不是我想要得到的答案:)我希望有一种方法可以通过顺序写入或按与压缩块大小相同的块来压缩而不是碎片化的文件。还是有真正有效的碎片整理程序,当有足够的可用空间时,它可以快速对单个文件进行碎片整理。
LogicDaemon

0

尽管不是OP要求的,但我在使用名为Paragon的第三方软件方面有丰富的经验。从定义上讲,NTFS在压缩(甚至有时写入)文件时会给您的文件系统造成可怕的破坏。这扩展到消耗多个MFT条目,并且...很糟糕。当对文件进行碎片整理时,Microsoft的NTFS驱动程序甚至都不会清除它。因此,需要第三方工具。Paragon允许您将其本身作为操作系统(ISO映像)进行引导,或者安装到可以访问目标文件系统的其他Windows操作系统中。然后,您可以对MFT和文件进行碎片整理。据我所知,这是解决NTFS中这一缺陷的唯一方法,而其格式没有重新格式化。

(除了这是我发现唯一可以实际使用的工具之外,我与该工具或其创建者没有任何关系)

今天,似乎是在问了这个问题之后的两年,我宁愿建议您进行重复数据删除-如果映像稍有不同,则可以节省多达90%的磁盘空间。VM内的W2016 Nano Server确实运行良好,但我怀疑甚至FreeNAS或其他使用ZFS的东西都可以处理它。


URL或比“ Paragon”更精确的名称?Google不了解我。我知道一家名为Paragon的软件公司,但对其产品将对NTFS文件进行碎片整理一无所知(有MFT碎片整理工具,但我没有MFT问题)。感谢ZFS的建议,我将对其进行研究,但是再次,我需要它能够在现场启动以便就地快速恢复。
LogicDaemon

-1

Windows最近一直将ZIP文件视为文件夹。与NTFS压缩文件不同,ZIP文件比NTFS压缩文件的压缩程度更高,并且没有固有的碎片性。

为什么不通过使用ZIP格式的7-zip压缩来测试您的磁盘映像之一,并查看它是否可直接用于还原?

如果不是,请使用7-zip压缩参数以使用最佳格式(例如7z)最大化压缩。您可以增加压缩范围,使其远远超过NTFS,从而使磁盘上有更多可用空间-尽管将其解压缩到第二个物理磁盘或RAM最快,最好是使用不同的控制器和IO电缆来解压缩。

FWIW,压缩可为系统磁盘和非媒体文件的非Sandman SSD带来回报-减少SSD的磨损,增加空间并加快非压缩文件的I / O。参见http://www.tomshardware.com/reviews/ssd-ntfs-compression,3073-9.html

视频,图形和其他压缩数据文件(例如.XLSX)已经非常压缩,因此那里的NTFS压缩没有任何好处。也不适用于具有随机更新的数据库或Outlook邮件。但是可执行文件,txt,html等文件却受益匪浅。

压缩对于小文件也是永远的胜利,例如,如果压缩<64K,则只有一个片段。如果有磁盘问题,只有麻烦才能恢复。


1
伙计,您在很多方面都错了……主要是Windows从未像文件夹那样对待ZIP文件。出于技术原因,甚至根本不会发生这种情况(基本上是仅顺序访问文件内容)。资源管理器不是Windows,尽管它允许类似于文件夹管理zip(但以非常有限的方式,当我从zip打开html时甚至不提取其他文件)。我有一个问题,为什么不适合使用单独的实用程序(无论是Explorer还是7-Zip)(请参阅“基于注释/答案的注释”)
LogicDaemon

顺便说一句,注意“减少SSD的磨损”:如果SSD没有足够大的缓存,则磨损是原来的2倍。因为,在保存压缩文件时,Windows首先保存未压缩的群集,然后对其进行压缩并保存已压缩的群集(然后删除未压缩的群集)。毕竟,这是导致我的问题分散的原因。链接上的Samsung SSD(断断续续,从尾部删除“ les”)确实具有足够大的缓存。
LogicDaemon 2014年

不,Windows从不将zip和cab文件视为文件夹。您可以直接在我的计算机上查看它们的内容(文件/文件夹名称),但不能像磁盘映像或压缩的NTFS文件那样透明地访问它们。您仍然必须将档案中的文件解压缩到一些可以查看/编辑的位置
phuclv 2016年
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.