作为IT人员,不知道你有没有经历过手抖,一不小心删除了数据库,文件等
本次详细为大家介绍在vmware vsphere上如何恢复被删除的vmfs数据存储及vmfs数据存储分区丢失,如何恢复
在开始之前我们先”删库跑路”,当然这是测试环境,小编还没有那么大胆。
环境介绍:
此次测试环境为7.0版本,数据存储为新添加的本地磁盘(所有传统存储一样)
下面我们先手滑删除存储
重点我是删除存储,而不是卸载,为了证明真实性,继续
新建存储能看到我刚才删除的数据存储(正常情况下如果没有删除数据存储,新建存储是不能识别到该数据存储的)
OK 到现在我们已经删除了数据存储,首先,不要惊慌。请勿再次从 vSphere 界面重新创建 VMFS 数据存储,或执行任何其他能够覆盖磁盘 (LUN) 上先前 VMFS 分区的数据的操作。
打开 vCenter 客户端界面,转到存储 -> 设备,然后在列表中找到之前连接的 VMFS 数据存储的磁盘/LUN。获取磁盘的完整路径(带有naa标识符或mpx开头)。在我的屏幕截图中,它是:mpx.vmhba0:C0:T1:L0
Ssh进入主机
获取分区表,注意已经没有显示为vmfs文件系统
然后您必须获取磁盘上 VMFS 分区的第一个和最后一个块。
要显示 ESXi 主机中所有可用分区的摘要并找到已删除 VMFS 分区的第一个块,请在 ESXi cli 中运行以下脚本:
offset=”128 2048″; for dev in `esxcfg-scsidevs -l | grep “Console Device:” | awk {‘print $3’}`; do disk=$dev; echo $disk; partedUtil getptbl $disk; { for i in `echo $offset`; do echo “Checking offset found at $i:”; hexdump -n4 -s $((0x100000+(512*$i))) $disk; hexdump -n4 -s $((0x1300000+(512*$i))) $disk; hexdump -C -n 128 -s $((0x130001d + (512*$i))) $disk; done; } | grep -B 1 -A 5 d00d; echo “———————“; done
可以看到我的起始分区为2048
在本例中,我们显示了有关已删除分区(testVMFS)的信息,并获得了该分区的第一个块的编号:2048。
现在我们需要获取磁盘上 VMFS 分区的最后一个块:209715166
然后获取 VMFS 分区的分区表 GUID。它始终是
AA31E02A400F11DB9590000C2911D1B8。
您可以使用以下命令显示所有可能的分区表 GUID:
partedUtil showGuids
所以我们得到了以下信息:
LUN ID — naa.60003ff44dc75adc87daa4e08f467565
开始块- 2048
最后块– 209715166
GPT GUID – AA31E02A400F11DB9590000C2911D1B8
然后使用您获得的信息在磁盘上创建一个分区表:
partedUtil setptbl /vmfs/devices/disks/ mpx.vmhba0:C0:T1:L0 gpt “1 2048 209715166 AA31E02A400F11DB9590000C2911D1B8 0”
创建一个新的分区
再次检查磁盘上的分区并确保 VMFS 分区现在可见:
partedUtil getptbl /vmfs/devices/disks/ mpx.vmhba0:C0:T1:L0
可以看到vmfs信息已经出来了
现在您需要挂载 VMFS 数据存储:
vmkfstools -V
esxcli storage core adapter rescan –all
重新扫描磁盘
存储 已经出来了
但是不能访问数据,
别急需要挂载存储
可以看到数据已经全部出来了
Vmfs分区丢失也是一样的操作
谁能正常显示存储,但是容量已经为0 且不能正常访问数据
重新设置一下分区
现在您需要挂载 VMFS 数据存储:
vmkfstools -V
esxcli storage core adapter rescan –all
重新扫描磁盘
数据正常可访