大早上我的一个墨尔本的同事就在折腾虚拟机,他试图把一个5T的虚拟机的磁盘文件扩建到10T,这个本来是个很容易的事情,但是他试图把datastore上的所有剩余空间都分配进去,然后造成的结果就是没法开机了!

错误提示很明显,空间不足,没法创建swap文件。

看看剩余空间,还剩 11 g

比较尴尬的是这个datastore 对应的LUN是在Nimble上面创建的,这个LUN上还开启了dedup和compress的功能,而且还有其他人在上面工作,因此暂时还没法扩展LUN。为了立刻恢复VM,一个最快的方法就是把swap文件挪到其他的datastore上去。

方法如下:

  1. unregister这个VM。 右击虚拟机 -> Remove from Inventory
  2. SSH 登录任意一个主机,浏览到这个虚拟机对应的存储位置
  3. 备份一下当前的vmx文件 copy XX.VMX xxx.VMXBACKUP
  4. 用vi 打开对应的vmx文件,删除这一行,这个稍后重启会自动配置 sched.swap.derivedName = "/vmfs/volumes/5a835f1f-d6b358b5-eda7-9cdc716fde78/MELVP01/MELVP01-80ebfe9a.vswap
  5. 添加一行,注意替换volume下面对应的路径,如果这个对应的路径不存在,会报错,如果需要创建新的目录,自行创建 sched.swap.dir = "/vmfs/volumes/swap_directory_name"
  6. 在web console里面右击vmx文件,重新注册对应的虚拟机
  7. 重启即可

VM恢复之后检查一下新的vswap文件,大小是16G