群集 LVM 集成了不同工具:
通过群集范围的锁定协调对多个主机之间共享资源的访问。
LVM2 提供磁盘空间的虚拟池,允许将一个逻辑卷灵活分布到多个磁盘。
群集式 LVM2
一词表示群集环境中使用 LVM2。这需要进行一些配置调整,以保护共享储存上的 LVM2 元数据。自 SUSE Linux Enterprise 15 起,群集扩展使用 lvmlockd,取代了众所周知的 clvmd。有关 lvmlockd 的详细信息,请参见 lvmlockd
命令 的手册页(man 8 lvmlockd
)。
卷组 (VG) 和逻辑卷 (LV) 都属于 LVM2 的基本概念。卷组是多个物理磁盘的储存池。逻辑卷属于卷组,可视为一种弹性卷,您可以在其上创建文件系统。在群集环境中,存在共享 VG 的概念,共享 VG 由共享储存组成,可被多个主机同时使用。
确保满足以下要求:
有共享储存设备可用,例如,该共享储存设备可通过光纤通道、FCoE、SCSI、iSCSI SAN 或 DRBD* 提供。
确保已安装以下包:lvm2
和 lvm2-lockd
。
自 SUSE Linux Enterprise 15 起,我们使用 lvmlockd 作为 LVM2 群集扩展,而不再使用 clvmd。确保 clvmd 守护程序未运行,否则 lvmlockd 将无法启动。
在一个节点上执行以下基本步骤,以在群集中配置共享 VG:
LVM2 和 OCFS2 都需要在群集的所有节点上运行的 DLM 资源,因此该资源通常会配置为克隆资源。如果您的设置包含 OCFS2 和 LVM2,则只需为 OCFS2 和 LVM2 配置一个 DLM 资源就够了。
以 root
用户身份启动外壳并登录。
检查群集资源的当前配置:
root #
crm configure show
如果已经配置 DLM 资源(及相应的基本组和基本克隆),则继续过程 19.2 “创建 lvmlockd 资源”。
否则,如过程 16.2 “配置 DLM 资源”中所述配置 DLM 资源和相应的基本组和基本克隆。
以 root
用户身份启动外壳并登录。
运行以下命令以查看此资源的使用情况:
root #
crm configure ra info lvmlockd
按如下所示配置 lvmlockd
资源:
root #
crm configure primitive lvmlockd ocf:heartbeat:lvmlockd \
op start timeout="90" \
op stop timeout="100" \
op monitor interval="30" timeout="90"
为了确保在每个节点上都启动 lvmlockd
资源,请将原始资源添加到您在过程 19.1 “创建 DLM 资源”中创建的基本组:
root #
crm configure modgroup base-group add lvmlockd
查看所做的更改:
root #
crm configure show
检查资源是否运行正常:
root #
crm status full
以 root
用户身份启动外壳并登录。
假设您已有两个共享磁盘,并使用它们创建共享 VG:
root #
vgcreate --shared vg1 /dev/sda /dev/sdb
创建 LV,但一开始不激活它:
root #
lvcreate -an -L10G -n lv1 vg1
以 root
用户身份启动外壳并登录。
运行以下命令以查看此资源的使用情况:
root #
crm configure ra info LVM-activate
此资源负责管理 VG 的激活。在共享 VG 中,有两种不同的 LV 激活模式:排它模式和共享模式。排它模式是默认模式,通常应在 ext4
等本地文件系统使用 LV 时使用。共享模式仅应用于 OCFS2 等群集文件系统。
配置资源以管理 VG 的激活。根据您的方案,选择下列其中一个选项:
对于本地文件系统使用,请使用排它激活模式:
root #
crm configure primitive vg1 ocf:heartbeat:LVM-activate \
params vgname=vg1 vg_access_mode=lvmlockd \
op start timeout=90s interval=0 \
op stop timeout=90s interval=0 \
op monitor interval=30s timeout=90s
对于 OCFS2 请使用共享激活模式,并将它添加到克隆的基本组:
root #
crm configure primitive vg1 ocf:heartbeat:LVM-activate \ params vgname=vg1 vg_access_mode=lvmlockd activation_mode=shared \ op start timeout=90s interval=0 \ op stop timeout=90s interval=0 \ op monitor interval=30s timeout=90sroot #
crm configure modgroup base-group add vg1
检查资源是否运行正常:
root #
crm status full
以下方案使用两个 SAN 盒,将其 iSCSI 目标导出到多个客户端。大致想法如图 19.1 “使用 cLVM 设置共享磁盘”所示。
以下过程将损坏磁盘上的所有数据!
首先只配置一个 SAN 盒。每个 SAN Box 都需要导出自己的 iSCSI 目标。按如下所示继续:
运行 YaST,然后单击
› 启动 iSCSI 服务器模块。如果要在计算机引导时启动 iSCSI 目标,请选择
,否则请选择 。如果正在运行防火墙,请启用
。切换到
选项卡。如果需要身份验证,请启用传入及/或传出身份验证。在本例中,我们选择 。添加新的 iSCSI 目标:
切换到
选项卡。单击
。输入目标名称。名称需要采用如下所示的格式:
iqn.DATE.DOMAIN
有关格式的更多信息,请参见 3.2.6.3.1. Type "iqn." (iSCSI Qualified Name)(3.2.6.3.1.“iqn.”(iSCSI 限定名称)类型)一节,网址:http://www.ietf.org/rfc/rfc3720.txt。
如果需要描述性更强的名称,可以进行更改,但要确保不同目标之间的标识符是唯一的。
单击
。在
中输入设备名,并使用 。单击
两次。出现警告框时单击
进行确认。
打开配置文件 /etc/iscsi/iscsid.conf
,将参数 node.startup
更改为 automatic
。
现在按如下方式设置 iSCSI 发起程序:
运行 YaST,然后单击
› 。如果要在计算机引导时启动 iSCSI 发起程序,请选择
,否则请将其设置为 。切换到
选项卡并单击 按钮。添加 iSCSI 目标的 IP 地址和端口(请参见过程 19.5 “配置 iSCSI 目标 (SAN)”)。通常,可以保留端口并使用其默认值。
如果使用身份验证,请插入进来的和出去的用户名和口令,否则请激活
。选择
。找到的连接随即显示在列表中。按
继续。
打开外壳,并以 root
用户身份登录。
测试 iSCSI 发起程序是否已成功启动:
root #
iscsiadm
-m discovery -t st -p 192.168.3.100 192.168.3.100:3260,1 iqn.2010-03.de.jupiter:san1
建立会话:
root #
iscsiadm
-m node -l -p 192.168.3.100 -T iqn.2010-03.de.jupiter:san1 Logging in to [iface: default, target: iqn.2010-03.de.jupiter:san1, portal: 192.168.3.100,3260] Login to [iface: default, target: iqn.2010-03.de.jupiter:san1, portal: 192.168.3.100,3260]: successful
使用 lsscsi
查看设备名:
... [4:0:0:2] disk IET ... 0 /dev/sdd [5:0:0:1] disk IET ... 0 /dev/sde
查找第三列中有 IET
的项。在本例中,设备为 /dev/sdd
和 /dev/sde
。
打开已按过程 19.6 “配置 iSCSI 发起程序”运行 iSCSI 发起程序的一个节点上的 root
外壳。
在磁盘 /dev/sdd
和 /dev/sde
上创建共享卷组:
root #
vgcreate --shared testvg /dev/sdd /dev/sde
根据需要创建逻辑卷:
root #
lvcreate
--name lv1 --size 500M testvg
使用 vgdisplay
检查卷组:
--- Volume group --- VG Name testvg System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable Clustered yes Shared no MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 1016,00 MB PE Size 4,00 MB Total PE 254 Alloc PE / Size 0 / 0 Free PE / Size 254 / 1016,00 MB VG UUID UCyWw8-2jqV-enuT-KH4d-NXQI-JhH3-J24anD
创建卷并启动资源后,/dev/testvg
下会显示新的设备名称,例如 /dev/testvg/lv1
。这表示 LV 已激活,可以使用。
如果数据中心位于城市、国家/地区或大洲的不同区域,则可使用以下方案。
创建主/主 DRBD 资源:
首先,按过程 18.1 “手动配置 DRBD”中所述将 DRBD 设备设置为主/从模式。确保两个节点上的磁盘状态均为 up-to-date
。使用 drbdadm status
确认是否如此。
将以下选项添加到配置文件(通常类似 /etc/drbd.d/r0.res
):
resource r0 { startup { become-primary-on both; } net { allow-two-primaries; } ... }
将更改的配置文件复制到另一个节点,例如:
root #
scp
/etc/drbd.d/r0.res venus:/etc/drbd.d/
在两个节点上运行以下命令:
root #
drbdadm
disconnect r0root #
drbdadm
connect r0root #
drbdadm
primary r0
检查节点的状态:
root #
drbdadm
status r0
将 lvmlockd 资源作为克隆包含在 Pacemaker 配置中,并使它依赖于 DLM 克隆资源。有关详细指示信息,请参见过程 19.1 “创建 DLM 资源”。继续之前,请确认这些资源已在群集上成功启动。可以使用 crm status
或 Web 界面检查正在运行的服务。
使用命令 pvcreate
准备 LVM 的物理卷。例如,在设备 /dev/drbd_r0
上,命令应类似于:
root #
pvcreate
/dev/drbd_r0
创建共享卷组:
root #
vgcreate
--shared testvg /dev/drbd_r0
根据需要创建逻辑卷。您有时可能想要更改逻辑卷的大小。例如,使用以下命令创建 4 GB 的逻辑卷:
root #
lvcreate
--name lv1 -L 4G testvg
现在 VG 内的逻辑卷可作为文件系统装入或原始用法提供。确保使用逻辑卷的服务具备适当的依赖项,以便在激活 VG 后对它们进行共置和排序。
完成这些配置步骤后,即可像在任何独立工作站中一样进行 LVM2 配置。
如果看似有若干设备共享同一个物理卷签名(多路径设备或 DRBD 就有可能发生这种情况),建议显式配置 LVM2 扫描 PV 的设备。
例如,如果命令 vgcreate
使用物理设备而非镜像块设备,DRBD 会产生混乱。进而导致 DRBD 出现节点分裂情况。
要停用 LVM2 的单个设备,请执行以下操作:
编辑文件 /etc/lvm/lvm.conf
并搜索以 filter
开头的行。
其中的模式作为正则表达式来处理。前面的“a”表示接受扫描的设备模式,前面的“r”表示拒绝遵守该设备模式的设备。
要删除名为 /dev/sdb1
的设备,请向过滤规则添加以下表达式:
"r|^/dev/sdb1$|"
完整的过滤行将显示如下:
filter = [ "r|^/dev/sdb1$|", "r|/dev/.*/by-path/.*|", "r|/dev/.*/by-id/.*|", "a/.*/" ]
接受 DRBD 和 MPIO 设备但拒绝其他所有设备的过滤行如下所示:
filter = [ "a|/dev/drbd.*|", "a|/dev/.*/by-id/dm-uuid-mpath-.*|", "r/.*/" ]
编写配置文件并将它复制到所有群集节点。
有关 lvmlockd 的详细信息,请参见 lvmlockd
命令 的手册页(man 8 lvmlockd
)。
可从 http://www.clusterlabs.org/wiki/Help:Contents 处的 pacemaker 邮件列表中获取完整信息。