Linux虚拟机在使用过程中,硬盘空间不够使用。由于前期没有做LVM,所以只能手动添加新的硬盘。
给虚拟机添加硬盘有两种方法:
1、通过virsh attach-disk命令添加一块硬盘到系统中,即时生效,但系统重启后新硬盘会消失。
2、通过修改虚拟机配置文件进行添加,永久生效。
现在我来一一介绍方法一和方法二。
方法一、通过virsh attach-disk命令添加硬盘
首先看看在未添加新硬盘系统的分区情况。
fdisk –l
df –h
从上图我们可以看到目前系统中只有一块硬盘vda,而且被分成3个分区,其中vda1为系统启动分区。
下面开始添加硬盘:
先使用 qemu-img添加一块新的硬盘
qemu-img create -f qcow2 /vhost/testdisk.img 20G
现在开始使用virsh attach-disk命令把新硬盘添加到虚拟机上。
virsh attach-disk ilanni01 /vhost/testdisk.img vdb
该命令的意思是把/vhost/testdisk.img硬盘添加到虚拟机ilanni01中,并且该硬盘在虚拟机系统中显示的硬盘名称为vdb。
现在在系统中查看是否已经挂载该硬盘,使用fdisk命令,如下图:
以上操作是在虚拟机运行是,进行操作的。
现在我们把虚拟机关闭然后,再添加看看。
virsh destroy ilanni01
virsh list –all
再次使用virsh attach-disk添加新的硬盘vdc,如下命令:
virsh attach-disk ilanni01 /vhost/test1.img vdc
通过上图我们可以发现,通过virsh attach-disk添加硬盘时,只能是虚拟机运行时才能添加,而且是即时生效的。
现在我们重新启动虚拟机看看,如下图:
fdisk –l
通过上图,我们可以看到通过virsh attach-disk命令添加的硬盘在重启系统后,添加的新硬盘失效。
那么现在我们来看第二种方法通过修改配置文件来添加新硬盘。
要通过修改配置文件来添加硬盘,我们首先要关闭虚拟机,否则无法正常添加。
关闭虚拟机,然后使用virsh edit命令修改虚拟机的主配置文件。
虚拟机的所有配置文件都存放在/etc/libvirt/qemu,如下图:
编辑虚拟机配置文件,如下图:
配置文件中,我们找到有关硬盘的代码:
<disk type=’file’ device=’disk’>
<driver name=’qemu’ type=’qcow2′ cache=’none’/>
<source file=’/vhost/ilanni01.img’/>
<target dev=’vda’ bus=’virtio’/>
<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x04′ function=’0x0’/>
</disk>
现在我们在</disk>这之后,添加如下的代码
<disk type=’file’ device=’disk’>
<driver name=’qemu’ type=’qcow2′ cache=’none’/>
<source file=’/vhost/testdisk.img’/>
<target dev=’vdb’ bus=’virtio’/>
</disk>
注意其中type表示硬盘的格式
file表示硬盘所在的路径
dev表示硬盘在系统中显示的硬盘名称
bus表示硬盘的接线类型,如果是windows系统一般是ide。
添加完毕后,我们来启动虚拟机看看实际的效果。
可以看到硬盘已经被添加进来了。
第一种方法和第二种方法的区别,以上两种方法都能添加硬盘。
但是如果是使用第一种方法添加的硬盘,使用virsh edit ilanni01编辑时,是无法看到第一种方法添加的硬盘的,同时在系统重启添加的硬盘会消失。也就是说使用第一种方法添加的硬盘是在ilanni01.xml这个配置文件中看不到的。
除此之外,如果是卸载硬盘,通过第一种方法添加的一定要在虚拟机运行时卸载。否则会报错,但是还会把该磁盘卸载掉。而且在此之前对硬盘的操作、分区,等都还存在。
卸载硬盘我们可以使用virsh detach-disk命令,如下图:
virsh detach-disk ilanni01 –target vdb
使用virsh detach-disk ilanni01 –target vdb 也可以卸载通过virsh edit ilanni01添加的硬盘。但是此时配置文件ilanni01.xml中还是有此信息的。使用 virsh attach-disk ilanni01 /vhost/testdisk.img vdb命令可以再增加,系统重启后还是存在的。
综上所述,在我们添加硬盘时,建议还是使用第二种方法。