libvirt 管理工具扩展虚拟机磁盘分区

使用libvirt 扩展虚拟机磁盘的方法:
libvirt 工具支持KVM/Qemu,xen, lxc,openvz, esx, hyperv 等虚拟化,是一个使用及其广泛的虚拟化管理工具.

vrish , libvirt 的客户端管理工具,常用到的命令有:
virsh list --all 列出所有的虚拟机,注意当前的user, 可能root 并不能列出已经存在的虚拟机,因为权限的问题;
virsh shutdown VM_NAME 通过call ACPI接口关闭虚拟机,如果VM没有开启ACPI 接口,那么不会成功;
virsh destroy VM_NAME 强行通过掉电的方式进行关机,不推荐,除非系统出现问题;
virsh start VM_NAME 开启虚拟机
virsh suspend VM_NAME 休眠虚拟机
virsh resume VM_NAME 恢复虚拟机

virsh dominfo VM_NAME 列出虚拟机的基本信息
virsh dumpxml VM_NAME 列出虚拟机的配置文件,以xml格式的形式,在该配置文件中,可以找到cpu, mem, disk的相关配置,所以比较有用;
virsh edit VM_NAME 编辑虚拟机的配置文件,一般是刚创建的时候使用;
virsh setmem VM_NAME 512000 #给不活动虚拟机设置内存大小为512000
virsh setvcpus VM_NAME 4 #给不活动虚拟机设置cpu个数为4
值得注意的是,virsh 命令本身支持交互模式,这一点非常好用;

磁盘扩容的步骤(linux 环境):

A. 备份原来的磁盘文件, 参考命令如下:

$ sudo cp /var/lib/libvirt/images/vm-gitlab6/ubuntu-kvm/vm-gitlab6-img1.qcow2 /var/lib/libvirt/images/vm-gitlab6/ubuntu-kvm/vm-gitlab6-img1-back.qcow2 

B. 查看磁盘的使用情况, 参考命令如下:

$ sudo virt-df -h vm-gitlab6-img1.qcow2 
W: kvm binary is deprecated, please use qemu-system-x86_64 instead 
Filesystem                                Size       Used  Available  Use% 
vm-gitlab6-img1.qcow2:/dev/sda1            18G       1.1G        16G    6% 

C. 创建新的虚拟磁盘,指定 磁盘大小,这个磁盘将用来替换原来的磁盘(这个过程并不会检查系统中的空间是否足够分配指定的大小,所以确保系统有足够空间是我们需要关注的,这个过程基本不会失败,速度非常快,以下指定创建一个40GB的新磁盘):

$ sudo qemu-img create -f qcow2 vm-gitlab6-img1-big.qcow2 40G 

D. 通过virt-resize 命令对需要扩容的分区进行扩容,其过程基本是这样的:
从原来的磁盘获取分区信息,然后把用户指定的分区进行逻辑上的扩容,其余分区保持不变;最后把这个新的分区表写入到新的磁盘;从而在新磁盘上实现对分区的扩容操作;以下是扩展原来磁盘的/dev/sda1分区,并保留其他分区不变的操作过程,以及相应的提示;

$ sudo virt-resize --expand /dev/sda1 vm-gitlab6-img1.qcow2 vm-gitlab6-img1-big.qcow2 
Examining vm-gitlab6-img1.qcow2 ... 
W: kvm binary is deprecated, please use qemu-system-x86_64 instead 
********** 
Summary of changes: 
/dev/sda1: This partition will be resized from 18.6G to 32.5G.  The 
    filesystem ext4 on /dev/sda1 will be expanded using the 'resize2fs' 
    method. 

/dev/sda2: This partition will be left alone. 

********** 
Setting up initial partition table on vm-gitlab6-img1-1.qcow2 ... 
Copying /dev/sda1 ... 
 100% ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 00:00 
Copying /dev/sda2 ... 
 100% ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 00:00 
W: kvm binary is deprecated, please use qemu-system-x86_64 instead 
Expanding /dev/sda1 using the 'resize2fs' method ... 

Resize operation completed with no errors.  Before deleting the old 
disk, carefully check that the resized disk boots and works correctly. 

E.
以上完成了新磁盘的分区分配,然后用 virsh-df 命令查看新磁盘分区情况:

$ sudo virt-df -h vm-gitlab6-img1-big.qcow2 

W: kvm binary is deprecated, please use qemu-system-x86_64 instead 
Filesystem                                Size       Used  Available  Use% 
vm-gitlab6-img1-big.qcow2:/dev/sda1          32G       1.1G        29G    4% 

F.
最后是重命名这个新的磁盘和老的磁盘名称,这样就无需从系统层面做变更, 然后进行开机验证; 如果一切都OK, 那么就可以直接删除原来的老磁盘;

$ sudo rm vm-gitlab6-img1.qcow2 $ sudo mv vm-gitlab6-img1-big.qcow2 vm-gitlab6-img1.qcow2 $ sudo chmod 755 vm-gitlab6-img1.qcow2 

你可能感兴趣的:(libvirt 管理工具扩展虚拟机磁盘分区)