kvm存储池和存储卷

一、kvm储存模式

        KVM的存储选项有多种,包括虚拟磁盘文件、基于文件系统的存储和基于设备的存储。

        

 

 

         1.虚拟磁盘文件

               当系统创建KVM虚拟机的时候,默认使用虚拟磁盘文件作为后端存储。安装后,虚拟机 认为在使用真实的磁盘,但实际上看到的是用于模拟硬盘的虚拟磁盘文件。

               这一额外的文件 系统层会降低系统速度。 当然,基于磁盘镜像的虚拟磁盘并非全无益处,磁盘文件系统可以很轻松地用于其它的 KVM虚拟化宿主机。

               但是如果您希望优化KVM虚拟化性能,最好考虑其它的存储方式。

          2.基于文件系统的KVM存储

               在安装KVM宿主机时,可选文件系统为dir(directory)或fs(formatted block storage) 作为初始KVM存储格式。默认选项为dir,用户指定本地文件系统中的一个目录用于创建磁盘 镜像文件。 fs选项可以允许用户指定某个格式化文件系统的名称,把它作为专用的磁盘镜像文件存 储。

    两种KVM存储选项之间最主要的区别在于:fs文件系统不需要挂载到某个特定的分区。 两种选项所指定的文件系统,都可以是本地文件系统或位于SAN上某个物理宿主机上的 网络文件系统。后者具备一定的优势,因为SAN可以很轻易地实现多个主机同时访问,而本 地磁盘或文件系统则无法实现。

    还有一种基于文件的磁盘存储方式是netfs,用户可以指定一个网络文件系统的名称, 如Samba.用这种方式作为KVM存储很方便,因为这样很容易访问到位于其它服务器上的文件 系统,同时用户也可以通过多台宿主机访问磁盘文件。

    所有的这些基于文件的KVM存储方式都有一个缺点:文件系统固有缺陷。因为虚拟机的 磁盘文件不能直接读取或写入KVM存储设备,而是写入宿主机OS之上的文件系统。

     这也就意 味着在访问和写入文件时中间增加了额外一层,这通常会降低性能。所以,如果您希望寻找 KVM虚拟化性能最优方案,最好考虑基于设备的存储。

         3.基于设备的KVM存储

              另外一种KVM存储的方式就是使用基于设备的方式。共支持四种不同的物理存储:磁 盘、iSCSI、SCSI和lvm逻辑盘。磁盘方式指直接读写硬盘设备。iSCSI和SCSI方式可选,取 决于用户采取SCSI或iSCSI地址把磁盘设备连接。

   这种KVM存储方式的优势在于,磁盘的名称 是固定的,而不需要取决于宿主机OS搜索到磁盘设备的顺序。

   这种连接磁盘的方式也有缺点:灵活性不足。虚拟磁盘的大小很难改变,而且基于设备 的KVM存储不支持快照。 如果要优化KVM存储的灵活性,可以使用LVM(Logical Volume Manager)。

          LVM的优势在 于可以使用快照,而快照并不是KVM虚拟化自带的功能。

          LVM可以把所有存储放到一个卷组里,从而轻松创建一个逻辑卷。该卷组是物理磁盘设 备的一个抽象,所以如果超出可用磁盘空间最大值,还可以向卷组中添加新的设备,从而极 大简化了增加存储空间的过程,增加的空间在逻辑卷中直接可以使用。

         使用LVM使得磁盘空 间分配更加灵活,而且增加和删除存储也更为容易。

         最后,LVM无论是在单宿主机或多宿主机环境中都可以很好工作。在多宿主机环境中, 您可以在SAN上创建逻辑卷。

         如果使用Cluster LVM,可以很容易的配置成多个主机同时访问 某个逻辑卷。

二、存储池管理

          基本概念

          显示池与卷的信息

          基于目录的存储池

          基于磁盘的存储池

          基于分区的存储池

          基于LVM的存储池

         基于iSCSI的存储池

         基于NFS的存储池

     1) 存储池的基本概念 存储池是一个由libvirt管理的文件、目录或存储设备,提供给虚拟机使用。

          存储池被 分为存储卷,这些存储卷保存虚拟镜像或连接到虚拟机作为附加存储。libvirt通过存储池 的形式对存储进行统一管理、简化操作。

         对于虚拟机操作来说,存储池和卷并不是必需的。 支持以下类型存储池:

          

 

 

  三、virsh中和存储池相关的命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pool-autostart 自动启动某个池
pool-build 建立池
pool-create-as 从一组变量中创建一个池
pool-create 从一个 XML 文件中创建一个池
pool-define-as 在一组变量中定义池
pool-define 在一个XML文件中定义(但不启动)一个池或修改已有池
pool-delete 删除池
pool-destroy 销毁(删除)池
pool-dumpxml 将池信息保存到XML文档中
pool-edit 为存储池编辑 XML 配置
pool-info 查看存储池信息
pool-list 列出池
pool-name 将池 UUID 转换为池名称
pool-refresh 刷新池
pool-start 启动一个(以前定义的)非活跃的池
pool-undefine 取消定义一个不活跃的池
pool-uuid 把一个池名称转换为池 UUID

四、virsh中的和存储卷相关命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vol-clone 克隆卷。
vol-create-as 从一组变量中创建卷
vol-create 从一个 XML 文件创建一个卷
vol-create-from 生成卷,使用另一个卷作为输入。
vol-delete 删除卷
vol-download 将卷内容下载到文件中
vol-dumpxml 保存卷信息到XML文档中
vol-info 查看存储卷信息
vol-key 根据卷名或路径返回卷的key
vol-list 列出卷
vol-name 根据给定卷key或者路径返回卷名
vol-path 根据卷名或key返回卷路径
vol-pool 为给定密钥或者路径返回存储池
vol-resize 重新定义卷大小
vol-upload 将文件内容上传到卷中
vol-wipe 擦除卷

五、存储卷命令

        1.查看系统中的存储池

1
pool-list  --details  /或者 --all

  

 

      2.查看vm存储池的信息

1
pool-info vm

  

 

      3.查看vm存储池中的卷信息

1
vol-list vm

  

 

     4.创建基于目录的存储池 dir:Filesystem Directory

        1.通过virsh创建

1
2
3
pool-define-as test1 dir --target '/kvm-vm/dirpool/'    创建储存池
pool-build  test1  构建池 test1
pool-start test1   池 test1 已启动<br>pool-autostart  test1  池 test1 标记为自动启动

  

 

     5.创建基于分区的存储池 fs:Pre-Formatted Block Device

        Libvirtd会自动挂载mount分区

         1.查看硬盘

1
lsblk

  

 

        2.做物理卷和卷组

1
2
3
4
pvcreate /dev/sdb
vgcreate  vgpool /dev/sdb
pvdisplay
vgs

  

 

        

 

    2.创建

1
2
pool-define-as  vgpool logical --source-name vgpool --target  /dev/vgpool      定义池 vgpool
pool-start vgpool       池 vgpool 已启动<br>pool-autostart  vgpool    池 vgpool 标记为自动启动

  

   6.基于LVM的存储池要求使用全部磁盘分区

      1.  安装主键

1
yum -y install rpcbind nfs-utils  客户端和主端都要做

  2.启动程序

1
2
3
4
5
6
7
8
9
主:
systemctl start rpcbind   主服务器只需要启动这一个
systemctl enable rpcbind
从:
systemctl start rpcbind
systemctl enable rpcbind
 
systemctl start nfs-server.service
systemctl enable nfs-server.service

  连接nfs时要么关闭防火墙 连接端口  要么去nfs配置文件固定端口(nfs初始状态端口随机的)

    3.创建lvm

1
2
3
4
5
pvcreate  /dev/sdb
vgcreate  nfsvg /dev/sdb
vgdisplay nfsvg
lvcreate  -n  nfslv1 -l 5119 nfsvg
lvs<br>mkfs.xfs /dev/nfsvg/nfslv1

  

   4.挂载lvm

1
2
3
mkdir /mnt/nfs
mount /dev/nfsvg/nfslv1  /mnt/nfs/   挂载位置
 vim /etc/fstab    设置开机自启动

 

        

 

   添加权限

          vim /etc/exports  

        

   重启 rpcbind、nfs-server.service 服务

  查看是否生效

1
2
3
exportfs -av
showmount -e 192.174.1.11   远程验证
mount -t nfs 192.174.1.11:/mnt/nfs /mnt/  远程挂载上验证

  

 

   5.创建储存池

1
2
3
4
pool-define-as  nfspool netfs --source-host 192.174.1.11 --source-path /mnt/nfs --target /kvm-vm/nspool/     定义池
pool-build nfspool  构建池
pool-start nfspool  启动池
pool-autostart  nfspool  设置自启动池

  

 

 

 

 六、存储卷管理

       1.储存池概念

         存储池被分割为存储卷(Storage Volume)

         存储卷

                文件

                块设备(如物理分区、LVM逻辑卷等)

                Libvirt管理的其他类型存储的抽象

         

 

         2.存储卷管理

            创建

            克隆

            删除

           移动

           修改大小

七、创建储存卷

         1.查看存储池VM中的卷

1
vol-list vm

   2.创建一个qcow2格式的卷

1
vol-create-as vgpool vspool.qcow2 8G --format qcow2

  3.建立基于LVM的卷

1
vol-create-as  vgpool vgvm1 8G
posted @ 2020-07-28 08:40  CloudNativeBJ  阅读(942)  评论(0编辑  收藏  举报