KVM专题(3)存储

发布时间:2019-07-25 09:16:14编辑:auto阅读(1507)

    KVM存储模式

    基于文件系统的存储

    dir:目录格式的存储
    fs:磁盘分区存储
    neyfs:网络共享文件存储

    基于设备的存储

    Disk:物理硬盘存储
    Iscsi:iSCSITarget后端存储
    logical:逻辑卷的存储

    KVM支持的虚拟磁盘类型

    raw
        这并非是一种真正的磁盘格式,而是代表虚拟机所使用的原始镜像
        他并不存储元数据,因此可以作为保证虚拟机兼容性的候选方案。不支持快照和压缩等高级特性
        格式简但,容易转换成为其它的格式。需要文件系统用的支持才能使用sparse file
    cow : copy-on-write格式,昙花一现
    qcow : QEMU早期的copy-on-write格式
    qcow2
        按需分配磁盘空间,不管文件系统是否支持
        支持快照
        支持zlib的磁盘压缩
        支持AES的加密
    vmdk
        VMware环境当中默认使用的磁盘格式
    vhd\vhdx
        微软默认采用的文件格式

    使用qemu-imgg管理虚拟磁盘

    qemu-img是一个功能强制性磁盘镜像管理工具
      check                        检查完整性
      create                        创建镜像
      commit                     提交更该
      compare                    比较
      convert                     转换
      info                            获得信息
     snopshot                    快照管理
     resize                         调整大小
    例如:
    创建一块raw格式1g大小的虚拟磁盘
    qemu-img create t1.img 1g   //默认磁盘会存放在当前目录下
    创建一块qcow2格式10g大小的虚拟磁盘
    qemu-img create t2.img  -f qcow2 10g
    查看t2.img虚拟磁盘的具体信息
    qemu-img info t2.img
    检测t1.img磁盘的运行状态
    qemu-img check t1.img
    调整oa-disk.qcow2虚拟磁盘的大小,增加5个g  
    qemu-img resize oa-disk.qcow2 +5G    //注意磁盘扩容完毕之后需要在虚拟机的操作系统层面进行文件系统的创建
    为oa-disk.qcow2创建快照
    qemu-img snapshot -a s1 oa-disk.qcow2
    查看刚刚创建的快照
    qemu-img  snapshot  -l oa-disk.qcow2
    回滚快照
    qemu-img snapshot -a s1 oa-disk.qcow2

    当我们把这些虚拟磁盘文件创建出来就可以添加到虚拟机中,称为虚拟机中的一块磁盘使用

    使用一个具体的示例来演示:
    qemu-img create -f  qcow2 vm1-disk1.qcow2 10G       
    virt-install \
        --name=vm1 \
        --disk path=/tmp/vm1-disk1.qcow2 \        //指定安装到的磁盘文件路径
        --vcpus=1 --ram=1024 \                          //设置虚拟内存大小
        --cdrom=/tmp/CentOS-7-x86_64-DVD-1708.iso  \        //指定启动文件
        也可以是 --location   /tmp/CentOS-7-x86_64-DVD-1708.iso
        --network network=default  \
        --graphics vnc,listen=0.0.0.0 \
        --os-type=linux \
        --os-variant=Centos7.0

    后备差异虚拟硬盘
    在实际生产环境中可以将一个backing_file基础镜像作为父镜像,然后让多个虚拟机使用同一个父镜像,这样只需要为虚拟机提供一个基础镜像即可
    对于父镜像来说,可以是raw或者是qcow2文件格式,但是使用父镜像的虚拟机来说必须使用qcow2
    准备模板

    qemu-img create -f qcow2 \
    > -o backing_file=vm1-disk1.qcow2 \  //磁盘镜像为安装过操作系统的镜像
    > oa-disk.qcow2      //关联基础磁盘跟父磁盘镜像
    创建虚拟机
    virt-install --import \
    >  --name=oa \
    > --vcpus=1 \
    > --ram=1024\
    > --disk path=/tmp/oa-disk.qcow2  \
    > --network network=default \
    > --graphics vnc,listen=0.0.0.0

    注意当使用指定磁盘创建虚拟机之后,虚拟机磁盘文件属主属组变成qemu
    如果我们此时移除或者是更改父镜像磁盘(基础镜像)则虚拟机无法启动

    存储池:

    存储池的基本概念
    Libvirt可以以存储池的形式对存储进行统一管理、简化操作
    对于虚拟机操作来说,存储池和卷并不是必须的

    KVM专题(3)存储
    KVM专题(3)存储

    例如我们创建一个基于目录的存储池

    mkdir /guest_images        //创建目录
    chown root:root /guest_images/      //更改目录属主属组
    chmod 700 /guest_images/             //更改权限
    virsh pool-define-as  guest_images dir --target "/guest_images"  //创建存储池

    创建一个基于分区的存储池

    首先新建一块磁盘分区,然后使用virsh命令创建存储池
    virsh pool-define-as guest_images2_fs   --source-dev "/dev/sdb1" --target "/guest_test(挂载点)"
    virsh pool-start guest_images2_fs    //启动存储池

    创建基于磁盘的存储池

    新添加一块磁盘并且将磁盘格式更改成gpt格式
    准备xml文件

    <pool type='disk'>
      <name>guest_images3_fs</name>
      <source>
        <device path='/dev/sdc'/>
        <format type='gpt'/>
      </source>
      <target>
        <path>/dev</path>
      </target>
    </pool>
    保存退出
    virsh pool-define /tmp/guest_images_disk.xml       //使用xml文件创建存储池
    virsh pool-start guest_images3_fs :启动存储池

    创建基于iscsi的存储池

    在iscsi Target服务器上面安装target服务,并配置
    /backstores/block> create  block1 dev=/dev/sdb1   //基于磁盘划分
    /backstores/fileio> create fikeio1 /tmp/foo1.img 50M  // 基于文件划分
    /iscsi> create iqn.2019-02.org.linuxplus.srv1:tomtest //创建target
    /iscsi/iqn.20...est/tpg1/luns> create /backstores/block/block1  //创建LUNS
    create /backstores/fileio/fikeio1
    create  iqn.1994-05.com.redhat:tomkvm1     //创建acl
    在iscsi客户端进行配置
    iscsiadm --mode discovery --type sendtargets --portal 192.168.153.8
    iscsiadm -d2 -m node --login
    注意要将iscsi客户端/etc/iscsi/initiatorname.iscsi文件中的信息改成对应的iqn信息InitiatorName=iqn.1994-05.com.redhat:tomkvm1

    KVM专题(3)存储
    KVM专题(3)存储
    KVM专题(3)存储

    存储卷

    KVM专题(3)存储
    **vol-create-as default test1.qcow2 1G --format qcow2 在默认目录下创建一个名为test1.qcow2存储卷

    存储卷的管理
    在virsh交互模式下进行
    删除:
    vol-delete lv-name vg-name
    vol-delete test1.qcow2 default
    将磁盘直接划分成逻辑卷
    attach-disk
    通过参数添加新的磁盘设备
    virsh attach-disk --domain VM1 --source=/vm/t1.img --target=vdb --cache=none
    先给虚拟机创建一个虚拟磁盘
    创建虚拟磁盘的三种方法:
    可以使用dd命令:
    qemu-img工具来做
    qemu-img create -f qcow2 test00.qcow2 2g
    第三种方式:
    virsh vol-create-as vm test00.qocw2 2g --format qcow2
    创建xml文件**
    KVM专题(3)存储
    virsh # attach-device vm1 /tmp/disk.xml --persistent
    第二种添加方式
    virsh# attach-disk vm1 /tmp/test00.qcow2 --target=vdc

    其实我个人理解存储池就是存放虚拟磁盘的目录,而存储卷则是目录下面的虚拟磁盘文件

关键字

上一篇: GNS3简单图解

下一篇: Python之元类ORM