windows – 如何“真正”减少KVM VM映像的大小?
我花了很多时间在网上搜索如何缩小KVM虚拟磁盘映像,特别是对于
Windows客户,没有运气.
我发现的只是将虚拟机可用空间归零,对虚拟磁盘进行碎片整理(从Windows),然后运行qemu-img convert -c …(-c flag to compress). 我有一个Windows 7 VM,虚拟驱动器大小为100 GB.最初,此VDD在主机存储上花费了40 GB.一旦它被归零,VDD就会在主机上实现真正的100 GB.并且qemu-img -c …创建了91 GB,这与我的预期完全不同. 在现代网站上,我们可以下载小于10 GB的W7虚拟机,这怎么可能?有没有办法“真正”压缩VM映像? 感谢@dyasny,我用virt-sparsity做了一个小测试.我清理了W7 VM磁盘,禁用休眠,因此VDD仅消耗20 GB.再次降级磁盘,再次运行sdelete -z.使用–compress标志运行virt-sparsity可提供80 GB的虚拟驱动器.远非我所希望的. 编辑 – 2016年2月16日:
要缩小Windows Guest OS,您必须缩小guest虚拟机中的分区,关闭VM,创建所需大小的新较小磁盘,将数据从旧磁盘复制到新的较小磁盘,交换磁盘名称并重新引导VM.
它很简单,但如果做得不当可能会导致数据丢失和头发丢失. 以下是使用QCOW2格式的KVM与100 GB的Windows Server 2012 guest虚拟机的步骤,我们希望将其缩小到35 GB. 重要信息:此方法不涉及修改虚拟机定义.相反,它只需要磁盘映像操作. 客人的假设: > Guest是Windows Server 2012 > 350 MB的启动 >我们希望将C:从99.6 GB缩小到34 GB 主持人的假设: > Ubuntu 16 LTS服务器 第1步:准备Windows Guest,缩减主C:分区 在这一步中,我们将直接从Windows减少我们的Windows分区.在此步骤结束时生成的磁盘映像将是启动分区,C:驱动器(简化)和我们将删除的剩余未使用空间(通过不将其复制到新磁盘)的总和. >登录Windows Guest 注意:如果新空间太小,您可能会收到错误消息,在这种情况下,您应该逐渐减少“缩小的空间量”1GB,直到错误消失并发生收缩.在实践中,我们希望保留10 GB的可用空间. 假设您能够将C:分区缩小到34 GB. 第2步:收缩VM主机上的磁盘 该过程实际上不是缩小,而是我们将创建一个新的磁盘(最终大小),我们将从原始磁盘复制两个分区,并跳过未使用的空间. 目标是创建一个总大小=启动分区C:分区的磁盘.我们最终会得到一些微小的剩余空间(除非你的数学是完美的),不要担心,因为我们将在最后一步处理. >登录linux主机 mkdir backup cp windows.qcow2 backup/windows.qcow2.bak (去喝咖啡,因为大盘需要一段时间) apt-get install libguestfs-tools >好的,让我们通过使用virt-filesystems探索windows映像来仔细检查我们的Windows磁盘: virt-filesystems --long --parts --blkdevs -h -a windows.qcow2 输出这个: Name Type MBR Size Parent /dev/sda1 partition 07 350M /dev/sda /dev/sda2 partition 07 34G /dev/sda /dev/sda device - 100G - 请注意,我们的/ dev / sda1是我们的Windows启动分区350 MB,/ dev / sda2是我们的C:分区,现在是34 GB,总磁盘映像/ dev / sda /是100 G一堆空间来修剪. 所以这是重要的一步:算一算:34 G 350M适合35 G,因此我们将创建一个35 GB的图像.我们不可避免地会留下一些剩余的空间 – 除非你的数学是完美的 – 但不要担心,我们将在下面处理它. qemu-img create -f qcow2 -o preallocation=metadata newdisk.qcow2 35G 哪个输出: Formatting 'newdisk.qcow2',fmt=qcow2 size=37580963840 encryption=off cluster_size=65536 preallocation=metadata lazy_refcounts=off refcount_bits=16` >让我们通过将旧磁盘复制到新分配的磁盘来调整磁盘大小.这是绝对棒的.大多数其他指南显示一些非常复杂的东西.这只是通过这个命令完成的,之后你应该去喝更多的咖啡 – 这可能需要一段时间: virt-resize windows.qcow2 newdisk.qcow2` 输出这个: [ 0.0] Examining windows.qcow2 100% ?||||||||||||||||||||||||||||||||||||||||||||||||? --:-- ********** Summary of changes: /dev/sda1: This partition will be left alone. /dev/sda2: This partition will be left alone. There is a surplus of 439.8M. An extra partition will be created for the surplus. ********** [ 8.8] Setting up initial partition table on newdisk.qcow2 [ 9.9] Copying /dev/sda1 100% ?||||||||||||||||||||||||||||||||||||||||||||||||? 00:00 [ 15.1] Copying /dev/sda2 100% ?||||||||||||||||||||||||||||||||||||||||||||||||? 00:00 Resize operation completed with no errors. Before deleting the old disk,carefully check that the resized disk boots and works correctly. 请注意,该工具找到了多余的空间……回想一下关于Math的注释…所以你可以取消它并重新创建磁盘,或者像我们这样继续前进并像在STEP 3上那样扩展sda2分区. virt-filesystems --long --parts --blkdevs -h -a newdisk.qcow2 输出这个: Name Type MBR Size Parent /dev/sda1 partition 07 350M /dev/sda /dev/sda2 partition 07 34G /dev/sda /dev/sda3 partition 83 439.8M /dev/sda /dev/sda device - 35G - 注意/ dev / sda3的类型是什么类型的linux for the laftover space.剩下的空间没问题,除非你的数学运算完全正确.我们将在下面进一步介绍来自windows guest的额外分区.现在,请忽略它. mv windows.qcow2 backup/ mv newdisk.qcow2 windows.qcow2 >启动您的VM. 第3步:完成Window Guest上的磁盘操作 在这一步中,我们确认Windows启动正常,我们将把C分区扩展到额外的空间. >登录Windows客户 检查一切正常并删除映像备份或将其脱机移至存储. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows 8 metro – 如何制作密码文本框?
- windows-server-2008-r2 – 处理器关联掩码(IIS)的公式
- 适用于Windows的廉价网络监控工具
- windows – 将字符串转换为int会导致值更改
- windows – 直接退学的初级系统管理员的建议和提示?
- windows-server-2012-r2 – 如何在实验室中对Windows Serve
- 升级到Windows 10后,Git-Bash命令提示符将无法打开
- windows-server-2008-r2 – 安装Server 2008 R2 SP1后没有R
- 最佳windows iphone app开发替代
- Windows下搭建以太坊私有链环境1.8.2