我正在尝试使用 Novell Xen(SLES 10 SP2,因此是 Xen 3.2.x)建立一个迷你云。
我在后面有一个 iSCSI 服务器,使用 Starwind 4.1 目标。问题是当我使用第一台主机写入 iSCSI 服务器时,我无法在第二台主机上看到该文件,反之亦然。
我还尝试了 Citrix XenServer,它使用 LVMoiSCSI,运行起来没有问题
有人能建议如何使用 Novell Xen 吗?我不习惯使用 LVM,因此在开始使用 LVM 之前,我想尝试其他方法。
答案1
我没有使用过 Novell Xen 或 Starwind,我使用过 XenServer 以及 Debian 和 RHEL5 中打包的 Xen。测试 XenServer 时我没有尝试 LVMoiSCSI,因为当时我没有可用的 iSCSI 主机。但根据我对 iSCSI 和 LVM 的理解,我可以大胆猜测,这可能有助于您隔离问题。
根据我的经验,除非使用像 GFS 这样的集群感知文件系统,否则 iSCSI 一直是“一次只能挂载一个系统”。在我自己的 Xen 服务器中,我使用 LVM 来分割 RAID 阵列,以供我的 domU 用作物理设备。我假设 Citrix 已将其纳入其 LVMoiCSCSI 支持中,以便对 iSCSI 卷执行相同的操作。我一定要尝试一下,看看是否能证实我的怀疑。
如果 Citrix 的 LVMoiSCSI 除了将 iSCSI LUN 视为逻辑卷 (LV)(即,没有使其具有集群感知能力)之外没有执行任何特殊操作,您可以尝试让 Novell Xen 系统执行相同的操作。默认情况下,LVM 具有集群感知能力,因此创建的每个 LV 都可以由不同的服务器单独安装,同时它们都具有可访问的 iSCSI 目标 LUN。
LVM 本身相当容易设置和使用,并且命令在任何 Linux 发行版中都应该很简单。
您想要完成的第一件事(我假设您已经完成了)是确保服务器可以访问 iSCSI LUN 并将其视为本地 SCSI 驱动器。
一旦您能够从至少一个系统看到 iSCSI 驱动器,您可能希望将其初始化为物理卷 (PV):
pvcreate /dev/sdX
当然,可以用系统将 iSCSI LUN 视为的任何设备来替换该设备。根据我的经验,这种情况有时会因重新启动而改变。
初始化 PV 后,就可以创建卷组 (VG) 并告诉它使用初始化的 PV 了:
vgcreate XenVG /dev/sdX
其中 XenVG 是您的 VG 名称,并使用您在 PV 初始化步骤中使用的相同设备。现在,如果您运行,vgdisplay
您应该会看到类似以下内容:
--- Volume group ---
VG Name XenVG
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 9
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 204.72 GB
PE Size 32.00 MB
Total PE 6551
Alloc PE / Size 640 / 20.00 GB
Free PE / Size 5911 / 184.72 GB
VG UUID tMHTWV-1dYR-4yB1-tmS5-q1Tk-i3Yx-6l1YLa
这是从我的一个实时 Xen 服务器中获取的,该服务器已设置了一个 20GB LV 切片。从这一点开始,只需为您的 domU 驱动器创建 LV 即可。以最简单的形式,您可以这样做:
lvcreate -L <size> -n <LV name> XenVG
环境为 domU 所需的驱动器容量,我通常设置等于我为其创建的 domU 的主机名。
然后,当您安装 domU 时,您将指定磁盘,/dev/XenVG/<LV name>
Xen 会将其视为物理设备。
这样您就可以让不同的 Xen 服务器从同一个 iSCSI LUN 挂载 LV。您无法同时在两台机器上挂载和使用同一个 LV;但是,如果您有某种形式的 HA 设置,您可以让节点在不同的机器上启动/停止 domU,以保持虚拟服务器的可用性。
上述 LVM 命令还有许多其他选项,我仅给出了最简单的形式。我强烈建议阅读手册页,网上也有几个不错的 LVM HowTos。
答案2
非常感谢您花时间写下这个小教程。LVM 看起来很棒。虽然我已经解决了我的问题,但我会记住这一点。
我的做法是使用 OCFS2(Oracle 集群文件系统),它与 GFS 一样,具有集群感知功能。对我来说,这很好用,而且由于这只是一个测试设置,我不会将其更改为 lvm。