系统通过不同的工具来协调群集 LVM2:
通过锁定机制协调 cLVM 的磁盘访问并调解元数据访问。
支持将一个文件系统灵活分布到多个磁盘上。LVM2 提供虚拟的磁盘空间池。
集成了对 LVM2 元数据的访问,以使每个节点都了解相关更改。cLVM 未集成对共享数据本身的访问;要使 cLVM 可执行此操作,必须在 cLVM 管理的储存区上配置 OCFS2 或其他群集感知应用程序。
根据具体情况,可使用具有以下层的 cLVM 创建 RAID 1 设备:
LVM2: 这是非常灵活的解决方案,可用于增大或减小文件系统大小、添加更多物理储存空间或创建文件系统快照。有关此方法的描述,请参见第 21.2.3 节 “方案:SAN 上 cLVM 与 iSCSI 搭配使用”。
DRBD: 此解决方案仅提供 RAID 0(分段)和 RAID 1(镜像)。有关上一方法的描述,请参见第 21.2.4 节 “方案:使用 DRBD 的 cLVM”。
请确保已满足以下先决条件:
共享储存设备是可用的,如通过光纤通道、FCoE、SCSI、iSCSI SAN 或 DRBD* 提供的共享储存设备。
如果是 DRBD,那么两个节点都必须是主节点(如以下过程中所述)。
检查 LVM2 的锁定类型是否为群集感知。/etc/lvm/lvm.conf
中的关键字 locking_type
必须包含值 3
(默认值为 1
)。如果需要,将此配置复制到所有节点。
检查是否已禁用 lvmetad
守护程序,因为它不能与 cLVM 搭配使用。在 /etc/lvm/lvm.conf
中,关键字 use_lvmetad
必须设置为 0
(默认值为 1
)。如果需要,将此配置复制到所有节点。
准备群集以便使用 cLVM 包括以下基本步骤:
以 root
用户身份启动外壳并登录。
检查群集资源的当前配置:
root #
crm configure show
如果已经配置 DLM 资源(及相应的基本组和基本克隆),则继续过程 21.2 “配置 DLM、CLVM 和 STONITH”。
否则,如过程 17.1 “配置 DLM 的基础组”中所述配置 DLM 资源和相应的基本组和基本克隆。
使用 exit
保留 crm 当前配置。
要跟踪群集中的镜像日志信息,可以使用 cmirrord
守护程序。如果此守护程序未运行,则无法处理群集镜像。
我们假设 /dev/sda
和 /dev/sdb
都是诸如 DRBD、iSCSI 等的共享储存设备。必要时请使用您自己的设备名称替换上述名称。按如下所示继续:
按《安装和设置快速入门》中所述,创建至少包含两个节点的群集。
配置群集以运行 dlm
、clvmd
和 STONITH:
root #
crm
configurecrm(live)configure#
primitive
clvmd ocf:heartbeat:clvm \ params with_cmirrord=1 \ op stop interval=0 timeout=100 \ op start interval=0 timeout=90 \ op monitor interval=20 timeout=20crm(live)configure#
primitive
dlm ocf:pacemaker:controld \ op start timeout="90" \ op stop timeout="100" \ op monitor interval="60" timeout="60"crm(live)configure#
primitive
sbd_stonith stonith:external/sbd \ params pcmk_delay_max=30crm(live)configure#
group
g-storage dlm clvmdcrm(live)configure#
clone
cl-storage g-storage \ meta interleave="true" ordered=true
使用 exit
退出 crmsh 并提交更改。
执行过程 21.3 继续配置磁盘。
创建群集卷组 (VG):
root #
pvcreate
/dev/sda /dev/sdbroot #
vgcreate
-cy vg1 /dev/sda /dev/sdb
在群集中创建镜像日志逻辑卷 (LV):
root #
lvcreate
-n lv1 -m1 -l10%VG vg1 --mirrorlog mirrored
使用 lvs
显示进度。如果百分数已达到 100%,则表示镜像磁盘已成功同步。
要测试群集卷 /dev/vg1/lv1
,请执行下列步骤:
读取或写入到 /dev/vg1/lv1
。
使用 lvchange
-an
停用 LV。
使用 lvchange
-ay
激活 LV。
使用 lvconvert
将镜像日志转换为磁盘日志。
在其他群集 VG 中创建镜像日志 LV。此卷组与先前的卷组不同。
当前的 cLVM 在每个镜像端只能处理一个物理卷 (PV)。如果一个镜像实际由多个需要连接或拆分的 PV 组成,则 lvcreate
无法了解此情况。因此,lvcreate
和 cmirrord
元数据需要了解 PV 在其中一端的“分组”,以便有效地支持 RAID10。
为支持对 RAID10 使用 cmirrord
,请执行下面的过程(假设 /dev/sda
、/dev/sdb
、/dev/sdc
和 /dev/sdd
是共享储存设备):
创建卷组 (VG):
root #
pvcreate
/dev/sda /dev/sdb /dev/sdc /dev/sdd Physical volume "/dev/sda" successfully created Physical volume "/dev/sdb" successfully created Physical volume "/dev/sdc" successfully created Physical volume "/dev/sdd" successfully createdroot #
vgcreate
vgtest /dev/sda /dev/sdb /dev/sdc /dev/sdd Clustered volume group "vgtest" successfully created
打开文件 /etc/lvm/lvm.conf
并转到 allocation
部分。设置下列行并保存文件:
mirror_logs_require_separate_pvs = 1
将标记添加到 PV:
root #
pvchange
--addtag @a /dev/sda /dev/sdbroot #
pvchange
--addtag @b /dev/sdc /dev/sdd
标记是无序的关键字或指派给储存对象元数据的术语。使用标记可以为 LVM2 储存对象的元数据附加无序的标记列表,以实用的方式对此类储存对象的集合进行分类。
列出标记:
root #
pvs
-o pv_name,vg_name,pv_tags /dev/sd{a,b,c,d}
您应收到以下输出结果:
PV VG PV Tags /dev/sda vgtest a /dev/sdb vgtest a /dev/sdc vgtest b /dev/sdd vgtest b
如需有关 LVM2 的更多信息,请参见《SUSE Linux Enterprise Server 12 SP5 储存管理指南》:https://documentation.suse.com/sles-12/html/SLES-all/cha-lvm.html。
以下方案使用两个 SAN 盒,将其 iSCSI 目标导出到多个客户端。大致想法如图 21.1 “设置使用 cLVM 的 iSCSI”所示。
以下过程将损坏磁盘上的所有数据!
首先只配置一个 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 地址和端口(请参见过程 21.4 “配置 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
。
打开已按过程 21.5 “配置 iSCSI 发起程序”运行 iSCSI 发起程序的一个节点上的 root
外壳。
对磁盘 /dev/sdd
和 /dev/sde
使用 pvcreate
命令,为 LVM2 准备好物理卷:
root #
pvcreate
/dev/sddroot #
pvcreate
/dev/sde
在这两个磁盘上创建群集感知卷组:
root #
vgcreate
--clustered y clustervg /dev/sdd /dev/sde
根据需要创建逻辑卷:
root #
lvcreate
-m1 --name clusterlv --size 500M clustervg
使用 pvdisplay
检查物理卷:
--- Physical volume --- PV Name /dev/sdd VG Name clustervg PV Size 509,88 MB / not usable 1,88 MB Allocatable yes PE Size (KByte) 4096 Total PE 127 Free PE 127 Allocated PE 0 PV UUID 52okH4-nv3z-2AUL-GhAN-8DAZ-GMtU-Xrn9Kh --- Physical volume --- PV Name /dev/sde VG Name clustervg PV Size 509,84 MB / not usable 1,84 MB Allocatable yes PE Size (KByte) 4096 Total PE 127 Free PE 127 Allocated PE 0 PV UUID Ouj3Xm-AI58-lxB1-mWm2-xn51-agM2-0UuHFC
使用 vgdisplay
检查卷组:
--- Volume group --- VG Name clustervg 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/dm-*
的新设备。建议使用 LVM2 资源上的群集文件系统,例如 OCFS。有关更多信息,请参见第 18 章 “OCFS2”。
如果数据中心位于城市、国家/地区或大洲的不同区域,则可使用以下方案。
创建主/主 DRBD 资源:
首先,按过程 20.1 “手动配置 DRBD”中所述将 DRBD 设备设置为主/从模式。确保两个节点上的磁盘状态均为 up-to-date
。使用 drbdadm status
确认是否如此。
将以下选项添加到配置文件(通常类似 /etc/drbd.d/r0.res
):
resource r0 { 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
将 clvmd 资源作为克隆品包含在 Pacemaker 配置中,并让它依赖于 DLM 克隆资源。有关详细指示信息,请参见过程 21.1 “创建 DLM 资源”。继续之前,请确认这些资源已在群集上成功启动。可以使用 crm status
或 Web 界面检查正在运行的服务。
使用 pvcreate
命令为 LVM2 准备物理卷。例如,在设备 /dev/drbd_r0
上,命令应类似于:
root #
pvcreate
/dev/drbd_r0
创建群集感知卷组:
root #
vgcreate
--clustered y myclusterfs /dev/drbd_r0
根据需要创建逻辑卷。您可能想要更改逻辑卷的大小。例如,使用以下命令创建 4 GB 的逻辑卷:
root #
lvcreate
-m1 --name testlv -L 4G myclusterfs
现在 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/.*/" ]
编写配置文件并将它复制到所有群集节点。
可从 http://www.clusterlabs.org/wiki/Help:Contents 处的 pacemaker 邮件列表中获取完整信息。
官方 cLVM 常见问题可在以下网址中找到:http://sources.redhat.com/cluster/wiki/FAQ/CLVM。