我花了很多时间在网上搜索有关如何缩小 KVM 虚拟磁盘映像的信息,尤其是对于 Windows 客户机,但没有成功。
我所发现的只是将 VM 可用空间归零,对虚拟磁盘进行碎片整理(来自 Windows),然后运行qemu-img convert -c ...(-c压缩标志)。
我有一个 Windows 7 VM,虚拟驱动器大小为 100 GB。最初,这个 VDD 在主机存储上花费了 40 GB。归零后,VDD 将占用主机上的实际 100 GB。并qemu-img -c ...创建了 91 GB,这完全不是我所期望的。
在 Modernie 网站上,我们可以下载小于 10 GB 的 W7 VM,这怎么可能?有没有办法“真正”压缩 VM 映像?
感谢@dyasny,我用virt-sparsity. 我清理了 W7 VM 磁盘,禁用休眠,因此 VDD 仅消耗 20 GB。再次降级磁盘,并再次运行sdelete -z。virt-sparsity使用该--compress标志运行会提供 80 GB 的虚拟驱动器。远非我所希望的。
EDIT-2016-02-16:“刷新”这个问题,因为这里讨论的缩小 VM 的方法非常有效,但有一个主要缺点:它会删除所有 VM 快照。如果有人知道如何在保留快照的同时缩小 VM,请随时分享!
我已经在 Windows Server 2016 上安装了重复数据删除角色。 根据 Microsoft,它使用 NTFS 压缩来帮助节省空间:
重复数据删除在更少的物理空间中存储更多的数据。与使用单实例存储 (SIS) 或 NTFS 压缩等功能相比,它实现了更高的存储效率。 https://technet.microsoft.com/en-us/library/hh831602(v=ws.11).aspx
我还应该在卷的属性中启用 NTFS 压缩吗(见下面的截图)?会有什么好处吗?
如果已经检查了怎么办?我应该取消选中它吗?检查后会不会有什么负面影响?
compression ntfs file-server deduplication windows-server-2016
当我这样做时(我尝试过各种方法):
ssh -v -C -o CompressionLevel=9 user@ip
ssh -v -C -o 'CompressionLevel=9' user@ip
ssh -v -o 'Compression=yes' -o 'CompressionLevel=9' user@ip
ssh -v -o 'CompressionLevel=9' -o 'Compression=yes' user@ip
ssh -v -C -o 'CompressionLevel 9' user@ip
ssh -v -o 'Compression yes' -o 'CompressionLevel 9' user@ip
ssh -v -o 'CompressionLevel 9' -o 'Compression yes' user@ip
Run Code Online (Sandbox Code Playgroud)
我启用了-v,所以我可以看到连接详细信息,无论我尝试了什么,我都无法获得超过 6 的压缩级别,如详细输出中所示:
debug1: Enabling compression at level 6.
Run Code Online (Sandbox Code Playgroud)
我不需要设置CompressionLevelin ssh_config,我需要用 cli 来做。
我发现了一些信息,该选项CompressionLevel仅适用于 ssh 版本 1,而不适用于 2。
如何设置 ssh 版本 …
我以前从未发生过这种情况,但我无法执行简单的任务,例如在 Ubuntu Linux 18.04 上使用任何流行的压缩工具(例如gzip、bzip2和7z )压缩 18.5 GB 文件。他们都报告了类似的警告(不是错误)消息,声称文件大小在压缩期间发生了变化,而实际上没有其他进程正在访问该文件。例如,当尝试“tar-gz”时,该工具报告:File shrank by <nnnnnnnn> bytes; padding with zeros,以错误代码 1 退出,tar 的联机帮助页说这是由于压缩期间文件更改造成的:
退出代码 1:某些文件不同。如果使用 --compare (--diff, -d) 命令行选项调用 tar,这意味着存档中的某些文件与其磁盘对应文件不同。如果 tar 被赋予 --create、--append 或 --update 选项之一,则此退出代码意味着某些文件在存档时已更改,因此生成的存档不包含文件集的确切副本。
该文件是一个 VMDK,当然,当我压缩它时,关联的 VM 会完全关闭。另一方面,我注意到当压缩文件达到 280 MB 左右时,所有压缩工具都会失败。
我已经在 ServerFault 上检查了其他类似的问题,但我仍然没有得到任何提示来弄清楚发生了什么。对链接问题投票最多的答案说,这不是错误,压缩工具只是“简化”了一堆零字节,但是如果我在解压缩 VMDK 文件后尝试运行 VM,它无法声明磁盘已损坏。
我完全坚持这一点。关于可能发生什么的任何想法?
更新
在尝试使用该cp命令将文件复制到另一个目录时,它在读取文件时转储了 I/O 错误。另一方面,dmesg在读取文件的特定块时报告 I/O 错误。一切都指向磁盘错误(尽管e2fsck说一切正常并且有 0 个坏块)。由于我已经有了 VM 的备份,我将尝试更改主机的磁盘并重新安装 Ubuntu 的新副本,然后看看会发生什么。我一直在发布这个问题,直到我得到一些结果。
我可以通过右键单击并选择“发送到..压缩(zip)文件..”来从GUI压缩Windows中的文件或文件夹。
是否可以在批处理文件中做同样的事情?
我在一台运行 W2K8 的 IIS7 机器上有许多网站。
我正在使用Fiddler来帮助我确定某些内容是否被压缩。没有什么是。
所以,我在谷歌上搜索了一些东西并尝试了一些东西。我有以下...
C:\Windows\System32\inetsrv>appcmd set config -section:urlCompression /doDynamic
Compression:true
Applied configuration changes to section "system.webServer/urlCompression" for "
MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
C:\Windows\System32\inetsrv>appcmd list config -section:urlCompression
<system.webServer>
<urlCompression doDynamicCompression="true" />
</system.webServer>
C:\Windows\System32\inetsrv>appcmd list config -section:serverRuntime
<system.webServer>
<serverRuntime frequentHitThreshold="1" />
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
我已确保 urlCompression、httpCompression 和 serverRuntime 部分已解锁。
我还在我的 web.config 中添加了以下内容:-
<system.webServer>
<serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="00:10:00" />
<!-- NOTE: This requires the following section to be unlocked: appcmd set config -section:urlCompression /doDynamicCompression:true -->
<urlCompression doDynamicCompression="true" dynamicCompressionBeforeCache="true" /> …Run Code Online (Sandbox Code Playgroud) 我们想将 svn 存储库的备份存储为平面文件。我们想对整个热复制目录进行 tar/zip 压缩。我知道我们可以将它转储到一个平面文件中,但让我们假设我们宁愿使用 hotcopy。压缩/tarring svn 存储库是否有任何问题(即字节顺序警告)?
我在 IIS 7 中打开了动态内容压缩,但是 Fiddler 显示我的动态页面仍然在没有内容编码的情况下提供:gzip。
静态内容压缩在相同的服务器上运行良好。
不确定这是否重要,但大多数动态页面都是 Coldfusion 页面(Coldfusion 被配置为 ISAPI 扩展),我们也在使用 IIS URL 重写模块。
这是来自我的 applicationhost.config。
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
...
<urlCompression doDynamicCompression="true" />
Run Code Online (Sandbox Code Playgroud)
这是一个示例请求:
GET / HTTP/1.1
Host: web5.example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT …Run Code Online (Sandbox Code Playgroud) 我工作中的某个人(系统管理员)实际上在 WinXP 上执行了“清理”任务,同时使用 Windows 压缩文件属性压缩了我硬盘上的所有文件(文件名在 Windows 资源管理器中变蓝)
我实际上并不需要压缩我的文件,而且我认为这也会影响我 PC 的性能。
我尝试搜索文件,使用 Windows 资源管理器选择它们并取消选中复选框以解压缩它们,但是仅仅获得 160,000 个文件的“属性”窗口是不可能的。
有人对此有想法吗?一个 .bat 文件来完成这项工作?
在我看来,Apache 2.2 中的 mod_deflate 总是会返回:
内容编码:gzip
绝不:
内容编码:放气
有人向我解释说,虽然可能存在 deflate 算法,但 mod_deflate 以文件格式命名,其中算法可以是以下任何一种:
gzip,bzip。压缩包
在这三个中, mod_deflate 提供了 gzip。
似乎 gzip 是 Web 浏览器中最流行和最受广泛支持的算法,但我知道一些 Web 服务器和代理确实返回 Content-Encoding: deflate。
除了模块名称的混淆之外, mod_deflate 确实只会返回 Content-Encoding: gzip?
谢谢你。
compression ×10
gzip ×3
batch-file ×2
deflate ×2
iis-7 ×2
tar ×2
windows ×2
apache-2.2 ×1
backup ×1
cleanup ×1
file-server ×1
files ×1
iis ×1
mod-deflate ×1
ntfs ×1
qemu ×1
ssh ×1
svn ×1
ubuntu-18.04 ×1
vmdk ×1
windows-xp ×1