背景
本文内容基于ESXi 6.7,其他版本仅供参考。一般情况下,如果硬件支持良好,在虚拟机编辑界面应该能够使用“Add raw disk”的选项,例如当我使用SLI 9200-8i阵列卡就可以直接向虚拟机添加RDM磁盘。但如果硬件不被支持,也没有关系,我们仍然可以通过ESXi命令行来实现RDM的功能。
方法
首先,开启ESXi命令行,如下图所示,在"Host" > “Manage” > “Services"中运行"TSM-SSH"服务。
然后,来到"Storage” > “Devices”,选中想要直通的磁盘,然后复制该磁盘的路径名(“Path”):
接下来,通过ssh
登陆ESXi的命令行,在/vmfs/volumes
路径下找到你的DataStore,你将在这里创建RDM虚拟磁盘文件,用于完成后续的操作。如下所示,我的DataStore名称为DS-KST240-SSD-1
:
[root@localhost:/vmfs/volumes] ls -l total 1792 drwxr-xr-x 1 root root 8 Jan 1 1970 5e6665dd-db0ae4d0-1c64-4437e69a0876 drwxr-xr-t 1 root root 77824 Apr 28 22:23 5e66ce9b-1ecc8d9d-8f80-4437e69a0876 drwxr-xr-x 1 root root 8 Jan 1 1970 769fadef-ff010ea9-00e8-3f64163062ee lrwxr-xr-x 1 root root 35 May 3 18:59 DS-KST240-SSD-1 -> 5e66ce9b-1ecc8d9d-8f80-4437e69a0876 drwxr-xr-x 1 root root 8 Jan 1 1970 e461cbeb-515f10d0-bfe6-681dbda62443[root@localhost:/vmfs/volumes] 12345678
不用担心,这个虚拟磁盘文件并不会真的占用DataStore的存储空间。
再然后,使用vmkfstools -z
命令创建RDM虚拟磁盘文件,你需要给它起个便于区分的名字,例如RDM-CD02-WD2T.vmdk
:
[root@localhost:/vmfs/volumes] vmkfstools -z /vmfs/devices/disks/t10.ATA_____WDC_WD20EARX2D00PASB0______________________ ___WD2DWMAZA5280395 /vmfs/volumes/DS-KST240-SSD-1/RDM-CD02-WD2T.vmdk[root@localhost:/vmfs/volumes] 123
最后,在虚拟机配置界面,通过添加现有磁盘的方式,将这块RDM磁盘挂载到虚拟机中:
经验
通过这种方式挂载的RDM磁盘,性能基本上可以达到“无损”的程度,文件格式也没有发生变化,完全跟“物理连接”是一样的,你甚至可以在虚拟机中更改分区表类型,重新分区,格式化硬盘,检查磁盘坏道等等,除了无法读取磁盘S.M.A.R.T信息以外,几乎所有操作跟物理机都是等效的!
补充
如果你像我一样,有多块相同规格的磁盘,你可能会搞混它们,vmkfstools -q
命令将帮助你找到RDM虚拟磁盘与物理磁盘的对应关系。例如,下面的命令为找到RDM-WD2T-HDD.vmdk
所对应的物理磁盘提供了线索:
[root@localhost:/vmfs/volumes/5e66ce9b-1ecc8d9d-8f80-4437e69a0876] vmkfstools -q RDM-WD2T-HDD.vmdk Disk RDM-WD2T-HDD.vmdk is a Passthrough Raw Device Mapping Maps to: vml.0100000000202020202057442d5743415a4135383835313231574443205744[root@localhost:/vmfs/volumes/5e66ce9b-1ecc8d9d-8f80-4437e69a0876] 1234
通过UUID
你将可以定位到相应的物理磁盘: