理解虚拟磁盘

虚拟磁盘有两种类型:精简置备预分配。在块设备类型的存储上,预分配的磁盘是
RAW 格式的,精简置备的磁盘是 Qcow2 格式的。

预分配
预分配的虚拟磁盘在创建的时候系统就分配了虚拟磁盘大小的空间。后端存储设备(基于文件/块设备)与虚拟机之间没有中间层存在。因此,该类型的磁盘具有很好的性能。

上述操作在
SAN(iSCSI,FCP)中通过直接创建一个与虚拟磁盘大小相同的块设备来完成。在
NFS 等存储中,通过在后端文件中填 0 来完成。系统假设在 NFS
存储中后端文件格式不是 Qcow2,并且填充的 0
不会被当作重复项消除(如果这个假设有误,在 NFS
存储类型的虚拟磁盘的选择中,不要选择预分配)。

精简置备
对于稀疏虚拟磁盘,后端存储不用在创建时就分配所有的空间,可以在运行时按需分配。在假设大部分的磁盘不会被完全利用的情况下,存储能够进行超分配,从而能够存储容量更高效地被利用。但是该机制需要后端存储系统不断监控虚拟磁盘的写操作,这样会造成一定的性能问题。对于
NFS 后端存储, 虚拟磁盘就是一个文件。对于 SAN
来说,虚拟磁盘开始创建的块设备比用户定义的磁盘大小要小,系统不断监控该磁盘的写操作,然后按需分配存储。因此这并不要求底层的存储设备提供支持。

下表描述了所有可能的存储类型和磁盘格式间的组合:

后端存储 磁盘格式 磁盘类型 备注
NFS RAW 预分配 一个初始大小和虚拟磁盘定义大小一样的文件,没有格式。
NFS RAW 稀疏 一个初始大小接近于 0 的文件,没有格式。
NFS Qcow2 稀疏 一个初始大小接近于 0 的文件,格式为 RAW。之后的存储层将会是 Qcow2 格式。
SAN RAW 预分配 一个初始大小和虚拟磁盘定义大小一样的块设备,没有格式。
SAN Qcow2 预分配 一个初始大小和虚拟磁盘定义大小一样的块设备,Qcow2 格式。
SAN Qcow2 稀疏 一个初始大小(目前为 1GB)远小于虚拟磁盘定义大小的块设备,Qcow2 格式,额外的存储空间按需分配(目前为每次增加 1GB)。