当建立的虚拟主机磁盘不够用,一般都会用到两种方式去扩容:
1,原始盘进行扩容,但扩容操作存在风险。
2,单独创建一块独立磁盘,进行独立挂载,安全高效。
这里我们第一个方式就不考虑了,使用上也没问题,现在直接考虑第二种。
一,创建磁盘并关联
首先,我们以虚拟机gitlabjenkins做演示。
[root@localhost data]# virsh list --all
Id Name State
----------------------------------------------------
1 gitlabjenkins running
从KVM宿主机上创建磁盘:
qemu-img create -f raw /data/gjdisk2.img 1700G
关联具体kvm实例:
virsh attach-disk gitlabjenkins /data/gjdisk2.img vdd --cache none
这样,关联完成,登录kvm虚拟机可以通过fdisk进行查看了。查看关联情况:
Disk /dev/vdd: 1718.0 GB, 1717986918400 bytes
16 heads, 63 sectors/track, 3328812 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf2c918de
二,对挂载的磁盘分区、格式化、挂载
这个操作就很简单了,就是针对已经关联的磁盘进行分区、格式化、挂载。
三,新添加的磁盘实现宿主机重启后自动挂载
这里有一个问题,我们按照第二步分区、格式化、挂载并写入分区表以后,kvm实例重启挂载没问题,但如果宿主机重启以后,那么新添加的磁盘是不会自动挂载的。原因是重启过程中,磁盘添加到kvm虚拟机实例过程会失败,宿主机无法将磁盘添加到一个没有启动的kvm实例中。
实例启动以后,执行磁盘添加命令。kvm实例单独即可。
根本办法:
1,添加磁盘qemu-img create -f raw /data/gjdisk2.img 1700G
2,编辑kvm实例配置文件xml,比如vr edit domain在最后disk标签下添加:
3,重启kvm实例进去使用fdisk进行分区、格式化、挂载并修改分区表。
这样每次不管是宿主机重启还是kvm实例重启,都会挂载单独的磁盘。
如上是常规添加的办法,还有一种办法是操作源磁盘,通过virt-resize拉升分区,缺点是1,文件比较大的情况下耽误时间比较久。2,kvm需要关机,不适合临时磁盘添加情况。
说明:
1,如果之前有单独添加了磁盘并已经挂载到了实例中的,一样的办法,也是要edit实例配置文件,这里需要注意的是source file路径。另外启动后磁盘的分区名字会发生变化,注意修改分区表即可。
2,这里添加的img格式的磁盘,不利于直接进行snapshot快照的创建、恢复操作,需要进行qcow2格式转换。如果有需要可以进行img转qcow2操作或者直接创建对应格式。