KVM存储池与存储卷

存储池

kvm存储模式

基于文件系统的存储

dir:Filesystem Directory
fs:Pre-Formatted Block Device
netfs:Network Exported Directory

基于设备的存储

Disk:Physical Disk Device
Iscsi:iSCSI Target
logical:LVM Volume Group**

通过存储池来简介存储的管理

虚拟磁盘文件

  当系统创建KVM虚拟机的时候,默认使用虚拟磁盘文件作为后端存储。安装后,虚拟机认为在使用真实的磁盘,但实际上看到的是用于模拟硬盘的虚拟磁盘文件。这一额外的文件系统层会降低系统速度。
  当然,基于磁盘镜像的虚拟磁盘并非全无益处,磁盘文件系统可以很轻松地用于其它的KVM虚拟化宿主机。但是如果您希望优化KVM虚拟化性能,最好考虑其它的存储方式。

基于文件系统的KVM存储

  在安装KVM宿主机时,可选文件系统为dir(directory)或fs(formatted block storage)
作为初始KVM存储格式。默认选项为dir,用户指定本地文件系统中的一个目录用于创建磁盘镜像文件。
  fs选项可以允许用户指定某个格式化文件系统的名称,把它作为专用的磁盘镜像文件存储。两种KVM存储选项之间最主要的区别在于:fs文件系统不需要挂载到某个特定的分区。
  两种选项所指定的文件系统,都可以是本地文件系统或位于SAN上某个物理宿主机上的网络文件系统。后者具备一定的优势,因为SAN可以很轻易地实现多个主机同时访问,而本地磁盘或文件系统则无法实现。
  还有一种基于文件的磁盘存储方式是netfs,用户可以指定一个网络文件系统的名称,如Samba.用这种方式作为KVM存储很方便,因为这样很容易访问到位于其它服务器上的文件系统,同时用户也可以通过多台宿主机访问磁盘文件。
  所有的这些基于文件的KVM存储方式都有一个缺点:文件系统固有缺陷。因为虚拟机的磁盘文件不能直接读取或写入KVM存储设备,而是写入宿主机OS之上的文件系统。这也就意味着在访问和写入文件时中间增加了额外一层,这通常会降低性能。所以,如果您希望寻找KVM虚拟化性能最优方案,最好考虑基于设备的存储。

基于设备的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,可以很容易的配置成多个主机同时访问某个逻辑卷。

使用KVM存储池

  为简化KVM存储管理的目的,可以创建存储池。在宿主机上创建存储池,可以简化KVM存储设备的管理。采用存储池的方式还可以实现对提前预留的存储空间的分配。这种策略对于大型应用环境很有效,存储管理员和创建虚拟机的管理经常不是同一个人。这样,在创建首台虚拟机之前先完成KVM存储池的创建是很好的方法。

存储池管理

存储池的基本概念
  存储池是一个由libvirt管理的文件、目录或存储设备,提供给虚拟机使用。存储池被分为存储卷,这些存储卷保存虚拟镜像或连接到虚拟机作为附加存储。libvirt通过存储池
的形式对存储进行统一管理、简化操作。对于虚拟机操作来说,存储池和卷并不是必需的。支持以下类型存储池:

	dir: Filesystem Directory
	disk: Physical Disk Device
	fs: Pre-Formatted Block Device
	gluster: Gluster FileSystem
	iscsi: iSCSI Target
	logical: LVM Volume Group
	mpath: Multipath Device Enumerator
	netfs: Network Export Directory
	rbd: RADOS Block Device/Ceph
	scsi: SCSI Host Adapter
	sheepdog: Sheepdog Filesystem

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

virsh中的和存储卷相关命令

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 			擦除卷

创建基于目录的存储池

通过virsh创建

mkdir /kvm-vm/dirpool
virsh pool-define-as  dirpool dir --target  /kvm-vm/dirpool
virsh pool-build dirpool
virsh pool-start dirpool
virsh pool-autostart dirpool

创建基于LVM的存储池

基于LVM的存储池要求使用全部磁盘分区
创建存储池时,首先准备一个vg,不需逻辑卷

pvcreate /dev/sdb
vgcreate  vg1  /dev/sdb
virsh pool-define-as  vg1 logical --source-name=vg1 --target=/dev/vg1
virsh pool-build vg1
virsh pool-start vg1
virsh pool-autostart vg1

基于NFS的存储池

连接一台新的虚拟机192.168.19.101
在所有主机上安装相关的包

yum  -y  install rpcbind nfs-utils

建议固定nfs的端口号

vim /etc/sysconfig/nfs

在101上面做

做逻辑卷

pvcreate /dev/sdb
vgcreate vg2 /dev/sdb
vgdisplay
#VG Name               vg2
#Total PE              5119
lvcreate -n vg2 -l 5119 vg2
mkfs.xfs /dev/vg2/vg2

挂载卷

mkdir /mnt/vg2
mount  /dev/vg2/vg2  /mnt/vg2
vim /etc/fstab
#/dev/vg2/vg2           /mnt/vg2  xfs defaults   0  0

设置共享权限

vim /etc/exports
/mnt/vg2 *(rw,sync,no_root_squash)

启动服务

systemctl start rpcbind
systemctl start nfs-server.service
systemctl enable nfs-server.service
systemctl enable rpcbind

开放端口

在kvm上做

mkdir /kvm-vm/vg2pool
virsh pool-define-as  vg2pool  netfs --source-host 192.168.19.101  --source-path /mnt/vg2 --target /kvm-vm/vg2pool/
                        名字     类型           目标                        						挂载到本地
virsh pool-build vg2pool
virsh pool-start vg2pool
virsh pool-autostart vg2pool

存储卷

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			根据卷的key或路径返回存储池
vol-resize			调整卷大小
vol-upload			上传文件内容到一个卷
vol-wipe  			擦一个卷

创建一个qcow2格式的卷

virsh vol-create-as  dirpool  name.qcow2 1G --format qcow2
virsh vol-list dirpool
#名称               路径                                  
#name.qcow2           /kvm-vm/dirpool/name.qcow2 

创建一个基于nfs的卷

virsh vol-create-as vg2pool  name1.qcow2 1G  --format qcow2
virsh vol-list vg2pool
#名称               路径 
#name1.qcow2          /kvm-vm/vg2pool/name1.qcow2 

创建一个基于lvm的卷

virsh vol-create-as  vg1 vg1-vol 1G
virsh vol-list vg1
名称               路径 
vg1-vol              /dev/vg1/vg1-vol 

克隆

 virt-clone -o test1 -n nfsvm  -f /kvm-vm/vg2pool/vg2-clone.qcow2
               源主机     克隆机                     文件位置
virsh start nfsvm

lvm安装主机

virsh vol-list vg1
#名称               路径 
#vg1-vol              /dev/vg1/vg1-vol 
virt-install -n vg2vm1 -r 512 --vcpus 1 -l /iso/CentOS-7-x86_64-DVD-1611.iso  --disk vol=vg1/vg1-vol --nographics -x 'console=ttyS0'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值