qemu-img resize磁盘扩容

技术说明

在OpenStack中可以使用nova resize [--poll] <server> <flavor>命令升级虚拟机实例的配置,如将flavor从4-8192-0-150-0-5-50升级为8-8192-0-250-0-5-50,详见“OpenStack Essex中Nova Resize功能更改”
当只需要升级虚拟机Root Disk或Ephemeral Disk,可以使用qemu-img resize命令改变Disk的大小。

操作步骤

#假设虚拟机名称为instance-0000027f
#通过Dashboard界面或virsh命令关闭虚拟机
virsh destroy instance-0000027f
#备份虚拟机目录    
cp -r /var/lib/nova/instances/instance-0000027f/ /var/lib/nova/instances/instance-0000027f_bak/
#复制到resize目录
cp -r /var/lib/nova/instances/instance-0000027f/ /var/lib/nova/instances/instance-0000027f_resize/
#进入resize目录,在里面进行磁盘扩容的操作
cd /var/lib/nova/instances/instance-0000027f_resize/

#disk.local为qcow2格式的快照文件,转换为raw格式可自动合并backing file
qemu-img convert -f qcow2 -O raw disk.local disk.local_rbase
#替换disk.local,此时为raw格式
mv disk.local_rbase disk.local
#可通过qemu-img resize + size/qemu-img resize - size方便地增加或减少disk的大小
#当减少disk大小时,需预先在虚拟机操作系统中缩减分区大小,以防止数据丢失
qemu-img resize disk.local +100G
#检查文件系统,可忽略结果
e2fsck -fp  disk.local
#动态改变文件系统大小,可忽略结果
resize2fs disk.local
#将disk.local从raw还原为qcow2格式
qemu-img convert -f raw -O qcow2 disk.local disk.local_qcow
#替换disk.local,此时为qcow2格式
mv disk.local_qcow disk.local

#替换虚拟机目录
rm -rf /var/lib/nova/instances/instance-0000027f/
mv /var/lib/nova/instances/instance-0000027f_resize/ /var/lib/nova/instances/instance-0000027f/
#通过Dashboard界面或virsh命令启动虚拟机
virsh start instance-0000027f

备注

使用qemu-img resize的过程只改变disk文件,数据库中保存的flavor需要手动更改。flavor涉及nova数据库中instance表的instance_type_idroot_gbephemeral_gb字段,instance_types表,详见“在Nova数据库中修改虚拟机配额(flavor)”

在磁盘扩容后如有出现虚拟机可ping通内网网关IP,可ping通外网,但无法ping其他虚拟机内网IP的情况,需要在宿主机执行service openstack-nova-network restart,重置虚拟机网络。





Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>