每天5分钟玩转openstack跟学(四)KVM虚拟化原理之存储虚拟化

概念:

KVM的存储虚拟化是通过存储池(Storage Pool)和(Volume)来管理的。
Storage Pool是宿主机上可以看到的一片存储空间,可以是多种类型,后面会详细讨论。Volume是在Storage Pool中划分出的一块空间,宿主机将Volume分配给虚拟机,Volume在虚拟机中看到的就是一块硬盘。

存储池分类

1.目录类型的Storage Pool

  1. 文件目录是最常用的Storage Pool类型。KVM将宿主机目录/var/lib/libvirt/images/作为默认的Storage Pool。

  2. Volume就是该目录下面的文件了。

  3. 那KVM是怎么知道要把/var/lib/libvirt/images目录当作默认Storage Pool的呢

    实际上KVM所有可以使用的Storage Pool都定义在宿主机的/etc/libvirt/storage目录下,每个Pool一个xml文件,默认有一个default.xml
    每天5分钟玩转openstack跟学(四)KVM虚拟化原理之存储虚拟化_第1张图片

  4. 使用图形界面添加文件类型的卷volume
    每天5分钟玩转openstack跟学(四)KVM虚拟化原理之存储虚拟化_第2张图片

  5. 使用命令行添加文件类型的卷volume

    • 修改配置文件

      cd /etc/libvirt/qemu/
      vi VM2.xml
      
      # 找到此处(一下是刚刚看到的两块磁盘),再复制一份
      <disk type='file' device='disk'>
        <driver name='qemu' type='qcow2'/>
        <source file='/var/lib/libvirt/images/cirros-0.3.3-x86_64-disk1.img'/>
        <target dev='hda' bus='ide'/>
        <address type='drive' controller='0' bus='0' target='0' unit='0'/>
      </disk>
      <disk type='file' device='disk'>
        <driver name='qemu' type='qcow2'/>
        <source file='/var/lib/libvirt/images/VM2-1.qcow2'/>
        <target dev='hdb' bus='ide'/>
        <address type='drive' controller='0' bus='0' target='0' unit='1'/>
      </disk>
      
      # 新增的磁盘信息 需要修改source 、target和 address中的 unit(centos中修改slot而非unit)
      <disk type='file' device='disk'>
        <driver name='qemu' type='qcow2'/>
        <source file='/var/lib/libvirt/images/VM2-2.qcow2'/>
        <target dev='hdc' bus='ide'/>
        <address type='drive' controller='0' bus='1' target='0' unit='0'/>
      </disk>
      
    • 创建磁盘VM2-2.qcow2

      # -f 格式
      qemu-img create -f qcow2 /var/lib/libvirt/images/VM2-2.qcow2 100M
      
    • 重新定义

      virsh define /etc/libvirt/qemu/VM2.xml
      
    • 重启虚拟机,查看磁盘是否添加成功

      virsh start VM2
      

      每天5分钟玩转openstack跟学(四)KVM虚拟化原理之存储虚拟化_第3张图片

  6. 查看/var/lib/libvirt/images/下的vloume卷

    cd /var/lib/libvirt/images/
    ls
    

    在这里插入图片描述

  7. 使用文件做Volume有很多优点

    存储方便
    移植性好
    可复制
    可远程访问:远程访问的意思是镜像文件不一定都放置到宿主机本地文件系统中,也可以存储在通过网络连接的远程文件系统,比如NFS,或者是分布式文件系统中,比如GlusterFS,这样镜像文件就可以在多个宿主机之间共享,便于虚机在不同宿主机之间做Live Migration(实时迁移);如果是分布式文件系统,多副本的特性还可以保证镜像文件的高可用

  8. KVM支持多种Volume文件格式,在添加Volume时可以选择

    raw:是默认格式,即原始磁盘镜像格式,移植性好,性能好,但大小固定,不能节省磁盘空间。

    qcow2:是推荐使用的格式,cow表示copy on write,能够节省磁盘空间,支持AES加密,支持zlib压缩,支持多快照,功能很多。

    vmdk:是VMWare的虚拟磁盘格式,也就是说VMWare虚机可以直接在KVM上运行

2.LVM类型的Storage Pool

  1. LVM:Logical Volume Manager(逻辑卷管理)

  2. LV由于没有磁盘的MBR引导记录,不能作为虚拟机的启动盘,只能作为数据盘使用

  3. 这种配置下,宿主机上的VG(卷组)就是一个Storage Pool,VG中的LV(逻辑卷)就是Volume

  4. LV的优点是有较好的性能;不足的地方是管理和移动性方面不如镜像文件,而且不能通过网络远程使用

  5. 在宿主机上创建了一个VG

    参考连接:https://blog.csdn.net/qq_42517220/article/details/107150975

  6. 查看VG信息
    在这里插入图片描述

  7. 创建一个Storage Pool的定义文件/etc/libvirt/storage/HostVG01.xml

    vi /etc/libvirt/storage/HostVG01.xml
    
    <pool type='logical'>
      <name>HostVG01</name>
      <source>
        <name>HostVG01</name>
        <format type='lvm2'/>
      </source>
      <target>
        <path>/dev/HostVG01</path>
      </target>
    </pool>
    
  8. 通过virsh命令创建新的Storage Pool “HostVG01”

     virsh pool-define /etc/libvirt/storage/HostVG01.xml
    

    每天5分钟玩转openstack跟学(四)KVM虚拟化原理之存储虚拟化_第4张图片

  9. 启用HostVG01

    virsh pool-start HostVG01
    

    每天5分钟玩转openstack跟学(四)KVM虚拟化原理之存储虚拟化_第5张图片

  10. 在virt-manager中为虚机VM1添加LV的虚拟磁盘(LV的创建也可以通过LVM那篇文章进行,添加时直接选择就可以了)

  11. 通过命令行给VM2添加LV的虚拟磁盘

    • 修改配置文件
    vi /etc/libvirt/qemu/VM2.xml
    
    # 找到标签,添加磁盘信息
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <source dev='/dev/HostVG01/lv02'/>  # 此处需修改
      <target dev='hdd' bus='ide'/>  # 此处需修改dev
      <address type='drive' controller='0' bus='1' target='0' unit='1'/>  # 此处需修改unit
    </disk>
    
    1. 创建虚拟卷/dev/HostVG01/lv02
    lvcreate -n lv02 -L 128M HostVG01
    

    每天5分钟玩转openstack跟学(四)KVM虚拟化原理之存储虚拟化_第6张图片

    1. 重新定义
    virsh define /etc/libvirt/qemu/VM2.xml
    

    在这里插入图片描述

    1. 通过virt-manager产看VM2添加虚拟磁盘 lv02 是否成功

    每天5分钟玩转openstack跟学(四)KVM虚拟化原理之存储虚拟化_第7张图片

  • 注意:

    虚拟机最多添加4块磁盘

    磁盘添加 bus=‘1’ unit=‘1’ 两个参数由 0 和 1 组合排列,即:00、01、10、11四种

3.其他类型的Storage Pool

 [参考连接:http://libvirt.org/storage.html](http://libvirt.org/storage.html)

你可能感兴趣的:(OpenStack)