kvm存储池是被libvirt所管理的文件、目录或存储设备,存储池可以位于本地,也可以通过网络共享,存储池最终可以被虚拟机所使用。默认libvirt使用基于目录的存储池设计,/var/lib/libvirt/images目录就是默认的存储池。本地存储池可以是本地的一个目录、磁盘设备、物理分区或LVM卷,但是本地存储池不适合于大规模产品部署,也不支持虚拟机迁移功能。网络共享存储池使用标准的网络协议进行存储设备的共享,它支持SAN,IP-SAN,NFS,GFS2等协议。在kvm虚拟化技术中,存储池可以包含多个存储卷,对虚拟机而言,这些存储卷都被是被为物理硬件存储设备。
3.1 创建基于目录的虚拟存储池与存储卷
创建目录
mkdir /var/lib/libvirt/test
修改文件安全相关属性
chown root.root /var/lib/libvirt/test/ chmod 700 /var/lib/libvirt/test/
使用virsh命令创建存储池,
virsh pool-define-as test --type dir --target /var/lib/libvirt/test/ #创建为目录类型的存储池 virsh pool-build test #构建池 virsh pool-start test #激活 virsh pool-autostart test #自动激活 virsh pool-list
还有可以使用xml定义的方式创建存储池,首先创建一个名为test的xml文档
# cat test <pool type='dir'> #定义类型为目录 <name>test</name> #定义名称为test <source> </source> <target> <path>/var/lib/libvirt/test</path> #定义目录 <permissions> <mode>0700</mode> <owner>-1</owner> <group>-1</group> </permissions> </target> </pool>
然后调用pool-create命令,加载xml文件
virsh pool-create test virsh pool-list
然后再创建存储卷,格式为qcow2,大小为10G
virsh vol-create-as test vol-test.qcow2 10G --format qcow2 virsh vol-list test #查看池下的卷
然后为虚拟机添加硬盘,将test存储池中的vol-test.qcow2卷作为硬盘添加到虚拟机ubuntu中
virsh attach-disk \--domain ubuntu16 #指定虚拟机 \--source /var/lib/libvirt/test/vol-test.qcow2 #指定卷的路径 \--target vdb #指定将硬盘识别为虚拟机的vdb \--targetbus virtio #总线协议 \--driver qemu #驱动类型 \--subdriver qcow2 #磁盘源的驱动类型 \--sourcetype block #磁盘源方式 file即文件设备,block为块设备 \--cache none #不用缓存 \--persistent #会让此操作同时对运行的虚拟机以及虚拟机的xml文件都会生效 \--config #下次重启生效
此时登陆虚拟机,可以看到硬盘已经添加
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx