分类: 虚拟化
2018-04-03 10:32:09
【摘要】
在某些时候VMware虚拟化平台因为特别的原因可能出现误删除Datastore或Datastore出现无法访问,其中,Datestore无法访问的情况可能是分区表丢失也可能是其他原因,需要具体分析,误删除的行为则相当于VMFS分区表丢失了,本文将针对这种情况进行描述恢复的方法,方法适用于vSphere5.x,vSphere6.x,此处平台采用的是vSphere6.5版本。
本文转自——学领未来
【正文】
登录到vSphere Web Client,如下,将名字为iSCSI-3的存储LUN删除。
如下datastore名为iSCSI-3的LUN已经删除,不在存储列表中。
虽然在存储列表中已经看不到该存储,其实在存储设备中还是能看到该存储的设备名称及容量。
恢复过程需要在ESXi的命令行界面进行操作,可以使用连接工具或直接在ESXi主机上通过快捷键ALT+F1调出命令界面进行操作,此处采用连接工具,如下找一台主机,点击配置—安全配置文件--编辑。
浏览到SHH服务,启动SHH服务。
使用连接工具连接到ESXi主机,此处使用PUTTY工具,并使用管理员账号登录。
如下,通过命令ls /dev/disks,查看磁盘列表信息,从图中可以看到设备naa.60003ff44dc75adcbd262d8fa4bba361是上面我们在存储设备中看到的设备名,此设备已经没有分区表,如果有分区表,会像设备naa60003ff44dc75adc8971cfa515f3bc42那样,在后面接有:1的分区数。
使用partedUtil getptbl分别查看设备naa.60003ff44dc75adcbd262d8fa4bba361及正常设备naa. 60003ff44dc75adc9fe0c435323cd060的分区信息,对比信息,可以知道,正常设备中包含“1 2048 20971486 AA31E02A400F11DB9590000C2911D1B8 VMFS 0”,这条信息其实就是分区表信息,因此我们需要给设备naa.60003ff44dc75adcbd262d8fa4bba361添加上分区表信息。
关于分区表信息“1 2048 20971486 AA31E02A400F11DB9590000C2911D1B8 VMFS 0”,其中1表示的是第一个分区,主分区,2048表示的是分区开始的块,20971486表示分区结束的块,也可以通过如下命令partedUtil getUsableSectors查看分区结束的块,如下所示,查看到设备naa.60003ff44dc75adcbd262d8fa4bba361结束的块是62914526,AA31E02A400F11DB9590000C2911D1B8表示的是VMFS的GUID,vSphere5.x和vSphere6.x的VMFS GUID都是AA31E02A400F11DB9590000C2911D1B8。
通过命令:
partedUtil setptbl /vmfs/devices/disks/ naa.60003ff44dc75adcbd262d8fa4bba361 gpt “1 2048 62914526 AA31E02A400F11DB9590000C2911D1B8 0”
创建本区表信息,如下所示:
再运行命令vmkfstools –V 是主机对存储设备进行扫描:
回到ESXi主机存储界面,如下所示已经能看到删除的datastore,但是是卸载状态。
在存储列表界面,右键将对应的存储进行挂载。
浏览存储iSCSI-3里面的内容,如下,内容都还在,没有丢失。
根据测试结果,如果误删除的datastore是挂载到多台主机上的,则在一台主机上恢复完毕后,需要在其他主机上运行命令vmkfstools –V 对存储设备进行扫描,再同样的进行挂载的操作。
假如是误删除导致datastroe出现问题,虽然我们可以通过以上的方式进行恢复,不丢失数据,但是过程还是相对繁琐,而且要是生产环境的话,还可能导致业务的中断,所以日常管理vSphere中,对于一些“删除”,“移动”等操作,务必要确认清楚关联关系,要谨慎对待此类操作。