为了是不同的后端设备以统一的接口供虚拟机使用,libvirt将存储管理分为两个方面:存储卷(Volume)和存储池(Pool)
下面先介绍已有环境下创建Libvirt存储池
目录
(1) 此次实验采用的是LVM分区,先创建两个空白分区,并且创建为PV(物理卷组),再将两个PV创建为VG(Volume Group)卷组,此部分前两篇文章都有介绍,请移步阅读,至此不再赘述。
(2)编写存储池的XML配置文件,可以仿照Default存储池的配置稍加修改
(3)创建存储池,使用create只会临时创建,使用define先定义,再开启,方为永久创建。
(7)删除存储池:与前面创建客户机的方法类似,由于之前是通过define来定义存储池再启动的,所以删除也是先关闭再undefine。
在安装完libvirt后,libvirt的安装脚本会自动添加一个默认(Default)的存储池
在root用户下查看
查看一下它的xml文件
(1) 此次实验采用的是LVM分区,先创建两个空白分区,并且创建为PV(物理卷组),再将两个PV创建为VG(Volume Group)卷组,此部分前两篇文章都有介绍,请移步阅读,至此不再赘述。
《Linux/CentOS下用创建/删除硬盘分区、分区格式化及挂载/去挂载命令》
(2)编写存储池的XML配置文件,可以仿照Default存储池的配置稍加修改
touch lvm_pool.xml
vim lvm_pool.xml
文件内容
<pool type='logical'>
<name>lvm_pool</name>
<source>
<device path="/dev/sdb1"/>
<device path="/dev/sdb2"/>
</source>
<target>
<path>lvm_pool</path>
</target>
</pool>
⬆ 注意:<name>标签里的是存储池名,<path>标签里的是VG卷组名,这里两者重名!!!
其中,Pool的类型为logical,表示使用的存储类型为LVM,device path为创建的空白分区路径,大小不需要定义,在创建完成后会自动将两个分区的大小汇总,“target”下的路径为VG卷组名。
(3)创建存储池,使用create只会临时创建,使用define先定义,再开启,方为永久创建。
virsh pool-define lvm_pool.xml
virsh pool-list --all
virsh pool-start lvm_pool
(4)查看存储池的基本信息
virsh pool-info lvm_pool
记住结果里面的多少多少GB
vgs
再看一下多少g
对比后可以看出存储池和卷组的大小是一样的,我也不知道为什么。
(5)查看存储池的xml文件
virsh pool-dumpxml lvm_pool
可以看出,Libvirt已经将存储池的XML配置信息进行了完善
(6)给存储池扩容:由于采用了LVM的存储池类型,存储池扩容也变得很方便,只需要fdisk创建一个分区,然后partprobe命令添加到内核,然后将这个分区创建为PV并加到现有的VG中。这相当于是给卷组扩容,当卷组的容量变大了,存储池的容量也会随之增大。
lsblk
fdisk回车 n 回车p 回车 三次回车 w回车好了
fdisk回车l回车查看信息,选择lvm对应编号8e,然后t回车8e回车w回车
(不想保存就q,保存就w)
fdisk回车p回车看到Linux lvm 就好了
我这里采用新硬盘/dev/sdc下的分区sdc1,因为sdb一共10G被我两次分完了。
partprobe保存
lsblk查看
pvcrate /dev/sdc1
vgextend lvm_pool /dev/sdc1
vgs
再次查看,会变大
刷新
virsh pool-refresh lvm_pool
查看信息
virsh pool-info lvm_pool
可以看到,将卷组扩容,存储池的大小也同卷组一样被扩大了
(7)删除存储池:与前面创建客户机的方法类似,由于之前是通过define来定义存储池再启动的,所以删除也是先关闭再undefine。
virsh pool-destroy lvm_pool
virsh pool-undefine lvm_pool