如果不小心误删除了VMFS卷,使用partedUtil命令恢复即可。partedUtil是VMware ESXi的命令行实用程序,可以在ESXi上直接操作本地和远程 SAN 磁盘的分区表。

【说明】只有 ESXi 5.x 上的磁盘分区才支持使用 partedUtil 命令行。命令行实用程序 fdisk 不能用于采用 VMFS5 格式的 LUN。本文用于VMware ESXi 5.x、VMware ESXi 6.0格式化为VMFS 5的卷。

当前有一台DELLR 730XD的服务器,其中10块硬盘使用RAID-50划分为2个卷,第1个卷30GB,安装ESXi 6.5.0系统,第2个卷使用剩余空间,大小29.08TB,如图1-1所示。

blob.png

图1-1 VMFS卷

从图1-1中可以看到,这个29.08TB的设备名称为naa.61866da07cda6500209430db1f953ce5;30GB的设备名称是61866da07cda650020942f720a174f8c。

下面我们模拟这个操作(当前是测试机器,请勿在生产机器、有重要数据机器实验,否则由此造成的损失,本文概不负责!)

(1)在“存储设备”中右击29.08TB的存储,右击选择“删除数据存储”,如图1-2所示。

blob.png

图1-2 删除数据存储

(2)在弹出的“确认删除数据存储”对话框中,单击“是”按钮,如图1-3所示。

blob.png

图1-3 确认删除数据存储

(3)此时在“数据存储”列表中已经没有该存储,如图1-4所示。

blob.png

图1-4 无29TB存储

(4)但在“存储设备”列表中仍然可以看到该存储容量及设备名称,如图1-5所示。

blob.png

图1-5 存储设备查看名称

使用SSH登录到ESXi主机,通过命令查看磁盘列表、查看分区信息然、创建分区表。下面一一介绍。

(1)查看磁盘列表,在命令提示符中执行:

ls /vmfs/devices/disks

命令结果如图1-6所示。

blob.png

图1-6 查看磁盘列表

此时可以看到设备名为“naa.61866da07cda6500209430db1f953ce5”已经无分区表,如果有分区表,例如设备名“naa.61866da07cda650020942f720a174f8c”(这是ESXi系统卷,该卷有多个分区),后面会有:1的分区数目及vlm的名称。如果我们要恢复分区表,只要为这个29TB创建分区表即可恢复。

【说明】在图1-6中看到的“naa.500080dc004ff330”是图1-1中的大小为447GB的SSD磁盘,而“naa.500080dc004ff330:1”表示这个磁盘的第1个分区,对应图1-4中的data-ssd01卷。图1-6中的磁盘列表、分区列表与图1-1、图1-4的对应关系如表1-1所示。

表1-1 设备标识符、设备名称、数据存储名称说明

ESXi中设备标识符

图1-1中的“设备”名称

图1-4中的数据存储名称

说明

naa.500080dc004ff330

SSD、447GB


一个500GB的固态硬盘

naa.500080dc004ff330:1


data-ssd01


naa.50014ee0042fd6fd

非SSD、4TB



naa.50014ee0042fd6fd:1


VMFS-Backup-4TB

1个4TB的Non-RAID磁盘

naa.61866da07cda650020942f720a174f8c

非SSD、30GB


RAID卡划分的第1个卷,安装ESXi系统

naa.61866da07cda650020942f720a174f8c:1



systemPartition,系统分区

naa.61866da07cda650020942f720a174f8c:2



旧版MBR,linuxNative

naa.61866da07cda650020942f720a174f8c:3


os-esx01

vmfs

naa.61866da07cda650020942f720a174f8c:5



旧版MBR,linuxNative

naa.61866da07cda650020942f720a174f8c:6



旧版MBR,linuxNative

naa.61866da07cda650020942f720a174f8c:7



VMware诊断,vmkDiagnostic

naa.61866da07cda650020942f720a174f8c:8



旧版MBR,linuxNative

naa.61866da07cda650020942f720a174f8c:9



VMware诊断,vmkDiagnostic

naa.61866da07cda6500209430db1f953ce5

非SSD、29TB


RAID卡划分的第2个卷,用于保存虚拟机





【说明】设备名为naa.61866da07cda650020942f720a174f8c的30GB的卷一共划分了8个分区(没有:4的分区),这是安装ESXi 的过程中创建的多个分区,有Linux引导分区、VMware 诊断分区,这些大约占用7556MB,而剩余的空间则划分为VMFS文件系统卷,剩余的卷在第3个分区,剩余容量大约22.5GB。

(2)使用partedUtil getptbl分别查看447GB、4TB、29TB磁盘的分区信息,对比差别。命令分别如下

partedUtil getptbl /vmfs/devices/disks/naa.500080dc004ff330

partedUtil getptbl /vmfs/devices/disks/naa.50014ee0042fd6fd

partedUtil getptbl /vmfs/devices/disks/naa.61866da07cda6500209430db1f953ce5

查看分区信息,如图1-7、图1-8所示。

blob.png

图1-7 有分区表的两个卷

blob.png

图1-8 29TB卷已经无分区表

对比图1-7、图1-8可以看出,“naa.61866da07cda6500209430db1f953ce5”(29TB卷)已无分区表。

(3)为29TB的卷创建分区表,命令及参数如下

partedUtil setptbl "/vmfs/devices/disks/ naa.61866da07cda6500209430db1f953ce5" gpt "1 2048 62440603614  AA31E02A400F11DB9590000C2911D1B8 0"

上述命令中的1 表示第一个分区,是主分区。2048表示vmfs-5分区开始扇区 。AA31E02A400F11DB9590000C2911D1B8 是VMFS GUID ,而62440603648是29.08TB卷的扇区数即图1-8中的62440603648再减去34得到。

命令及命令执行结果如图1-9所示。

blob.png

图1-9 创建分区

【说明】在本示例中,VMware ESXi卷被格式化为VMFS-5。对于VMFS6的卷,其扇区差异可能不全是34,也可能是1713,这些需要进一步查参数。

(4)然后在vSphere Client中重新扫描存储,可以看到原来被删除的存储已经出现,只是显示为“灰色”,右击该存储选择“挂载”,如图1-10所示。

blob.png

图1-10 挂载非活动存储

(5)之后存储挂载完成,并且可以看到存储的信息,如图1-11所示。

blob.png

图1-11 被删除的VMFS卷恢复

(6)浏览存储,可以看到数据仍然存在,如图1-12所示。至此存储恢复完成。

blob.png

图1-12 存储恢复成功

 

总结:vSphere的用户,在管理ESXi与vCenter Server服务器的时候,在对虚拟机、存储进行操作,例如扩容、删除这些有一定“危险性”的操作时,一定要多次确认,只有确认虚拟机不再使用时,才可以删除。只有确认存储上的数据已经迁移完成并且没有有用数据时,才能删除。但如果误操作删除了存储或虚拟机,第一时间用正确的方法恢复,数据一般不会丢失。


更多虚拟化课程及视频,请单击“VMware系统集成工程师”专题,2017年12月31日前8折,仅1600元。

http://edu.51cto.com/topic/1308.html