KVM 动态调整 qcow2 硬盘

动态扩容

参考:https://cloud-atlas.readthedocs.io/zh_CN/latest/kvm/kvm_vdisk_live.html

  • 未关闭虚拟机,直接在宿主机器上qemu-img resize 命令调整磁盘大小会提示不可操作
# qemu-img resize 192.168.130.33.qcow2 +50G
qemu-img: Could not open '192.168.130.33.qcow2': Failed to get "write" lock 
  • 检查虚拟机块设备列表
virsh domblklist <domain>
  • 可以使用virsh blockresize在线调整qcow2镜像,底层是通过QEMU Monitor管理虚拟机指令实现
# virsh blockresize <domain> vdc --size 200G
Block device 'vdc' is resized

# 此时虚拟机中看到如下信息,查看vdc大小,看到已经变成200G

[1869817.201326] virtio_blk virtio4: new size: 419430400 512-byte logical blocks (215 GB/200 GiB)                                                                                                                                                                       
[1869817.205828] vdc: detected capacity change from 144955146240 to 214748364800                                                                                                                                                                                                          
[1869819.943750] VFS: busy inodes on changed media or resized disk vdc

# 注意
对于 virtio-blk 设备,最新的Guest内核,大小是自动更新的,所以会马上看到容量改变,旧内核需要重启guest系统;
对于 SCSI 设备,需要在guest操作系统中触发一次扫描: echo > /sys/class/scsi_device/0:0:0:0/device/rescan;
对于 IDE 设备,则需要重启一次guest操作系统才能刷新。

  • 后续操作根据虚拟机情况来
    如果更新文件系统,使用下面的命令:
    resize2fs 命令 :针对的是ext2、ext3、ext4文件系统
    xfs_growfs 命令 :针对的是xfs文件系统

动态卸载硬盘(硬盘未在使用)

  • 检查虚拟机块设备列表
virsh domblklist <domain>
  • 虚拟机中确认未挂载使用

  • virsh detach-disk 命令支持在先卸载硬盘

# virsh detach-disk <domain> vdb
命令执行后,虚拟机中就看不到那块硬盘,但配置文件中仍然存在

# virsh detach-disk <domain> vdb --live --config
该命令会同时修改虚拟机的运行配置和文件配置

# 注意
卸载硬盘比如vdb,会使后面的硬盘在下次重启后盘符变化,比如原来的vdc变成vdb
注意检查/etc/fstab文件

For compatibility purposes, --persistent behaves like --config for an offline domain, and like --live --config for a running domain.

posted @ 2022-10-31 10:59  武平宁  阅读(353)  评论(0)    收藏  举报