存储池

由libvirt管理的文件、目录或存储设备,提供给虚拟机使用。存储池被分为存储卷,这些存储卷保存虚拟镜像或连接到虚拟机作为附加存储。

命令:

virsh存储池的相关命令

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

存储卷的相关命令

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. 创建test1池,目录在/test1
格式:  virsh pool-define-as <pool> <type> --target <dir>       
 
       virsh pool-define-as test1 dir --target /test1
  1. 构建test1池
格式: virsh pool-build <pool>
     
  	   virsh pool-build test1
  1. 启动test1池
格式: virsh pool-start <pool>

     virsh pool-start test1
  1. 自启动test1池
格式: virsh pool-autostart <pool>
     virsh pool-autostart test1
  1. 查看test1的状态
virsh pool-list --all
   test1                active     yes
  1. 查看具体存储池vm的信息
格式:  virsh pool-info <pool>
  1. 查看存储池VM中的卷
virsh vol-list <pool>
  1. 查看虚拟机的磁盘设备
virsh domblklist <domain>
  1. 为test1池创建磁盘文件
virsh vol-create -as <pool> <diskfilename> <size>  --format <disktype>
 virsh vol-create-as test1 test1.qcow2 10G  --format qcow2
  1. 使用test1磁盘下的磁盘文件,安装系统
virt-install -n test1 -r 1024 -l /kvm/iso/centos7.iso --disk /test1/test1.qcow2 --nographics -x 'console=ttyS0'

以分区创建test2池

以logical创建test2池

  1. 查看刚刚添加的硬盘(sdb)
[root@localhost ~]# lsblk
   NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
   sda               8:0    0  100G  0 disk 
   ├─sda1            8:1    0    1G  0 part /boot
   └─sda2            8:2    0   99G  0 part 
   ├─centos-root 253:0    0   50G  0 lvm  /
   ├─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
   └─centos-home 253:2    0 45.1G  0 lvm  /home
   sdb               8:16   0   20G  0 disk 
   sr0              11:0    1  9.5G  0 rom
创建物理卷
   # pvcreate /dev/sdb
创建卷组
   #vgcreate test2 /dev/sdb
查看卷组
  # vgs
    VG     #PV #LV #SN Attr   VSize   VFree  
      centos   1   3   0 wz--n- <99.00g   4.00m
      test2    1   0   0 wz--n- <20.00g <20.00g
  1. 创建test2池,目录在/dev/test2下
virsh pool-define-as test2 logical --target /dev/test2
  1. 开启test2池
virsh pool-start test2
  1. 自启动test2池
virsh pool-autostart test2
  1. 查看test2池状态
virsh pool-list --all
 test2                active     yes
  1. 创建test2存储卷,创建test2.qcow2磁盘文件(磁盘文件在/dev/test2/)
virsh vol-create-as test2 test2.qcow2 10G --format qcow2
  1. 使用刚刚创建test2.qcow2磁盘文件安装系统
virt-install -n test2 -r 1024 --vcpus 1 -l /kvm/iso/centos7.iso  --disk /dev/test2/test2.qcow2 --nographics -x 'console=ttyS0'

使用nfs仓库常见池(另开一台服务器添加一块新硬盘)

  1. 创建物理卷
pvcreate /dev/sdb
  1. 创建卷组
vgcreate test3 /dev/sdb
  1. 查看卷组详细信息(查看total pe)
vgdisplay test3
 Total PE 12799
  1. 创建逻辑卷
lvcreate -l 12799 -n test3 /dev/test3
  1. 查看逻辑卷
lvs
...
 test3 test3  -wi-a----- <50.00g
  1. 格式化逻辑卷
mkfs -t xfs /dev/test3/test3
  1. 安装nfs和rpcbind
yum -y install nfs-utils rpcbind
  1. 启动rpcbind
systemctl start rpcbind && systemctl enable rpcbind
  1. 启动nfs
systemctl start nfs &&  systemctl enable nfs
  1. 创建nfs共享目录
mkdir /mnt/nfs
echo "/mnt/nfs *(rw,sync,no_root_squash)" >> /etc/exports
exportfs -av
exporting *:/mnt/nfs
  1. 将逻辑卷挂载到nfs目录下
mount /dev/test3/test3 /mnt/nfs/
  1. 永久挂载
echo "/dev/test3/test3 /mnt/nfs xfs  default 0 0" >> /etc/fstab
  1. kvm宿主机也需要安装rpcbind
rpm -q rpcbind
rpcbind-0.2.0-49.el7.x86_64
  1. 启动 rpcbind
systemctl start rpcbind && systemctl enable rpcbind
  1. 检测是否可以查看到nfs服务器
格式: showmount -e nfs服务器IP
      showmount -e 192.168.42.2
  1. 创建test3池,以netfs类型创建(把远程的nfs挂载到本地/mnt下)
virsh pool-define-as test3 netfs --source-host 192.168.42.1 --source-path /mnt/nfs --target /mnt
  1. 构建test3池
virsh pool-build test3
  1. 开启test3池
virsh pool-start test3
  1. 自启动test3池
virsh pool-autostart test3
  1. 查看test3池的状态
virsh pool-list --all
  test3                active     yes
  1. 创建test3池的存储卷,并创建一块磁盘test3.qcow2,
virsh vol-create-as test3 test3.qcow2 10G --format qcow2
  1. 在nfs服务器上查看一下是否有1没有test3.qcow2
ls /mnt/nfs/
  test3.qcow2
  1. 使用test3.qcow2磁盘安装系统(关闭防火墙和selinux)
virt-install -n test3 -r 1024 --vcpus 1 -l /kvm/iso/centos7.iso  --disk /mnt/test3.qcow2 --nographics -x 'console=ttyS0'