一、需求
我有一个kvm虚拟机镜像ubuntu.qco,格式位qcow2,大小为5G,使用一段时间后,镜像磁盘空间已基本占满,需要扩容。查看一下ubuntu.qco的基本信息,如下:
virt-filesystems --long --parts --blkdevs -h -a ubuntu.qco Name Type MBR Size Parent /dev/sda1 partition 83 4.0G /dev/sda /dev/sda2 partition 05 1.0K /dev/sda /dev/sda5 partition 82 1022M /dev/sda /dev/sda device - 5.0G
二、环境
OS:centos 6.3
内核:2.6.32-279.el6.x86_64
三、方法一qemu-img resize
根据博文http://openwares.net/linux/qcow2_img_resize_expand.html所述,可以使用qemu-img命令来扩容qemu镜像。使用命令qemu-img resize ubuntu.qco +1G进行扩容,查看镜像基本信息,如下:
virt-filesystems --long --parts --blkdevs -h -a ubuntu.qco Name Type MBR Size Parent /dev/sda1 partition 83 4.0G /dev/sda /dev/sda2 partition 05 1.0K /dev/sda /dev/sda5 partition 82 1022M /dev/sda /dev/sda device - 6.0G
结果显示,虚拟机镜像虽然增大了,但是其文件系统并没有扩展到新增的磁盘空间,即sda1、sda2、sda5并没有变化,还需要进一步扩展虚拟机的文件系统。由此看来,qemu-img resize并不能很好的满足我的需求。
四、方法二virt-resize
我继续找解决方法,发现redhat系操作系统具有virt-resize命令,可以解决这个问题。具体参考了博文http://blog.oneiroi.co.uk/linux/kvm/virt-resize/RHEL/LVM/kvm-linux-expanding-a-lvm-guest-file-system-using-virt-resize/。
1、依赖包
命令virt-resize的依赖包包括libguestfs-tools和guestfish,使用前需要提前安装。
2、基本原理
virt-resize的基本原理是先创建一个足够大的镜像,然后把原镜像的文件系统拷贝到新的镜像中。由于virt-resize的本质是拷贝镜像,所以通常耗时较长。
3、具体操作
新建一个足够大的镜像
qemu-img create -f qcow2 ubuntu_new.qco 10G
使用virt-size扩容
virt-resize --expand /dev/sda1 ubuntu.qcow ubuntu_new.qco
执行成功后,我们删除ubuntu.qco,将ubuntu_new.qco改名位ubuntu.qco,即可。
最后查看新的镜像信息,如下。整体磁盘空间扩容为10G,sda1扩容为9G。
virt-filesystems --long --parts --blkdevs -h -a ubuntu.qco Name Type MBR Size Parent /dev/sda1 partition 83 9.0G /dev/sda /dev/sda2 partition 05 1.0K /dev/sda /dev/sda5 partition 82 1022M /dev/sda /dev/sda device - 10G -
转载于:https://blog.51cto.com/speakingbaicai/1319570