VSAN 虚拟机丢失排查与恢复完整方案

VSAN 虚拟机丢失排查与恢复完整方案

适用场景

  • ESXi 主机运行正常,但所有 VSAN 虚拟机(包括 vCenter)显示为“无效”或“找不到”。
  • 未重新部署 vCenter,但通过 ESXi 主机无法注册虚拟机。

一、初步检查

1. 确认存储是否可见
  • 目的:快速判断 VSAN 存储是否正常挂载。
  • 详细操作:
    1. 登录 ESXi 主机管理界面:
      • 打开浏览器,输入 ESXi 主机的 IP 地址(如 https://192.168.1.100),使用管理员账号(如 root)和密码登录。
    2. 检查数据存储状态:
      • 点击左侧菜单 存储 → 数据存储
      • 查看是否存在名为 vsanDatastore 的存储(名称可能不同,但通常包含“vsan”字样)。
      • 检查存储状态是否为 “已挂载”,并确认容量显示正常(如 5 TB 可用)。
  • 常见问题及解决:
    • 存储未挂载:需手动挂载(见步骤二)。
    • 存储容量显示为 0:可能是磁盘组故障或元数据损坏(见步骤六)。

二、手动挂载 VSAN 存储

1. 通过 SSH 连接到 ESXi 主机
  • 目的:通过命令行操作挂载存储。
  • 详细操作:
    1. 启用 SSH 服务:
      • 在 ESXi Host Client 界面,导航到 管理 → 服务 → TSM-SSH,点击 启动
    2. 使用 SSH 工具连接:
      • 打开 PuTTY(Windows)或终端(Mac/Linux),输入 ESXi 主机的 IP 地址,端口 22,使用管理员账号登录。
2. 查找并挂载 VSAN 存储
  • 详细命令:

    # 1. 列出所有存储设备及其 UUID
    esxcli storage filesystem list
    
    # 示例输出(重点关注 "VSAN" 相关行):
    # Mounted  Volume Name      UUID                                  Size       Free  
    # -------  --------------- ------------------------------------  ---------  ------
    # false    vsanDatastore    12345678-abcdef-1234-5678-90abcdef1234  5TB       4TB
    
    # 2. 挂载存储(替换为实际的 UUID)
    esxcli storage filesystem mount -u 12345678-abcdef-1234-5678-90abcdef1234
    
  • 验证结果:

    • 成功提示:The filesystem was mounted successfully
    • 返回 ESXi Host Client 界面,刷新后应看到存储状态变为 “已挂载”
常见问题及解决
  • 错误提示 “Unable to mount filesystem”:
    • 可能原因:存储元数据损坏或物理磁盘离线。
    • 解决:检查磁盘组状态(见步骤六)或重启 ESXi 主机。

三、检查虚拟机文件是否存在

1. 通过命令行确认文件
  • 目的:验证虚拟机文件是否实际存在于存储中。

  • 详细操作:

    # 1. 进入 VSAN 存储根目录
    cd /vmfs/volumes/vsanDatastore/
    
    # 2. 列出所有文件夹(每个文件夹对应一个虚拟机)
    ls -al
    
    # 示例输出:
    # drwxr-xr-x 1 root root  8192 Aug 10 10:00 vCenter-Server
    # drwxr-xr-x 1 root root  8192 Aug 10 10:00 Web-Server
    
    # 3. 进入目标虚拟机目录(以 vCenter 为例)
    cd vCenter-Server
    
    # 4. 列出所有文件
    ls -al
    
  • 正常结果:

    • 应包含以下文件:
      • .vmx:虚拟机配置文件。
      • .vmdk:虚拟磁盘文件(可能有多个,如 vCenter_1.vmdk)。
      • .nvram:虚拟机 BIOS 配置。
      • .log:虚拟机运行日志。
常见问题及解决
  • 目录为空:

    • 可能原因:文件被误删除或存储故障导致数据丢失。
    • 解决:从备份恢复(见步骤八)。
  • 权限不足:

    • 可能原因:目录权限被修改。

    • 解决:

      修复权限(需谨慎操作):

      chmod 755 /vmfs/volumes/vsanDatastore/vCenter-Server/
      

四、解决文件锁定问题

1. 删除残留的锁定文件
  • 目的:清除因虚拟机异常关闭生成的临时锁文件。

  • 详细操作:

    # 1. 进入虚拟机目录(以 vCenter 为例)
    cd /vmfs/volumes/vsanDatastore/vCenter-Server/
    
    # 2. 删除所有 .lck 文件或文件夹
    rm -rf *.lck
    
    # 3. 检查是否删除成功
    ls -al | grep .lck  # 应无输出
    
  • 注意事项:

    • .lck 文件是虚拟机运行时生成的临时文件,删除不会影响数据。
    • 如果虚拟机正在运行,不要强制删除锁文件!
常见问题及解决
  • 无法删除锁文件

    • 可能原因:虚拟机进程仍在后台运行。

    • 解决:

      重启 ESXi 主机或终止相关进程

      # 查找虚拟机进程 ID
      ps -c | grep vmx
      
      # 终止进程(替换为实际 PID)
      kill -9 1234
      

五、手动注册虚拟机

1. 通过命令行强制注册
  • 目的:绕过 vCenter 直接通过 ESXi 主机恢复虚拟机管理。

  • 详细操作:

    # 1. 注册虚拟机(替换为实际路径)
    vim-cmd solo/registervm /vmfs/volumes/vsanDatastore/vCenter-Server/vCenter.vmx
    
    # 示例成功输出:
    # (vim.vm.VmConfigInfo) {
    #   dynamicType = <unset>,
    #   name = "vCenter",
    #   uuid = "12345678-90ab-cdef-1234-567890abcdef"
    # }
    
  • 验证结果:

    • 返回 ESXi Host Client 界面,刷新后应看到虚拟机出现在列表中。
常见问题及解决
  • 错误提示 “File not found”:
    • 可能原因:路径错误或文件被移动。
    • 解决:通过 ls 命令确认 .vmx 文件路径。
  • 错误提示 “Already exists”
    • 可能原因:虚拟机已注册但状态异常。
    • 解决:在 ESXi Host Client 中删除残留的虚拟机条目,再重新注册。

六、检查 VSAN 健康状态

1. 验证 VSAN 集群状态
  • 目的:确认所有节点在线且通信正常。

  • 详细命令:

    esxcli vsan cluster get
    
    # 示例输出:
    # Cluster Information:
    #   Enabled: true
    #   Current Local Node State: MASTER
    #   Node Count: 3
    
  • 异常处理

    • Node Count 少于预期:检查离线节点的电源、网络和服务状态。
2. 检查磁盘组状态
  • 详细命令:

    esxcli vsan storage list
    
    # 示例输出:
    #    Disk Group Name: VSAN-DG1
    #    Storage Health: Healthy
    #    Cache Devices: mpx.vmhba1:C0:T0:L0
    #    Capacity Devices: mpx.vmhba1:C1:T0:L0
    
  • 关键状态说明:

    • Healthy:正常。
    • Degraded:部分数据不可用(需更换故障磁盘)。
    • Absent:磁盘组丢失(检查物理连接)。
3. 测试节点间网络
  • 详细命令:

    vsan.vmkping -c 3 -H 192.168.1.101  # 替换为其他节点 IP
    
    # 正常输出:
    # 3 packets transmitted, 3 packets received
    
  • 异常处理:

    • 丢包或超时:检查物理交换机、VLAN 配置和 VMkernel 网卡设置。

七、修复元数据损坏

1. 检查损坏的 VSAN 对象
  • 详细命令:

    vsan.vobjutil -a | grep -i "invalid\|missing"
    
    # 示例输出:
    # Object UUID: 1234-5678, State: Invalid
    
  • 记录结果:记下所有标记为 InvalidMissing 的对象 UUID。

2. 尝试修复对象
  • 详细命令:

    vsan.repair.dom_objects -p 1234-5678  # 替换为实际对象 UUID
    
  • 注意事项:

    • 此操作可能导致数据丢失!确保已备份关键文件。
    • 如果修复失败,需联系 VMware 支持。

八、终极恢复方案

1. 从备份恢复虚拟机
  • 操作步骤:
    1. 如果有备份工具(如 Veeam),直接还原虚拟机。
    2. 如果使用快照,通过 ESXi Host Client 回滚到健康状态。
2. 联系 VMware 支持
  • 操作步骤

    1. 收集日志

      # 生成 VSAN 日志包
      vsan.support --generate --output /tmp/vsan-logs.tgz
      
      # 收集 ESXi 系统日志
      tar -czvf /tmp/esxi-logs.tgz /var/log/vmware/
      
    2. 提交日志


总结流程图

开始  
│  
├─ 1. 检查存储是否挂载 → 是 → 3. 检查文件  
│   │  
│   └─ 否 → 2. 手动挂载存储  
│  
├─ 3. 文件是否存在 → 是 → 4. 删除锁定文件 → 5. 手动注册  
│   │  
│   └─ 否 → 8. 从备份恢复  
│  
├─ 6. 检查 VSAN 健康状态 → 正常 → 7. 修复元数据  
│   │  
│   └─ 异常 → 修复磁盘/网络  
│  
└─ 9. 联系 VMware 支持  

注意事项

  1. 备份优先:所有操作前对关键虚拟机执行快照或文件备份。
  2. 网络排查:优先检查 VMkernel 端口、物理交换机和防火墙规则。
  3. 谨慎操作:修复元数据或删除文件前,确认已理解风险。

通过以上步骤,可系统性解决 90% 的 VSAN 虚拟机丢失问题。如遇复杂情况,建议在 VMware 技术支持下操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值