系统通过不同的工具来协调群集 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 #crmconfigurecrm(live)configure#primitiveclvmd 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#primitivedlm ocf:pacemaker:controld \ op start timeout="90" \ op stop timeout="100" \ op monitor interval="60" timeout="60"crm(live)configure#primitivesbd_stonith stonith:external/sbd \ params pcmk_delay_max=30crm(live)configure#groupg-storage dlm clvmdcrm(live)configure#clonecl-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 #vgcreatevgtest /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 #drbdadmdisconnect r0root #drbdadmconnect r0root #drbdadmprimary r0
检查节点的状态:
root #drbdadmstatus 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。