Dreamer2q Blog
见到,不如不见
Dreamer2q

Code is cheap, talk is expensive

64日志

记一次EXSI断电后无法启动虚拟机经历

创建于 2021-03-29 共 788 字,阅读约 3 分钟 更新于 21-03-29 07:25
浏览 94评论 0

今天早上醒来宿舍断电了,一看电费才知道原来是欠费了。这种情况记得上学期也发生过一次,本以为下次会注意的,但是忙着忙着就忘记电费的问题了,导致了今天这次事件的发生。


起因

昨天,我好不容易解决了上网的问题,今天就给我突然来一次断电,然后开机

image.png

我笑了,我记得之前也出现过这种情况。那时的我,以为使用虚拟硬盘,需要使用 vmkfstool 进行一次克隆成thin模式才能正常使用。这次,我就直接使用打包好的 vmkd 磁盘,忘记了之前的小操作。


其实修复过程很简单,这里记录一下额外的知识点,方便后续回顾。


虚拟磁盘类型

  1. 厚置备延迟置零(zeroed thick) #默认选项

在创建时为虚拟磁盘分配所需空间(真实地占用物理存储空间),当虚拟机在有写入的时,再按量将其置零

  1. 厚置备置零(eager zeroed thick)

在创建时为虚拟磁盘分配所需空间(真实地占用物理存储空间),创建过程中作置零操作,所以创建磁盘时间长。

  1. 精简置备(thin)

无论磁盘分配多大,实际用多少就占用物理存储多少,当虚拟机有写入时,需等待分配空间和置备完成后才能进行操作,对于IO频繁造成性能会有所下降,好处节省了存储空间,但虚拟磁盘vmdk文件随着置备量会只增不减。

vmkfstool 常用操作

先看一下帮助文档

[root@localhost:~] vmkfstools -h
No valid command specified


OPTIONS FOR FILE SYSTEMS:

vmkfstools -C --createfs [vmfs5|vmfs6|vfat]
               -S --setfsname fsName
               -Y --unmapGranularity #[bBsSkKmMgGtT]
               -O --unmapPriority <none|low|medium|high>
           -Z --spanfs span-partition
           -G --growfs grown-partition
   deviceName

           -P --queryfs -h --humanreadable
           -T --upgradevmfs
   vmfsPath
           -y --reclaimBlocks vmfsPath [--reclaimBlocksUnit #blocks]

OPTIONS FOR VIRTUAL DISKS:

vmkfstools -c --createvirtualdisk #[bBsSkKmMgGtT]
               -d --diskformat [zeroedthick
                               |thin
                               |eagerzeroedthick
                               ]
               -a --adaptertype [deprecated]
               -W --objecttype [file|vsan|vvol|pmem|upit]
               --policyFile <fileName>
           -w --writezeros
           -j --inflatedisk
           -k --eagerzero
           -K --punchzero
           -U --deletevirtualdisk
           -E --renamevirtualdisk srcDisk
           -i --clonevirtualdisk srcDisk
               -d --diskformat [zeroedthick
                               |thin
                               |eagerzeroedthick
                               |rdm:<device>|rdmp:<device>
                               |2gbsparse]
               -W --object [file|vsan|vvol]
               --policyFile <fileName>
               -N --avoidnativeclone
           -X --extendvirtualdisk #[bBsSkKmMgGtT]
               [-d --diskformat eagerzeroedthick]
           -M --migratevirtualdisk
           -r --createrdm /vmfs/devices/disks/...
           -q --queryrdm
           -z --createrdmpassthru /vmfs/devices/disks/...
           -v --verbose #
           -g --geometry
           -x --fix [check|repair]
           -e --chainConsistent
           -Q --objecttype name/value pair
           --uniqueblocks childDisk
           --dry-run [-K]
   vmfsPath

OPTIONS FOR DEVICES: 

           -L --lock [reserve|release|lunreset|targetreset|busreset|readkeys|readresv
                     ] /vmfs/devices/disks/...
           -B --breaklock /vmfs/devices/disks/...


OPTIONS FOR VMFS MODULE: 

           --traceConfig [0|1]
           --dataTracing [0|1]
           --traceSize <x> (MB)
vmkfstools -H --help


克隆VMDK磁盘

vmkfstool -i old.vmdk -d thin new.vmdk

# -d 是磁盘类型参数
# 克隆完成后会多一个叫,new-flat.vmdk的磁盘,它们是和在一起的

检查、修复vmdk磁盘

vmkfstool -x check|repair broken.vmdk


修复过程

使用vmfstool自带的修复功能

  1. 检查check
vmkfstool -x check xxx.vmdk

# xxx needs repair balabala...
  1. 执行repair
vmkfstool -x repair xxx.vmdk

# xxx successful


修复完成后即可正常启动虚拟机了


参考链接