故障描述
折腾服务器最难避免的就是硬盘扩容和转移,最近扩容硬盘时遇到不少疑难杂症,把 ESXi 的 vmdk 硬盘挂载到另一台虚拟机或者扩容后均出现了以下故障:
1 |
|


没办法,找找 VMware 官方的文档吧,这里有一个跟我们描述问题相同的。

TBZ represents the number of blocks in the disk remaining To Be Zeroed.
原来 TBZ 是 To Be Zeroed。指的是磁盘还有一些块没有置零,emmmm,这好像与置备模式有关
ESXi 在创建虚拟硬盘有三种置备模式:
- 精简置备。按需分配空间,用多少占多少,上限为硬盘实际大小。
- 厚置备,延迟置零。也称作 zeroedthick,提前分配空间,写入时才置零,初始化较快。
- 厚置备,置零。也称作 eagerzeroedthick,分配空间并预先置零,写入性能更高。
至此硬盘无法扩容和转移的原因就清楚了,原来我们硬盘的置备模式如果是 精简置备 或者是 厚置备延迟置零 时,有可能在磁盘扩容或迁移到另一台虚拟机操作后无法开启,需要将 硬盘置备模式转换为厚置备置零 才可以。
问题处理
首先,请先确认你的 虚拟磁盘类型 和虚拟磁盘所在的 物理磁盘名称,虚拟磁盘 vmdk 的路径 等。
例如,我这里的磁盘类型是厚置备延迟置零,物理磁盘名称是 disk3000,虚拟磁盘 vmdk 的路径是 fnOS/fnOS_2.vmdk

之后,在 ESXi 控制台启用 SSH

在终端下登录,输入你的 ESXi 管理员密码
1 |
|

查看磁盘的挂载点,使用如下命令
1 |
|
我们找到了挂载点 /vmfs/volumes/disk3000,现在和虚拟磁盘 vmdk 的路径 fnOS/fnOS_2.vmdk 连接在一起,即 /vmfs/volumes/disk3000/fnOS/fnOS_2.vmdk
此外,为了确定虚拟磁盘 vmdk 是 zeroedthick(厚置备延迟置零) 还是 eagerzeroedthick(厚置备置零),需要运行以下命令:
$有 [VMFS Z- …] 标识的为 zeroedthick(厚置备延迟置零),全是 [VMFS -- …] 的为 eagerzeroedthick (厚置备置零)
最后,执行如下命令将 厚置备延迟置零 转换为 厚置备置零

耐心等待即可,机械硬盘的耗时会比较长,整个过程相当于把整个硬盘没有数据的地方写满零。
再重新启动虚拟机,就可以发现能成功挂载磁盘啦~
The End.