环境信息
vmware ESXi 7.0.0 (Build 16324942)
需求
现有两台ESXi服务器,需要将其中一台服务器的某虚拟机迁移至另一台服务器中。有以下备选方案:
- 采用vCenter数据中心直接迁移;
- 采用http导出ovf文件进行迁移;
- 采用外接移动存储进行迁移;
由于目前两台虚拟服务器网络未打通,且http导出较大ovf文件时经常中断且不可断点续传。故此文档采用第三种方案进行迁移。
开启ESXi ssh
在ESXi的web管理页面开启ssh
使用ssh连接ESXi服务器,ESXi的ssh需要选用最下面的Keyboard Interactive进行密码验证。
关闭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系统之间互相拷贝数据之用。
参考文章
https://www.vediotalk.com/archives/1120