ESXi主机损坏后恢复虚拟机方法

方法一. 通过Ubuntu挂载硬盘恢复VM【成功】

1. 准备Ubuntu主机并挂载ESXi磁盘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 查看磁盘列表(找到目标硬盘,如 /dev/sdb)
lsblk -o NAME,SIZE,TYPE,MODEL
# 此次看到我这里显示的时sda为ESXi磁盘,其中sda3分区最大,判断其应为VMFS所在分区。
sylar@ubuntu:~$ lsblk -o NAME,SIZE,TYPE,MODEL
NAME SIZE TYPE MODEL
loop0 49.9M loop
loop1 63.3M loop
loop2 91.9M loop
loop3 49.3M loop
loop4 91.9M loop
loop5 63.8M loop
sda 1.8T disk RSYE38362-1920
├─sda1 4M part
├─sda2 4G part
├─sda3 1.8T part
├─sda5 250M part
├─sda6 250M part
├─sda7 110M part
├─sda8 286M part
└─sda9 2.5G part
sdb 931.5G disk ST1000DM010-2EP1
├─sdb1 1M part
├─sdb2 2G part
└─sdb3 929.5G part
└─ubuntu--vg-ubuntu--lv 100G lvm

# 确认分区3(对应原 ESXi 的 :3 分区)
sylar@ubuntu:~$ fdisk -l /dev/sda | grep "sda3"
/dev/sda3 15472640 3748046814 3732574175 1.8T VMware VMFS
2. 使用vmfs6-tools 挂载sda3分区
1
2
3
4
5
6
7
8
9
# 安装工具
sudo apt update && sudo apt install -y vmfs6-tools

# 创建挂载点
sudo mkdir /mnt/vmfs_recover

# 强制挂载分区3(忽略元数据错误)
sudo vmfs6-fuse -o ro,allow_other /dev/sda3 /mnt/vmfs_recover
# 返回 VMFS version: 6 就代表挂载成功
3. 通过SSH复制VM虚拟机文件夹到可用的ESXi主机(ESXi主机需开启SSH服务)

复制文件期间带宽占用非常高,建议目标主机为非主业务机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 查看可恢复的文件/目录
ls /mnt/vmfs_recover/
例: IT_ED_20.18 IT_ED_30.196

# 使用SCP复制虚拟机目录到可用的ESXi主机(目标目录需自行确定)
sudo scp -r /mnt/vmfs_recover/IT_ED_20.18 [email protected]:/vmfs/volumes/Data1A_HDD/
提示输入密码后即开始复制,保持网络稳定即可。


root@ubuntu:~# scp -r /mnt/vmfs_recover/IT_ED_20.18 [email protected]:/vmfs/volumes/Data1A_HDD/
The authenticity of host '10.10.30.1 (10.10.30.1)' can't be established.
RSA key fingerprint is SHA256:FnQ1MO8TDz3nklcwdF0qoLp6YNsDewq4LP7DWK5jy8c.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.30.1' (RSA) to the list of known hosts.
Password:
IT_ED_20.18-0ea0f19a.hlog 100% 1031 1.2MB/s 00:00
IT_ED_20.18-flat.vmdk 100% 400GB 61.8MB/s 1:50:30
IT_ED_20.18.vmdk 100% 533 396.5KB/s 00:00
IT_ED_20.18-000002-sesparse.vmdk 100% 1616MB 66.1MB/s 00:24
IT_ED_20.18-000002.vmdk 100% 319 294.9KB/s 00:00
IT_ED_20.18.nvram 100% 264KB 14.8MB/s 00:00
IT_ED_20.18.vmsd 100% 382 332.5KB/s 00:00
IT_ED_20.18-Snapshot1.vmsn 100% 287KB 55.7MB/s 00:00
vmware-3.log 100% 336KB 52.6MB/s 00:00
vmware-2.log 100% 894KB 74.6MB/s 00:00
vmware-1.log 100% 518KB 65.6MB/s 00:00
vmware.log 100% 336KB 55.8MB/s 00:00
IT_ED_20.18.vmx 100% 2764 3.2MB/s 00:00
root@ubuntu:~#
4. 验证虚拟机是否可正常使用。

登录ESXi (如:10.10.30.1),虚拟机-注册现有虚拟机

方法二、付费软件 699美元可恢复6台虚拟机(未验证)

DiskInternals VMFS Recovery

方法三、 将ESXi虚拟机硬盘插入正常ESXi机器(未成功)

未实验成功,仅作记录

注意:只适用 相兼容的RAID卡的情况

插入硬盘后开机启动ESXi系统,重新扫描存储适配器和磁盘。顺利的话自动挂载原数据存储,重新注册虚拟机即可。

如不能自动挂载数据存储,需打开ESXi的SSH。通过ESXicli手动挂载数据存储。

操作步骤

扫描存储适配器,发现目标 LUN

首先扫描存储适配器,确保当前主机能识别到目标 LUN:

1
2
3
4
5
6
7
8
# 列出所有存储适配器(获取适配器名称,如vmhba0、vmhba1等)
esxcli storage core adapter list

# 扫描指定适配器(刷新存储设备列表),以vmhba0为例
esxcli storage core adapter rescan --adapter=vmhba0

# 若不确定适配器,可扫描所有适配器
esxcli storage core adapter rescan --all
确认目标 LUN 的设备路径

列出所有可见的存储设备,找到目标 LUN 的设备路径(如/vmfs/devices/disks/t10.xxxx):

1
2
3
4
5
# 列出所有存储设备(包含LUN信息)
esxcli storage core device list

# 过滤显示VMFS类型的设备(目标数据存储通常是VMFS)
esxcli storage vmfs extent list
检查设备分区表,确认是否存在 VMFS 分区
1
2
# 查看目标设备的分区信息(替换为实际设备名)
esxcli storage core device partition list -d t10.ATA_____RSYE383622D1920__________________________PKCH370603703_______
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@ESXi-14:~] esxcli storage core device partition list -d t10.ATA_____RSYE383622D1920__________________________PKCH370603703_______
Device Partition Start Sector End Sector Type Size
------------------------------------------------------------------------- ------ ------------ ---------- ---- -------------
t10.ATA_____RSYE383622D1920__________________________PKCH370603703_______ 0 0 3750748847 0 1920383410176
t10.ATA_____RSYE383622D1920__________________________PKCH370603703_______ 1 64 8191 0 4161536
t10.ATA_____RSYE383622D1920__________________________PKCH370603703_______ 2 7086080 15472639 6 4293918720
t10.ATA_____RSYE383622D1920__________________________PKCH370603703_______ 3 15472640 3748046814 fb 1911077977600
t10.ATA_____RSYE383622D1920__________________________PKCH370603703_______ 5 8224 520191 6 262127616
t10.ATA_____RSYE383622D1920__________________________PKCH370603703_______ 6 520224 1032191 6 262127616
t10.ATA_____RSYE383622D1920__________________________PKCH370603703_______ 7 1032224 1257471 fc 115326976
t10.ATA_____RSYE383622D1920__________________________PKCH370603703_______ 8 1257504 1843199 6 299876352
t10.ATA_____RSYE383622D1920__________________________PKCH370603703_______ 9 1843200 7086079 fc 2684354560
[root@ESXi-14:~]

从分区列表可以看到,目标硬盘(t10.ATA_____RSYE383622D1920__________________________PKCH370603703_______)的 分区 3(Partition 3) 类型为 fb,这是 VMFS 文件系统的标识(ESXi 中 VMFS 分区的标准类型码),且该分区容量较大(1911077977600 字节),符合数据存储的特征。

挂载指定设备上的VMFS数据存储

格式:esxcli storage filesystem mount -l <数据存储名称> 或 -d <设备路径>

获取 VMFS 分区的 UUID 或卷标签
通过 vmkfstools 命令查看分区 3 的详细信息(包含 UUID 和卷名):

1
vmkfstools -P /vmfs/devices/disks/t10.ATA_____RSYE383622D1920__________________________PKCH370603703_______:3

通过 VMFS UUID 挂载(推荐,唯一标识)

1
esxcli storage filesystem mount -u <VMFS_UUID>

通过卷标签挂载(需确保标签唯一)

1
esxcli storage filesystem mount -l "卷标签名称"
验证挂载结果

检查数据存储是否成功挂载:

1
2
# 列出所有已挂载的数据存储 
esxcli storage filesystem list | grep -i vmfs

若成功,会显示目标数据存储的路径(如/vmfs/volumes/数据存储名称)。


ESXi主机损坏后恢复虚拟机方法
http://anximin.github.io/2025/08/22/ESXi-recoverVM/
作者
Sylar
发布于
2025年8月22日
许可协议