环境信息

vmware ESXi 7.0.0 (Build 16324942)

需求

现有两台ESXi服务器,需要将其中一台服务器的某虚拟机迁移至另一台服务器中。有以下备选方案:

  1. 采用vCenter数据中心直接迁移;
  2. 采用http导出ovf文件进行迁移;
  3. 采用外接移动存储进行迁移;

由于目前两台虚拟服务器网络未打通,且http导出较大ovf文件时经常中断且不可断点续传。故此文档采用第三种方案进行迁移。

开启ESXi ssh

在ESXi的web管理页面开启ssh

image.png

使用ssh连接ESXi服务器,ESXi的ssh需要选用最下面的Keyboard Interactive进行密码验证。

image.png

关闭USB直通模式

/etc/init.d/usbarbitrator stop
chkconfig usbarbitrator off

ESXi默认在接入usb外接设备时,将会将usb设备直通映射进服务器中的虚拟机中。但是我们需要服务器访问usb设备,而非映射进虚拟机中。所以暂时将直通模式关闭,以便服务器能读取到usb设备。

[root@localhost:~] /etc/init.d/usbarbitrator stop
watchdog-usbarbitrator: Terminating watchdog process with PID 539629
stopping usbarbitrator...
usbarbitrator stopped
[root@localhost:~] chkconfig usbarbitrator off
[root@localhost:~] 

接入USB设备

esxcli storage core device list |grep -i usb

接入usb存储,使用以上指令查看usb设备的连接情况。

[root@localhost:~] esxcli storage core device list |grep -i usb
   Display Name: Local USB Direct-Access (mpx.vmhba33:C0:T0:L0)
   Is USB: true
   Is USB: false
   Is USB: false

看到Is USB: true说明有usb设备被识别到了,我们记下设备名 mpx.vmhba33:C0:T0:L0

在以下目录确认可以看到新设备的挂载点(此步骤可忽略)

[root@localhost:~] ls /dev/disks/
mpx.vmhba33:C0:T0:L0
mpx.vmhba33:C0:T0:L0:1
naa.600605b00e2f01b024ca12831ad83bc1
naa.600605b00e2f01b024ca12831ad83bc1:1
naa.600605b00e2f01b024ca12831ad83bc1:5
naa.600605b00e2f01b024ca12831ad83bc1:6
naa.600605b00e2f01b024ca12831ad83bc1:7
naa.600605b00e2f01b024ca12831ad83bc1:8
vml.01000000004e4139545844585442555020536c
vml.01000000004e4139545844585442555020536c:1
vml.0200000000600605b00e2f01b024ca12831ad83bc1536572766552
vml.0200000000600605b00e2f01b024ca12831ad83bc1536572766552:1
vml.0200000000600605b00e2f01b024ca12831ad83bc1536572766552:5
vml.0200000000600605b00e2f01b024ca12831ad83bc1536572766552:6
vml.0200000000600605b00e2f01b024ca12831ad83bc1536572766552:7
vml.0200000000600605b00e2f01b024ca12831ad83bc1536572766552:8

格式化外接存储设备

将外接存储格式化,ESXi系统不支持传统的文件系统格式,需要将设备格式化为VMFS文件格式。

使用以下两条命令生成存储设备的gpt,将 mpx.vmhba33\:C0\:T0\:L0 替换成上面查询出来的自己的设备名称,注意转义符\需要保留

[root@localhost:~] partedUtil mklabel /dev/disks/mpx.vmhba33\:C0\:T0\:L0 gpt 
[root@localhost:~] partedUtil getptbl /dev/disks/mpx.vmhba33\:C0\:T0\:L0
gpt
121601 255 63 1953525167

计算磁盘大小我这里是4000812365823

[root@localhost:~] eval expr $(partedUtil getptbl /dev/disks/mpx.vmhba33\:C0\:T0\:L0 | tail -1 | awk '{print $1 " \\* " $2 " \\* " $3}') - 1
4000812365823

使用以下命令来识别存储,同样将设备名和设备容量大小替换为上面计算出的自己的信息

[root@localhost:~] partedUtil setptbl /dev/disks/mpx.vmhba33\:C0\:T0\:L0 gpt "1 2048 1953520064 AA31E02A400F11DB9590000C2911D1B8 0"
gpt
0 0 0 0
1 2048 1953520064 AA31E02A400F11DB9590000C2911D1B8 0

使用以下命令格式化设备为vmfs文件格式,注意命令最后的:1需要保留,代表这个存储设备的第一个分区。USB_Datastore为卷名,可以改为任意名字。

[root@localhost:~] vmkfstools -C vmfs5 -S USB_Datastore /dev/disks/mpx.vmhba33\:C0\:T0\:L0:1
create fs deviceName:'/dev/disks/mpx.vmhba33:C0:T0:L0:1', fsShortName:'vmfs5', fsName:'USB_Datastore'
deviceFullPath:/dev/disks/mpx.vmhba33:C0:T0:L0:1 deviceFile:mpx.vmhba33:C0:T0:L0:1
ATS on device /dev/disks/mpx.vmhba33:C0:T0:L0:1: not supported
.
Checking if remote hosts are using this device as a valid file system. This may take a few seconds...
Creating vmfs5 file system on "mpx.vmhba33:C0:T0:L0:1" with blockSize 1048576 and volume label "USB_Datastore".
Successfully created new volume: 60481e6a-d0645272-d470-e86a649fc96c

此时ESXi的管理界面就可以看到挂载好的存储设备了,注意VMFS分区无法被linux以及Windows系统识别,仅可作为ESXi系统之间互相拷贝数据之用。

image.png

参考文章

https://www.vediotalk.com/archives/1120
最后修改:2021 年 03 月 10 日
如果觉得我的文章对你有用,请随意赞赏