ESXi 硬盘直通
通常我们使用 ESXi 就是为了搞虚拟化,在一台物理机上运行多个操作系统。但有的时候,在虚拟化的同时,我们可能也想要让一部分硬件能直接被虚拟机访问,也就是直通硬件。比如为虚拟机直通硬盘,那么我们就能轻易地将原本运行在独立硬件上的系统迁移到 ESXi 的虚拟化环境中。相应地,如果一台虚拟机的硬盘直通了一物理硬盘,那么将来也能轻易地将其上的系统迁移到独立的硬件上的运行。
下面以 ESXi 6.5 为例使用 VMware ESXi Web UI 及 SSH 来进行配置。
启用 SSH
首先,我们访问 https://<ESXi IP>/ui/ 进入 VMware ESXi Web UI:
登录进入系统后,找到 操作 -> 服务 -> 启用安全 Shell (SSH) 并启用 SSH:
通过 SSH 连接 ESXi 服务器
启用了 SSH 服务之后,我们需要通过 SSH 连接服务器,Windows 上可用 PuTTY 或 Bitvise SSH Client,Linux 或 macOS 可直接使用 ssh 命令连接。
连接目标为 ESXi 服务器的 IP,用户名密码与登录 Web UI 时相同。
创建 VMDK 直通硬盘
通过 SSH 连接上服务器后,我们可以使用以下命令来查看当前服务器上的所有硬盘及分区:
ls -lh /vmfs/devices/disks/
其中硬盘的名字类似如下:
t10.ATA_____Samsung_SSD_840_Series__________________S19MNEAD414936V_____
而分区的名字类似如下:
t10.ATA_____Samsung_SSD_840_Series__________________S19MNEAD414936V_____:1
t10.ATA_____Samsung_SSD_840_Series__________________S19MNEAD414936V_____:2
t10.ATA_____Samsung_SSD_840_Series__________________S19MNEAD414936V_____:3
t10.ATA_____Samsung_SSD_840_Series__________________S19MNEAD414936V_____:4
另外,输出结果中还包含硬盘及分区的大小,可以帮助我们找到想要直通的那块硬盘。
需要注意的是,一般我们的需求都是直通整块硬盘,而不是硬盘上的某一个分区,所以在随后的命令中输入注意不要弄错。
下面的示例代码中,将 t10.ATA_____Samsung_SSD_840_Series__________________S19MNEAD414936V_____
这块 SSD 直通,并将生成的直通硬盘配置文件存放在默认的 datastore1
下,取名为 ZzzBuzzPassthruSSD
。
disk="t10.ATA_____Samsung_SSD_840_Series__________________S19MNEAD414936V_____"
datastore="datastore1"
vmdkname="ZzzBuzzPassthruSSD"
vmkfstools -z "/vmfs/devices/disks/$disk" "/vmfs/volumes/$datastore/$vmdkname.vmdk"
实际操作中,注意将相关变量替换。
创建/配置虚拟机使用直通硬盘
随后我们创建/配置虚拟机,在添加硬盘的时候选择现有硬盘:
并定位到之前创建硬盘直通文件时所选择存储的位置:
之后,按常规创建/配置虚拟机即可。
注意:如果想要让直通的硬盘能同时在虚拟机和物理机的环境下同时工作,需要注意配置虚拟机的引导选项中的固件和 UEFI 安全引导与物理机 UEFI BIOS 中的配置一致。