我应该在虚拟机中压缩硬盘文件吗?

我应该在虚拟机中压缩硬盘文件吗?

我有一个安装了 Windows 7 32 位的虚拟机,主机是 Windows 7 64 位。我选择了可​​动态调整大小的 VDI 磁盘映像。在磁盘映像上安装 Windows 后,其大小约为 5gb。

由于我不打算经常使用虚拟机,因此我有兴趣压缩磁盘映像以节省一些自己的磁盘空间。但我对虚拟机还很陌生,不知道最好的选择是什么。

  1. 不要压缩。这可能会严重降低性能,或者 VDI 可能已经是压缩格式,而我自己的压缩就是浪费时间。
  2. 通过文件属性在主机 Windows 中压缩 .vdi 文件。
  3. 在虚拟机内部,转到其硬盘属性并选择压缩驱动器。

您认为哪一个选项最好?

谢谢。

答案1

选择选项 1 - 你绝对应该不是压缩 VDI。

选项 2 - 打开、关闭和使用压缩的 5GB 磁盘映像会明显变慢。它甚至可能慢得令人难以忍受。而动态调整大小的磁盘会加剧这种情况。

选项 3 - 这实际上不会减少虚拟磁盘的大小,它只会减少数据磁盘上,但也会降低其速度。一般来说,全磁盘压缩只应用于包含小到中等大小的数据文件或不经常访问的文件。

答案2

虚拟机内部的 NTFS 压缩(我有过这方面的经验)是一个非常糟糕的想法。

它导致 CPU 频率过高,并且 VDI 减少文件大小的增益并不大,只有 1/1.13,我见过的最高增益只有 20%(谈论在所有系统分区上启用了压缩的客户 NTFS)。

为了缩小 vdi,请搜索名为“CloneVDI”的工具,我使用 2.51 版本(不记得我下载到哪里了。它会从现有文件创建另一个 VDI 文件,并可以选择“压缩”(即缩小)。

使用这样的工具,来宾分区内未使用的所有空间都不会占用创建的 VDI 上的空间,确保不更改 UUID,然后将旧文件夹移动到临时文件夹,将新文件夹移动/重命名为原来的文件夹,尝试启动,如果一切顺利(工具手册说它可能会失败,但我从未看到它失败)删除旧的。

示例:在全新的 Windows 7 上安装所有更新(使用 WSUS + OnLine)后,VDI 超过 15GiB;经过“cleanmgr”和其他调整后,分区显示已使用 9.5GiB,但 VDI 仍然是 15GiB;使用 CloneVDI 后,文件缩小到 9.5GiB。

哦!是的,激活 NTFS 压缩后,使用 CloneVDI 后的 VDI 变为 8.4GiB,是的,只少了 1GiB,但启动时间却增加了 10 倍。

我主要将 CloneVDI 与不可变 VDI 一起使用,当我需要将 VDI“复制”到另一个地方的另一台 PC 上时(将其放在 64GiB USB 3.1 棒上)...因为我现在想要/需要拥有(出于软件测试目的)所有 XP、7、8、8.1 和 10(家庭版和专业版)(32 位和 64 位),它会产生 5*2*2=20 个 VDI 文件,最糟糕的是我还需要它们作为“干净”的最近安装状态,仅适用于最后的 Service Pack 和所有更新...这个数字乘以 3,所以 60 个 VDI 文件...64GiB 是不够的...我需要一个 300GiB USB HDD,所以我携带一个 500GiB Sata III 2.5 HDD 在 3.1 USB Type C 外壳中,我仍然使用 CloneVDI 来缩小它们。

如果你很幸运,电脑上有 USB 3.1 端口和速度不错的 2.5 英寸 Sata III HDD(1TiB 或 500GiB),那就足够了,3.1 型 C 外壳真的很便宜(在 AliExpress 上不到 20 欧元)并且运行完美,可以放在口袋里等等...我讨厌 USB 型 B 连接器(microUSB),往往会失去稳定性(当你不想要时它会自动拔掉),因为我使用型 C 连接器,所以我没有遇到过这个问题(miniUSB 连接器也很好,但不会让你获得 3.1 速度,也没有 3.0 速度,只有 2.0 速度。

注意:有些人错误地将 USB 3.1 称为 USB 3.0...确保 USB 3.1 Gen 2(用于真正快速的 HDD 速度)并且是的,Gen 2 仅适用于 C 型连接器,如果外壳连接器不是 C 型,则不会真正达到最高速度。

Usb 3.0 和糟糕的 USB 3.1(Gen 1)仅为 5Gib/s(千兆位),而 USB 3.1 Gen2(仅带有 Type C 连接器)可以以 10Gib/s 的速度工作,在 Windows 主机中远远超过每秒一千兆字节(1GiB/s),因此复制 10GiB 的 VDI 文件仅需不到 10 秒。

警告:USB 3.1 Gen 2 会消耗大量电量,因此请注意(如果在记忆棒上则尤其如此)热量...SanDisk 64 GiB USB 3.1 Gen 2 的温度非常高,它会让您感觉就像把手放在加热的烤箱上一样...因此拔下插头后请等待一会儿让它冷却下来或向其吹气等。

如果您可以支付 50 欧元,购买 USB 3.1 Gen 2 Type C + 3-1 线缆 USB C 转 USB A + 500GiB Sata III 2.5"...您会发现自己不再想要“压缩”(请记住在进行重要的客户更改后使用 CloneVDI 工具),您会发现这样的 Shrink/Compact 就足够了。

附注:最佳实践...使用 CloneVDI 时,使用两个不同的高速磁盘(从一个磁盘读取,然后以管道方式并行写入另一个磁盘)...内部 HDD 和 3.1 Gen2 Type C 外部磁盘...之后从一个磁盘复制回另一个磁盘。这样做确实比在同一磁盘上读取和写入然后将其复制到另一个磁盘花费的时间更少(磁头移动少得多)...除非您非常幸运地拥有 SSD 磁盘...如果是这样,请将另一个 SSD 放在外部机箱上。

我确实有(作为测试)一个 1GiB 存储(连接到 PCI Express 3.0 x16 控制器),能够达到 35GiB/s 的持续写入速度,是的,每秒 35 GB... 您可以在 1/35=0.029 秒内填满整个存储(比大多数现代 PC 内存条都快);显然,这是一个使用液氮冷冻的“概念验证”,等等。这个想法是,这将使 PC 的正常内存“概念”失效... PC 将像旧 PDA 一样启动(即时),因为不需要电源来保存内存... 不知道它何时以及是否会提升市场(价格?最好不要考虑它,原型成本超过 1300 万美元)。

到那时,便宜的方式是将 Sata III 2.5 1TiB(或 1.5TiB)安装在 USB 3.1 Gen 2 Type C 外壳上...如果没有 USB 3.1 端口,请购买便宜的 PCI Express USB 3.1 Gen 2 Type C 卡和 USB 电缆 CC,以实现 10GiB/s 的传输。

如果无法承受这样的“速度”并且需要停留在 USB 2.0 上;我最好的建议有两个:如果您不介意客户机速度降低很多,请启用 NTFS 客户机压缩,并在进行重要更改后使用 CloneVDI 来缩小 VDI 大小。

请注意:CloneVDI 不需要您在客户机上预先执行任何操作(例如将可用空间清零等),它将完成全部工作,查看哪些扇区实际上未被使用,并将它们视为具有零,这样它们就不会继续生成 VDI。

使用真正“慢速”的 HDD(30MiB/s)在 15GiB 的 VDI 文件上传递 CloneVDI 并获得 9GiB(在同一分区上)花费了 25 多分钟......而从一个 USB 3.1 Gen 2 Type C 外壳执行到另一个 USB 3.1 Gen 2 Type C 外壳只需不到 30 秒;这就是为什么我这么多谈论 USB 3.1 Gen 2 Type C(10Gib/s)的原因......等待半分钟而不是将近半个小时。

我始终将所有 VDI 放在两个 USB 3.1 Gen 2 Type C 外壳中(每个 500GiB 2.5 英寸 HDD),因此我有一个 BackUP 和一个真正“快速”的客户 I/O 性能……不占用内部 OS HDD 上的空间。

我将谈论这样的 HDD(我的 HDD 真的很贵,我只用它们进行短时间的测试),它们可以以接近 6Gib/s 的速度持续写入(Sata III 是瓶颈),它们不是 SDD,但有多臂,因此可以同时写入多个盘,NCQ 优化,1GiB 的内部缓存(不是只有 8MiB 或 16MiB 的那种)...价格...每个接近一千美元...我不太喜欢 SSD 和它的低“擦除”循环数...更多用于密集型(虚拟机 VDI)使用。

我永远不会将虚拟机放在 SSD 上,两三年后 SSD 就会损坏(“擦除”次数达到最大值)。我倾向于使用两个非常便宜的 500GiB 快速 Sata III 2.5 英寸,每个都在自己的 USB 3.1 Gen 2 Type C 外壳上,因此我的写入速度接近 200MiB/s;这使得 CloneVDI 从 15GiB 缩小到 9Gib 只需近 3 分钟。便宜又快。

希望我能帮到你...有时候最好使用两个小型硬盘(500GiB)而不是一个 USB 记忆棒或一个大硬盘(1.5TiB),所有 VDI 的容量都足够,速度也更快...如果与 cloneVDI(从一个读取,写入另一个)结合使用,那就太理想了。

我的主要想法是:改变思维方式......如果问题出在“空间”上,那好吧,做一些工作(对客户机没有速度影响)也就是说,将CloneVDI压缩/缩小,并获得两个可以放在口袋里的接近快速的外部便携式硬盘,这样你也可以保存VDI的最后两个良好状态;当然,只将这种外部硬盘用于VDI,这样你就可以确保将来有足够的空间......并且在内部硬盘上还有另一份VDI的副本(如果超过一台PC),这样你就可以得到......速度,从一台PC传输到另一台PC的低等待时间,以及4个备份副本(如果只有两台PC,两个内部,两个外部)和外部硬盘上额外的2个“旧状态”备份副本。

在我的例子中,60 个 VDI 永远不会使用超过 300GiB(我使用的内部客户机最大 HDD 大小为 20GiB),实际上只占用了大约 200GiB,其中我可以不保留旧状态,因为我将它们全部用作不可变的,所以我有近 280GiB 可以增长(在 500GiB HDD 上),想象一下如果我使用 1TiB 或 1.5TiB(浪费空间),仅用于未来的 Windows 版本。

我看到 Windows 客户机上的 VDI 文件通常不会大于 10GiB(记住我使用的是默认安装,只有 Windows,没有应用程序等),如果我放入所有 Windows 更新(在 cleanmgr 等和 CloneVDI 通过之后)它会增加到 13GiB 或 15GiB(并且增长上限为 20GiB,因为我为系统分区定义了 20GiB)。

这样,我可以在所有操作系统、最近安装的操作系统、操作系统+更新、32位/64位操作系统、Windows 版本 XP、7、8、8.1 和 10 上测试应用程序安装程序......并查看哪些可以运行,哪些会失败等等。由于我将它们配置为不可变的,因此关闭电源后,下次打开电源时,VirtualBox 做的第一件事就是清除更改,这样我就可以测试另一个应用程序安装程序等。

VirtualBOX 具有一个隐藏功能,您可以告诉不可变的 HDD 在虚拟机开启时不要丢失更改,同时仍然不可变......因此您还可以测试需要关闭机器的应用程序安装程序。

答案3

只需检查 Pismo File Mount,它是一款出色的工具,可以以高比率和低 CPU 使用率进行“即时”压缩。

我将所有 .vdi 文件都放在 .pfo 文件中(已打开压缩),它将全新安装的 Windows(即使带有更新)压缩到 50% 以下,因此您可以获得超过 50% 的 od 空间。

此类 .pfo 文件安装在“C:\Volumes\bla_bla_bla.pfo”上,因此只需编辑 .vbox 文件路径即可将其固定到那里。

我说的是 Windows 主机,在 Linux 主机上我还没有使用过 Pismo File Mount。

.pfo 文件以文件夹的形式安装在读写模式下,您可以将任何内容放入其中(文件和文件夹)。

警告:我不知道如何缩小 .pfo 文件

我主要将它用于什么用途?:对于不可变的 VirtualBOX 机器主 .VDI,但不适用于驻留在 Snapshot 文件夹中的 vdis,即具有 autoReset="true" 的 vdis(因为它们会增大和缩小)。

希望能帮助到你!

相关内容