VMware ESXi 会先将存储设备格式化 VMFS-5(一种存储池管理格式,与 LVM 等类似),然后给虚拟机分配使用,对于即将安装的操作系统来讲,这相当于一个实际的物理硬盘,操作系统会再一次对这个“硬盘”格式化,而当一个物理硬盘出现部分数据损坏后,你是没办法拿到新电脑上直接访问里面的数据的。如果你基于 ESXi 来打造一个 NAS 家用存储系统时,比如希望安装 OmniOS/napp-it/NexentaStor/FreeNAS 之类的,系统也是推荐使用整个整个的硬盘来作为存储基础单元,而不推荐使用虚拟磁盘或磁盘分区之类。
作为虚拟化领域的领导厂商,VMware 当然也考虑到了这个问题,ESXi 支持设备的直通,包括各种 PCIe 设备(需要 ESXi 基础硬件的某些虚拟化特性,如 VT-D/IOMMU 等支持)。对于存储,官方的 RDM 一般只有通过认证的 RAID/SCSI 卡或 iscsi/SAN 存储设备才可以 RDM。不过无论如何,直接访问主板上连接的硬盘驱动器都不被官方支持。
那么,怎样才能让 ESXi 中的虚拟机直接访问主板挂载的 SATA 硬盘呢?这就需要我们另辟蹊径了。
首先你得熟悉命令行操作,知道如何使用终端管理工具,使用 SSH 或 ESXi 控制台进入 ESXi 的 Shell 界面。
第一步得找到需要映射的 RAW 驱动器名称:
ls /dev/disks
在我这边,有 4 块西数 4T SATA 红盘需要做 RDM:
t10.ATA_____WDC_WD40EFRX2D68WT0N0_________________________WD2DWCC4E536ULXV
t10.ATA_____WDC_WD40EFRX2D68WT0N0_________________________WD2DWCC4E7FYF8ZL
t10.ATA_____WDC_WD40EFRX2D68WT0N0_________________________WD2DWCC4ECXUD802
t10.ATA_____WDC_WD40EFRX2D68WT0N0_________________________WD2DWCC4EFSNCRU3
在 ESXi datastore 中建立硬盘标识文件,该文件也是以 vmdk 为后缀,不过它只以文本方式保存了硬盘 RAW 信息。
vmkfstools -z /vmfs/devices/disks/<前面找到的RAW名称> <存储RDM映射文件的路径>/<RDM映射文件名>.vmdk
完成后,我这边的文件之一的内容是:
# Disk DescriptorFile
version=1
encoding="UTF-8"
CID=bbd41d1e
parentCID=ffffffff
isNativeSnapshot="no"
createType="vmfsPassthroughRawDeviceMap"
# Extent description
RW 7814037168 VMFSRDM "WD-36ULXV-rdmp.vmdk"
# The Disk Data Base
#DDB
ddb.adapterType = "lsilogic"
ddb.geometry.cylinders = "486401"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.longContentID = "8a320d912c71ea70e95daffcbbd41d1e"
ddb.toolsVersion = "0"
ddb.uuid = "60 00 C2 90 83 11 65 46-b3 92 b2 53 25 66 8d b3"
ddb.virtualHWVersion = "10"
接下来,在 vSphere Client 中编辑虚拟机配置,以添加现有虚拟磁盘的方式,选择刚刚创建的 RDM 映射文件就 OK 了。