目前我的服务器上用一块 LSI 9207-4i4e (SAS2308) 连接 16 盘位 SAS 背板。这些硬盘分别属于两个虚拟机。所以,无法将整个 LSI 9207-4i4e 直通给任何一个虚拟机使用。这个时候,硬盘直通(RDM,Raw Device Mapping)就是一个非常好的解决方案了。
但是,将硬盘直通给 Windows 10 虚拟机的时候,性能出现了问题。硬盘的读写速度降到了 20MB/s 以下!
经过几天的摸索,发现问题主要出在 SAS2308 的驱动上。另外,做硬盘直通时的设置可能也影响了读写性能(并不确定)。
首先解决驱动问题。
ESXi 6.7u3 默认使用 lsi_msgpt2 原生驱动,版本 20.00.06.00-2vmw.670.3.73.14320388。所以 reddit 老兄说要将 SAS 卡的固件回退到 20.00.06 版本(最新版本为 20.00.07)。但是刷固件太麻烦了。
于是又翻了一圈,发现可以禁用 lsi_msgpt2,让 ESXi 使用 mpt2sas 驱动。具体步骤如下:
- 先去下载 mpt2sas version 20.00.00.00.1vmw
- 然后安装 VIB 包
# Enable SSH on ESXi and Upload driver VIB scp mpt2sas-20.00.00.00.1vmw-offline_bundle-2253936.zip root@esxi:/tmp/ # Login to ESXi and install VIB esxcli software vib install -d /tmp/mpt2sas-20.00.00.00.1vmw-offline_bundle-2253936.zip
- 最后禁用 lsi_msgpt2 驱动
esxcli system module set --enabled=false --module=lsi_msgpt2
- 重启服务器
至于为什么 mpt2sas 的性能比 lsi_msgpt2 要好,这就只能让 LSI 或者 VMware 的工程师来解答了。
驱动解决了之后,还要调整直通控制器的设置。
- 去虚拟机设置里面,将 SCSI Controller 的虚拟硬件设置为 VMware Paravirtual。
重启虚拟机,硬盘性能问题解决。