ESXi 8.0 重做RAID后VMFS数据存储消失问题解决实录
问题背景
最近在维护一台运行 ESXi 8.0(Build 25205845)的服务器时,遇到了一个棘手的问题:重做 RAID 阵列后,原本在系统盘 SSD(RAID1)上创建的 VMFS 数据存储"212"在 Web 管理界面中消失了,只能看到数据盘 RAID5 上的 "ESXI2-RAID5" 存储。
硬件配置
服务器配备了两组 RAID 阵列:
- 系统盘:2块 SSD 组 RAID1(446.63 GB),用于安装 ESXi 操作系统
- 数据盘:3块 HDD 组 RAID5(25.47 TB),用于存放虚拟机数据
故障现象
- 登录 ESXi Web Host Client,存储页面只显示 "ESXI2-RAID5" 这一个数据存储
- 通过 SSH 登录到 ESXi Shell,执行
df -h命令发现系统确实挂载了多个文件系统:
Filesystem Size Used Available Use% Mounted on
VMFS-6 25.5T 2.6G 25.5T 0% /vmfs/volumes/ESXI2-RAID5
VMFSOS 119.8G 4.4G 115.4G 4% /vmfs/volumes/OSDATA-69f03d90-b92ce197-ec9b-34737991ebde
vfat 4.0G 277.9M 3.7G 7% /vmfs/volumes/BOOTBANK1
vfat 4.0G 277.8M 3.7G 7% /vmfs/volumes/BOOTBANK2可以看到系统分区、引导分区都在,但就是没有看到原来的 "212" 存储。
问题排查
第一步:确认磁盘设备状态
首先查看系统识别到的存储设备:
esxcli storage core device list输出显示了三个设备:
- 25.47TB 的 HDD RAID5 阵列(数据盘)
- 446.63GB 的 SSD RAID1 阵列(系统盘,标记为 Boot Device)
- XFUSION 的 Enclosure 管理设备
这说明硬件层面一切正常,系统正确识别了两个 RAID 阵列。
第二步:检查分区表
查看系统盘的分区布局:
partedUtil getptbl /dev/disks/naa.600605b0123843f031d0edf5a4d32dcb输出结果:
gpt
58303 255 63 936640512
1 64 204863 ... systemPartition 128
5 208896 8595455 ... linuxNative 0
6 8597504 16984063 ... linuxNative 0
7 16986112 268435455 ... vmfsl 0
8 268437504 936640478 ... vmfs 0关键发现:系统盘有 8 个分区!其中:
- 分区 1:系统引导分区 (EFI)
- 分区 5-6:BOOTBANK 分区
- 分区 7:OSDATA (VMFSOS 格式)
- 分区 8:VMFS 格式分区 — 这正是我们要找的!
第三步:寻找未挂载的 VMFS 卷
这是解决问题的关键步骤。使用 ESXi 的卷扫描工具:
esxcfg-volume -l输出清楚地显示了问题的答案:
VMFS UUID/label: 69f03d91-cc51e625-b4ca-34737991ebde/212
Can mount: Yes
Can resignature: Yes
Extent name: naa.600605b0123843f031d0edf5a4d32dcb:8 range: 0 - 326143 (MB)问题根源确认:
"212" 数据存储确实完整存在(Can mount: Yes),位于系统盘的第 8 分区(naa.600605b0123843f031d0edf5a4d32dcb:8),但未被自动挂载!
为什么会出现这个问题?
重做 RAID 后,虽然 VMFS 分区本身完好无损,但 ESXi 的自动挂载机制可能因为以下原因跳过了它:
- 签名变化感知:RAID 重建可能导致磁盘底层的元数据或分区签名发生细微变化
- 挂载顺序冲突:系统启动时,OSDATA 卷的挂载可能对后续卷的自动发现产生影响
- 持久化配置丢失:部分存储在 OSDATA 中的挂载配置可能需要重新建立
解决方案
找到了问题,解决起来就很简单了:
挂载数据存储
使用 esxcfg-volume 命令进行持久化挂载:
esxcfg-volume -M "212"参数 -M 表示执行持久化挂载(Persistent mount),确保重启后仍然有效。
验证结果
执行以下命令验证挂载状态:
df -h输出显示挂载成功:
VMFS-6 318.5G 13.9G 304.6G 4% /vmfs/volumes/212再看看详细列表:
esxcli storage filesystem list | grep 212确认显示为已挂载状态(Mounted: true),容量约 318.5GB。
刷新 Web 界面
vim-cmd hostsvc/datastore/refresh 212刷新后,在 ESXi Web Host Client 的存储页面中,"212" 数据存储重新出现,所有数据完好无损。
经验总结
排查思路
遇到类似问题时,可以按照以下流程操作:
- 不要慌张:数据通常还在,只是没有被正确挂载
- 检查硬件层:确认磁盘设备被正确识别
- 检查分区表:使用
partedUtil查看分区布局 - 扫描 VMFS 卷:使用
esxcfg-volume -l查找未挂载的卷 - 持久化挂载:使用
esxcfg-volume -M命令挂载
关键命令清单
# 查看存储设备
esxcli storage core device list
# 查看分区表
partedUtil getptbl /dev/disks/<设备名>
# 扫描未挂载的 VMFS 卷
esxcfg-volume -l
# 持久化挂载卷
esxcfg-volume -M "卷名"
# 查看已挂载的文件系统
df -h
esxcli storage filesystem list
# 刷新数据存储
vim-cmd hostsvc/datastore/refresh <数据存储名>预防建议
- 重做 RAID 前备份配置:可以使用
vim-cmd hostsvc/firmware/backup_config备份 ESXi 配置 - 记录存储布局:维护一份服务器存储布局文档,包括分区结构和用途
- 分离系统与数据:尽量将 ESXi 系统安装在独立的小容量磁盘上,避免与数据存储混用
- 善用命令行:ESXi Shell 提供了强大的诊断能力,Web 界面看不到的东西,命令行往往能发现
写在最后
这个问题虽然看起来吓人——数据存储消失了,但实际上只是 VMFS 卷没有被自动挂载。通过系统化的排查思路,我们快速定位了问题并恢复了访问。
记住:在虚拟化环境中,"看不到"不等于"丢失了"。保持冷静,善用命令行工具,大多数存储问题都能迎刃而解。
环境信息
- 虚拟化平台:VMware ESXi
- 版本:8.0.3 (Build 25205845)
- 硬件:AVAGO MR9440-8i RAID 控制器
关键词:ESXi 8.0、RAID重建、VMFS、数据存储消失、esxcfg-volume、存储挂载
本文首发于个人技术博客,转载请注明出处。