将 VDI 直接映射到 XenServer 中的软件 iSCSI LUN

将 VDI 直接映射到 XenServer 中的软件 iSCSI LUN

我在《XenServer 管理员指南》第 4.1.6.2 节中看到,如果您使用的是 NetApp 或 EqualLogic SAN,则可以将原始 LUN 映射到 VDI。是否可以对软件 iSCSI SAN 执行相同操作(即使用基于 Nexenta/ZFS 的 SAN 作为 iSCSI 目标)?我知道我可以设置一个 iSCSI SR 并将 VDI 放在上面,但我想避免这样做,因为否则我必须处理 LVM 的开销,而且这会使克隆更加困难。我会处理来自 SAN 的快照和克隆。所以我基本上只想使用一个 LUN-per-VDI 映射,而不涉及 XenServer 主机内的 LVM。

如果有必要,我并不反对通过 CLI 进行设置。我更喜欢一些可靠的、能够在 XenServer 主机重新启动后继续存在的设置,但如果我必须编写一些脚本来在 VM 启动和 VDI 加载之前初始化 iSCSI 会话,我也可以接受。

答案1

搞清楚了。有一个未记录的“iscsi”SR 驱动程序将创建一个 LUN-per-VDI SR(我在查看 /opt/xensource/sm 目录时发现了它 - 请参阅 ISCSISR.py 文件)。您只能通过命令行进行设置,包括创建 VBD 并将其附加到 VM。VBD 和 VDI 甚至不会显示在 XenCenter 中。

以下是设置它的示例命令:

xe sr-create name-label=san type=iscsi device-config:target=<IP address of target> device-config:targetIQN=<IQN of target> shared=true

这将自动为每个 iSCSI LUN 创建一个 VDI。如果您最终在 SAN 上添加了新的 iSCSI LUN,则在执行以下命令后,XenServer 会为其添加新的 VDI:

xe sr-scan uuid=<UUID of SR>

此外,如果您最终调整了 LUN 的大小,XenServer 不会自动接收该信息,因此您必须执行以下操作:

xe vdi-forget uuid=<UUID of VDI that you resized>
iscsiadm -m node -R
xe sr-scan uuid=<UUID of SR>

创建 VBD 并将其附加到 VM:

xe vbd-create vm-uuid=<UUID of VM> device=<VBD device #, e.g. 0> vdi-uuid=<VDI of UUID>

相关内容