kavin

Linux系统下kvm虚拟化(八)虚拟机挂载独立磁盘并自动挂载

kavin 虚拟化 2018-05-09 3137浏览 0

 

当建立的虚拟主机磁盘不够用,一般都会用到两种方式去扩容:

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实例启动以后,执行磁盘添加命令。kvm实例单独mount -a即可。

根本办法:

1,添加磁盘qemu-img create -f raw /data/gjdisk2.img 1700G

2,编辑kvm实例配置文件xml,比如vr edit domain在最后disk标签下添加:

<disk type=filedevice=disk>

<driver name=qemutype=rawcache=none/>

<source file=/data/gjdisk2.img/>

<target dev=vddbus=ide/>

<address type=drivecontroller=0bus=0target=0unit=1/>

</disk>

3,重启kvm实例进去使用fdisk进行分区、格式化、挂载并修改分区表。  

这样每次不管是宿主机重启还是kvm实例重启,都会挂载单独的磁盘。

  

如上是常规添加的办法,还有一种办法是操作源磁盘,通过virt-resize拉升分区,缺点是1,文件比较大的情况下耽误时间比较久。2kvm需要关机,不适合临时磁盘添加情况。

 

说明:

1,如果之前有单独添加了磁盘并已经挂载到了实例中的,一样的办法,也是要edit实例配置文件,这里需要注意的是source file路径。另外启动后磁盘的分区名字会发生变化,注意修改分区表即可。

2,这里添加的img格式的磁盘,不利于直接进行snapshot快照的创建、恢复操作,需要进行qcow2格式转换。如果有需要可以进行imgqcow2操作或者直接创建对应格式。


继续浏览有关 扩容kvmlinux虚拟化 的文章
发表评论