五,管理虚拟存储 5.1 虚拟磁盘概述 5.1.1 虚拟化项目中存储的注意事项
[x] 存储的性能几乎总是虚拟化的瓶颈
[x] 通过多个硬盘驱动以分布磁盘I/O来实现存储解决方案
[x] 考虑部署集中化的SAN/NFS来实现高可用性和实时迁移
5.1.2 KVM存储模式[x] 基于文件系统的存储
dir:Filesystem Directory 虚拟文件系统目录
fs:Pre-Formatted Block Device
netfs:Network Exported Directory
[x] 基于设备的存储
Disk:Physical Disk Device
Iscsi:iSCSI Target
logical:LVM Volume Group
5.1.3 虚拟磁盘类型[x] 固定 Fixed
在配置时,指定磁盘大小
不管在虚拟磁盘上实际存储多少数据,都将占用相同大小主机磁盘空间
[x] 动态 Dynamic
增长到最大容量,但是只根据需求使用更多的空间
[x] 差异 Differencing
因为创建是差异磁盘,所以只保存变更的数据
例如,将操作系统安装在父盘,然后创建差异化磁盘来执行进一步配置
5.1.4 KVM支持的虚拟磁盘类型[x] raw
这并非是一种真正的磁盘格式,而是代表虚拟机所使用的原始镜像
它并不存储元数据,因此可以作为保证虚拟机兼容性的候选方案。然而,也正因为它不存储元数据,因此不能自持某些高级特性,比如快照和压缩等。
格式简单,容易转换为其他的格式。需要文件系统的支持才能支持sparse file
[x] cow:copy-on-write格式,昙花一现
[x] qcow:QEMU早期的copy-on-write格式,过渡性方案
[x] qcow2
按需进行分配磁盘空间,不管文件系统是否支持
支持快照
支持zlib的磁盘压缩
支持AES的加密
[x] vmdk(Virtual Machine Disk)
VMware环境当中默认使用的磁盘格式
[x] vhd \ vhdx(Virtual Hard Disk)
微软默认采用的文件格式
[x] vdi(VirtualBox)
[x] 可以通过qemu-img --help查看支持的格式
[root@localhost ~]# qemu-img --help | grep Supported Supported formats: vvfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftp https http cloop bochs blkverify blkdebug 5.2 使用qemu-img管理虚拟磁盘 5.2.1 qemu-img概述[x] qemu-img 是一个功能强制磁盘镜像管理工具
[x] qemu-img --help 包括以下功能
check 检查完整性
create 创建镜像
commit 提交更改
compare 比较
convert 转换
info 获得信息
map 映射
snapshot 快照管理
rebase 在已有的镜像的基础上创建新的镜像
resize 调整大小
amend 修订镜像格式选项
5.2.2 创建虚拟磁盘 [root@localhost ~]# qemu-img | grep create create [-q] [-f fmt] [-o options] filename [size] #创建磁盘的命令格式 contain only zeros for qemu-img to create a sparse image during \'-n\' skips the target volume creation (useful if the volume is created \'snapshot\' is the name of the snapshot to create, apply or delete \'-c\' creates a snapshot [root@localhost ~]# qemu-img create t1.img 1g #只输入磁盘名和大小创建 Formatting \'t1.img\', fmt=raw size=1073741824 #默认的磁盘格式fmt=raw [root@localhost ~]# qemu-img info t1.img #查看虚拟磁盘的信息 image: t1.img #文件名称 file format: raw #文件格式 virtual size: 1.0G (1073741824 bytes) #虚拟磁盘大小 disk size: 0 #磁盘空间尺寸是0???? [root@localhost ~]# ll -h t1.img -rw-r--r-- 1 root root 1.0G 5月 2 11:24 t1.img #ll查看磁盘是1G没错 [root@localhost ~]# du -sh t1.img #但我们用du查看一下,发现磁盘真实空间的占用还真是0 0 t1.img根据以上测试,我们发现默认情况下qemu-img创建的磁盘文件的类型是动态的(Dynamic 空洞)会根据真实存放数据的大小进行动态扩容直到磁盘空间设定值的大小。
#假如我们想看一下各种磁盘格式所附带的-o option都有什么,我们可以这么做 [root@localhost ~]# qemu-img create -f raw -o ? #raw格式磁盘只有一个尺寸大小选项 Supported options: size Virtual disk size [root@localhost ~]# qemu-img create -f qcow2 -o? #qcow2则有很多选项 Supported options: size Virtual disk size compat Compatibility level (0.10 or 1.1) backing_file File name of a base image #用于指定后端镜像文件 backing_fmt Image format of the base image #设置后端镜像的镜像格式 encryption Encrypt the image #用于设置加密 cluster_size qcow2 cluster size #设置镜像中的簇大小,取值在512到2M之间,默认值64K preallocation Preallocation mode (allowed values: off, metadata, falloc, full) #设置镜像文件空间的预分配模式 lazy_refcounts Postpone refcount updates