已索引

存储控制器

  • SCSI:

    • BusLogic Parallel
    • LSI Logic Parallel
    • LSI Logic SAS(默认的 SCSI 控制器,完全虚拟的,不是半虚拟化的,一个控制器可接16-1=15个磁盘)
    • VMware Paravirutal SCSI (推荐这个,性能更好,能挂接的磁盘也更多,一个控制器可接 64-1=63个磁盘)
  • AHCI SATA controller(SATA盘用这个,只有完全虚拟化的接入模式)
  • Virutal NVMe(SSD用这个,6.7之后添加的控制器类型)

磁盘模式

  • 从属模式:支持快照,是磁盘模式的默认设置
  • 独立模式:不支持快照,可将不做快照的磁盘设置为独立模式

    • 独立-持久:写入持久模式的磁盘的所有数据都会永久性地写入磁盘
    • 独立-非持久:关闭或才重置虚拟机时,在非持久模式下对更改将丢失,比如虚拟桌面应用场景

磁盘置备模式

  • 精简置备(Thin-Provisioned): VMs use storage space as needed.
  • 厚置备(Thick-Provisioned): uses all the defined disk space at the creation of the virtual disk.

    • 立即置零(eager zeroed): every block is prefilled with a zero
    • 延迟置零(lazy zeroed, 默认): every block is filled with a zero when data is written to the block. (先分配指定大小的空间,使用多少,置零多少)

精简置备就是不立即分配指定大小的磁盘空间,使用多少分配多少,厚置备就是立即分配所有空间。

对于精简置备如果大量虚拟机突然发生大量读写,实际使用空间需求可能会超过数据存储的大小,此时选择厚置备更好,厚置备不存在超分的问题。另外,由于精简置备写的比较分散,它的读取效率没有厚置备好(写没有影响,直接写就行了)。如果虚拟机变化不大,选择精简置备。

精简置备磁盘空间回收

上层虚拟机删除的文件,在磁盘上只是被标记为删除,实际上并没有释放空间,这对精简置备是一个比较严重的问题(对于厚置备问题不大)。VMFS 5.0 的时候,需要手动运行 unmap 命令来回收那些已经标记为删除但是没有清空的磁盘空间。VMFS 6.0 开始会自动回收。

思考:unmap是否会回收那些已经分配但未使用的空间?
unmap 是为精简置备而设计,对于精简置备,使用多少分配多少,所以,不存在分配但未使用的空间,不用考虑这个问题。

通过 unmap 手工回收空间的方法:
注意:如果您是在 ESXi 6.5 中使用 VMFS6,则该方法不适用。
要回收精简置设备的 VMFS 数据存储上的未用存储块,可运行以下命令:
# esxcli storage vmfs unmap --volume-label=volume_label|--volume-uuid=volume_uuid --reclaim-unit=number
--reclaim-unit指定每次迭代 UNMAP 的 VMFS 块数。该参数为可选项。如果未指定此参数,则该命令使用默认值 200。

如果 UNMAP 操作中断(例如由于按下 CTRL-C),可能会在 VMFS 数据存储的根位置留下临时文件(不会超出 --reclaim-unit 的大小)。但当针对数据存储再次运行该命令时,如果该命令成功完成,临时文件将被删除。

修改磁盘置备模式

点击虚拟机的磁盘文件(就是那个大的 vmdk 文件),然后点击 "Inflate" 按钮,可把虚拟机的磁盘从原来的精简置备变成立即置零后置备。也可以通过迁移来把厚置备变成精简置备,或者把精简置备变成厚置备。

-- By 许望(RHCA、OCM、VCP)
最后修改:2024 年 08 月 15 日 03 : 09 PM
如果觉得我的文章对你有用,请随意赞赏