小白也能搞定!ESXi 中 RAID 磁盘 GPT 错误修复与快照卷挂载实战

作为一名 ESXi 新手,最近遇到了一个棘手的问题:阵列磁盘出现 GPT 分区表错误,目标 RAID 卷无法正常识别,折腾了好一阵终于搞定。今天就把完整的操作过程和踩坑经验分享出来,小白也能跟着一步步操作!
 

一、问题背景

 
我的服务器用的是SAS3108 主控阵列卡,配置了 RAID 卷,其中有一个8T-Raid1 卷突然无法正常挂载。通过 ESXi Shell 登录后排查,发现对应磁盘naa.600300570276603030f25a710b94c2de 存在 GPT 分区表异常,提示 “备份 GPT 位于磁盘末尾之外”,同时使用partedUtil 修复时还遇到了 “函数未实现” 的报错。
 

二、准备工作:登录 ESXi Shell

 
不管是修复分区表还是挂载卷,第一步都是要登录 ESXi 的命令行界面。
 
  1. 进入 ESXi 物理控制台或者通过 vSphere Client 开启 ESXi Shell
  2. 使用root 账号登录,登录成功后会看到类似下面的提示,就代表进入命令行环境了
    已生成代码
 

三、排查问题:定位异常磁盘与卷

 

1. 查看所有磁盘设备

 

首先要找到出问题的磁盘,执行以下命令列出所有磁盘:

ls /vmfs/devices/disks
执行后会看到一堆磁盘标识,像naa.xxx t10.xxx 这样的,这些就是 ESXi 识别到的物理盘和 RAID 逻辑盘。
 

2. 检查磁盘分区表状态

 

针对怀疑有问题的磁盘(我这里是naa.600300570276603030f25a710b94c2de),用partedUtil 命令查看分区表:

partedUtil getptbl /vmfs/devices/disks/naa.600300570276603030f25a710b94c2de
此时出现了关键报错:
 
  • Error: Function not implemented during read:暂时忽略这个报错,重点看后面的提示
  • The primary GPT table states that the backup GPT is located beyond the end of disk:核心问题!GPT 分区表的备份区位置不对,超出了磁盘实际容量
 

3. 查看已挂载的卷

 

用下面的命令看当前 ESXi 挂载了哪些卷,确认目标卷8T-Raid1 是否在列:

esxcli storage filesystem list
执行后发现列表里只有8T-Raid5,没有我们要的8T-Raid1,说明这个卷确实没挂载上。
 

4. 查看 VMFS 快照卷

 

ESXi 中未挂载的 VMFS 卷会以快照形式存在,执行以下命令查看快照卷列表:

esxcli storage vmfs snapshot list

这一步我看到了关键信息:

67ec51a8-8d33dc62-a373-107b44490469
   Volume Name: 8T-Raid1
   VMFS UUID: 67ec51a8-8d33dc62-a373-107b44490469
   Can mount: true
   Reason for un-mountability:
   Can resignature: true
看到Can mount: true 就放心了,这个卷是可以直接挂载的!
 

四、修复与挂载:两步搞定故障卷

 

1. 尝试修复 GPT 分区表(可选)

 

虽然报错 “函数未实现”,但我还是尝试执行了修复命令,结果发现分区表其实已经正常了:

partedUtil fix /vmfs/devices/disks/naa.600300570276603030f25a710b94c2de

再次执行getptbl 命令检查,输出了正常的 GPT 分区表信息:

gpt
972735 255 63 15626993664
1 2048 15626991616 AA31E02A400F11DB9590000C2911D1B8 vmfs 0
这说明分区表的异常提示可能是虚惊一场,不影响后续挂载。
 

2. 挂载 VMFS 快照卷(关键步骤)

 

既然快照卷显示可以挂载,直接用UUID 挂载是最稳妥的方法(用卷名挂载可能会找不到,亲测踩坑!)。

 

执行挂载命令:

esxcli storage vmfs snapshot mount -u 67ec51a8-8d33dc62-a373-107b44490469

小提示:这里的 UUID 就是esxcli storage vmfs snapshot list 命令输出的那串字符

3. 验证挂载结果

 

挂载完成后,再次执行卷列表命令:

esxcli storage filesystem list | grep 8T-Raid1

看到下面的输出,就代表挂载成功了!

/vmfs/volumes/67ec51a8-8d33dc62-a373-107b44490469  8T-Raid1     67ec51a8-8d33dc62-a373-107b44490469     true  VMFS-6  8000987201536  5019342471168

五、小白避坑指南

 
  1. 不要用卷名挂载:我一开始用esxcli storage filesystem mount -l 8T-Raid1 提示找不到卷,用 UUID 挂载才是王道
  2. 忽略无关报错partedUtil 出现的 “函数未实现” 报错,不影响分区表正常使用,不用纠结
  3. 先看快照卷状态:只要esxcli storage vmfs snapshot list 显示Can mount: true,就不用费劲重建分区表,直接挂载就行
  4. 命令要输对路径:操作磁盘时,路径必须是/vmfs/devices/disks/磁盘标识,少一个字符都不行
 

六、总结

 

其实 ESXi 磁盘和卷的问题,并没有想象中那么复杂。新手遇到问题时,先通过命令排查磁盘状态和快照卷信息,只要卷本身没问题,直接用 UUID 挂载就能解决大部分问题。这次实战也让我明白,遇到报错不要慌,先看关键提示,很多时候看似吓人的报错其实不影响操作!

 

 
© 版权声明
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容