我正在为 Cisco 和 VMware 构建一个家庭实验室环境,该环境也将兼作 NAS。系统运行 ESXi v6.0 裸机。我的设计的一部分是,我有一台带有 LSI2008 的联想 TS440,我使用 VT-d 将其提供给客户机,该客户机运行带有 LIO 的 ZFS,提供 LUN,然后我可以将其用作其他虚拟机的数据存储。
这个设计的灵感来自于:
性能非常出色,运行也非常顺畅。但是我遇到的一个问题是,如果我重新启动 ESXi 主机(由于这是实验室环境,我偶尔会这样做),则使用 iSCSI 数据存储的虚拟机将无法启动(它们会变灰并显示无法访问)。
每次重启后我都必须通过重新添加数据存储来修复它,不仅如此,启动阶段还需要更长的时间,因为它尝试到达 iSCSI 目标但失败了。
主要问题是:
是否可以将 ESXi 配置为等到给定 VM 联机后再尝试加载任何数据存储?如果不行,我有什么替代方案?我知道我可以使用更大的 ESXi 启动盘,但我更希望能够对 vmdisks 进行 ZFSify。
答案1
据我所知,您无法让 ESXi 等待虚拟机启动后再挂载数据存储。但我可能错了。
在任何虚拟机启动之前,数据存储都已经安装完毕。
一般来说,如果您在存储虚拟机启动后对 iSCSI sw 适配器进行重新扫描,iSCSI 会立即连接(重新扫描的效果比 NFS 好得多,在 NFS 中,如果断开连接/不活动一段时间,可能需要相当长的时间才会重新尝试连接)
您可以尝试在存储虚拟机上编写一个 bash 脚本,该脚本在启动来宾操作系统和服务后,它将通过 SSH 连接到 ESXi 并发出 iscsi 适配器重新扫描命令,以便 ESXi 能够看到并挂载 iscsi 数据存储。
但这并不完美,因为您必须手动启动此后可访问的所有其余虚拟机。