KVM 主机服务器运行 CentOS 6.5,并使用 LVM 卷组“storage_pool”作为 KVM 的主存储池。
使用 ext4 文件系统安装 Ubuntu 客户机并将整个 /dev/vda1 挂载为 /。这是客户机磁盘配置:
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/storage_pool/kvmguest.img'/>
<target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
增加客户磁盘大小的最佳方法是什么?VG 有大量可用空间。
我找到了一些示例,但大多数也在客户机内部使用 LVM,或者不完全适用。据我所知,常用方法是在同一个 VG 中创建一个更大的 LV,关闭客户机,传输数据,编辑配置以使用新的 LV?
在此先感谢任何建议或指点
答案1
无需关闭访客(至少在 2019 年不再需要)。
简单地
lvextend -L+<size>G /dev/<group>/<volume>
然后
virsh blockresize <domain> /dev/<group>/<volume> --size <newsize>
最后,进入您的客房并做一切必要的事情以利用额外的空间。
在 Windows 客户机中你可以
diskpart
list volume
select volume <n>
extend
这些是我在 Ubuntu 19.04 下使用 qemu 3.1.0 扩展作为 KVM 域运行的 Windows 10 客户机的 C: 驱动器的具体步骤
答案2
以下是我所采取的程序:
扩展kvm guest虚拟机的逻辑卷
# lvextend -L+50G /dev/storage_pool/guest.img
关闭 kvm 客户机并停用逻辑卷
# virsh shutdown guest # lvchange -a n /dev/storage_pool/guest.img
列出并记录 kvm 客户端的分区信息,最重要的是第一个扇区。如果它不显示扇区,您可能需要添加“-u”或“-u 扇区”开关
# fdisk -l /dev/storage_pool/guest.img
删除并重新创建分区以填充整个扩展空间,确保您使用扇区作为单位并选择相同的第一个扇区(如果分区对齐,通常为 2048),您可以使用“u”fdisk 命令在单位之间切换
# fdisk /dev/storage_pool/guest.img Command (m for help): d Partition number (1-4): 1 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First sector (...): 2048 Last sector...: hit enter and use the default last sector Command (m for help): a Partition number (1-4): 1 Command (m for help): w
暴露 ext3/4 文件系统并调整其大小
# kpartx -a -v /dev/storage_pool/guest.img # e2fsck -p -f /dev/mapper/storage_pool-guest.img1 # resize2fs /dev/mapper/storage_pool-guest.img1 # e2fsck -p -f /dev/mapper/storage_pool-guest.img1 # kpartx -d -v /dev/storage_pool/guest.img
激活逻辑卷并启动 kvm 客户机
# lvchange -a y /dev/storage_pool/guest.img # virsh start guest
答案3
在搜索相同内容时,我发现您的问题尚未得到解答。对我来说,以下方法有效:
以通常的方式关闭客户机(在我的情况下是 Debian 7.0)。
扩展“原始”LV(当然是在主机的 VG 中),例如,扩展 5G。为此,您必须在主机上拥有 root/sudo 权限:
lvextend -L +5G /dev/你的存储池VG/你的虚拟计算机VGToExtend
在 gparted 中打开新扩展的 lv(即 VM 的“磁盘”):
gparted /dev/mapper/YourStoragePoolVG-YourVirtualMachinesVGToExtend
- 注意:您必须使用“/dev/mapper/…”路径, 不是“/dev/dm-77”或“/dev/YourStoragePoolVG/...”或其他(这似乎是 LVM 的一个错误/功能)!
- 摆弄修改后的卷上的分区(像往常一样使用 GUI)
- 注意:考虑有关数据丢失、fs 类型等的警告!
- 注意:要小心。
- 在分区,您可以调整分区大小并在 LV 内存储在 virtio 磁盘上的分区表中移动它们。
- 在我看来,扩展一个或多个分区不是问题。对于分区/文件系统缩小,请使用 Google...
- gparted 还会调整分区上的文件系统(而不仅仅是分区本身)。
- 重新启动虚拟机。它现在可以看到修改后的分区。
正如我所说,这对我来说很有效(我可以在一些玩具安装上尝试这个,而不会冒险)。有人可以查看上述说明并评论这是否普遍有效吗?谢谢。
答案4
这很简单 - 在主机的 LVEXTEND|LVRESIZE 之后,从具有 GPARTED 的 LiveCD ISO 启动到 VM。CD 启动完成后,使用 VM 中使用的根分区名称运行 GPARTED:
$ gparted /dev/vda1" # for VirtIO /dev/vda
或者
$ gparted /dev/sda1" # for SATA emulated /dev/sda
并以 GPARTED 的通常方式执行分区大小调整