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