在vSAN 6.5.0环境中,将Oracle RAC虚拟机的存储迁移到vSAN数据存储后,共享磁盘在迁移后全部变成了“精简置备”类型,如下所示:
注:从vSAN 6.7 Patch 01开始,vSAN上的Oracle RAC 不再要求共享的 VMDKs为厚置备置零磁盘(Eager Zeroed Thick,OSR=100) 格式来启用 multi-writer模式。
在启动虚拟机时报以下错误:
按照KB 2014832文档中的内容在“数据存储浏览器”中对共享磁盘进行扩充(Inflate):
扩充完成后虚拟磁盘变成了“厚置备延迟置零”(Lazy Zeroed Thick)”格式,不是要求的厚置备置零磁盘格式(Eager Zeroed Thick)格式,而且虚拟磁盘在虚拟机的配置中还是显示为“精简置备”,即使将虚拟磁盘从虚拟机中删除再添加进来也还是显示为“精简置备”格式。
尝试通过KB 2014832描述的存储迁移的方式将虚拟机磁盘迁移到其它非vSAN存储上来将虚拟磁盘转换为“厚置备快速置零”(Eager Zeroed Thick)格式。
存储迁移完成后,格式转换为了“厚置备快速置零”(Eager Zeroed Thick)格式,但是再次将存储迁移回vSAN存储后,虚拟磁盘还是显示为“精简置备”格式。
注:将存储迁移到vSAN之后,flat vmdk被转换成vSAN对象,虚拟机目录下不再存在flat vmdk。
使用KB 1011170中的命令“vmkfstools -D”确认虚拟磁盘是“厚置备快速置零”的格式,但是不知为何在虚拟机的配置中虚拟磁盘就是显示为“精简置备”的格式。
最后,使用vmkfstools命令对vSAN上的虚拟磁盘进行克隆和转换格式的方法将虚拟磁盘克隆到其它目录下:
vmkfstools -i ‘vSAN rac1_7.vmdk’ ‘/vmfs/volumes/vsanDatastore/vSAN rac2/vSAN rac2_7.vmdk’ -d eagerzeroedthick
然后将克隆的虚拟磁盘加入虚拟机后,虚拟磁盘终于正常显示为“厚置备快速置零”的格式,并且可以启用multi-writer模式。
注:克隆虚拟磁盘后,虚拟磁盘的UUID会发生变化,如果在操作系统中使用udev规则来映射ASM磁盘名称,那么需要在ESXi中编辑vmdk描述文件将UUID更改为虚拟磁盘原来的UUID,避免系统启动后ASM磁盘名称失效的情况发生。
参考:
Using Oracle RAC on a vSphere 6.x vSAN Datastore (2121181)
Changing the thick or thin provisioning of a virtual disk (2014832)
Attempts to extend the size of an EagerZeroedThick VMDK from the vSphere Client might result in a LazyZeroedThick VMDK (2054563)
Determining if a VMDK is zeroedthick or eagerzeroedthick (1011170)
Flat VMDK on vSAN
Cloning and converting virtual machine disks with vmkfstools (1028042)