1、2012.8.27SFCFS1.cvmsfcfs-VxFS2. GAB:Group Membership and Atomic BroadcastLLT:Low Latency Transport/etc/gabtabgabconfig心跳成员集 端口 aI/O 防护成员集 端口 bOracle Disk Manager (ODM) 成员集 端口 d集群文件系统成员集 端口 fVeritas Cluster Server 在 GAB 和高可用性后台驻留程序 (HAD) 之间的通信 端口 h用于将命令从 CVM 从属节点重定向到 CVM 主节点的 Cluster VolumeManager (C
2、VM) 端口 端口 uCluster Volume Manager 成员集 端口 v不同节点上的 Cluster Volume Manager 后台驻留程序使用此端口进行相互通信,但通过 GAB(端口 v)接收集群成员集信息 端口 w运行 SFCFS 安装脚本时,会自动配置 GAB,但在将节点添加到集群时必须重新配置 GAB/etc/llthosts/etc/llttabLLT 可提供内核间通信,并可监视网络通信。通过配置 LLT /etc/llthosts 和/etc/llttab 文件可设置集群内的系统 ID、设置多个集群的集群 ID、调整网络参数(如心跳频率) 。LLT 实施后,可快速反
3、映集群成员集的变动,这转而又能实现快速响应。要添加链路,请键入此命令:# lltconfig -d device-t device_tag其中,device_tag 是用于在后续命令中标识特定链路的标记,将由 lltstat(1M)显示。删除链路要删除链路,请键入此命令:# lltconfig -u device_tag请参见 lltconfig(1M) 手册页。更改立即生效并在下次重新引导时丢失。 要在重新引导后保留更改,还必须更新/etc/llttab 文件。3.要装入的集群文件系统中的第一个节点称为主节点。其他节点称为辅助节点。如果主节点故障,则内部选择进程将确定作为主文件系统的辅助节点
4、。确定主角要确定主角,请键入此命令:# fsclustadm-vshowprimarymount_point指定主节点要指定主节点,请在该节点上键入以下命令:# fsclustadm-vsetprimarymount_point4.需要 NTP 确保时间戳一致5.并行 fsck 的数量6.io 防护 防止脑分裂如果未启用 I/O 防护,则 SFCFS 安装需要两个心跳链接。 如果节点减少为只有一个心跳连接,则 SFCFS 无法再辨别是丢失了系统,还是丢失了最终网络连接。 这种状态被定义为危险。SFCFS 可检测到危险并对危险做出响应,防止在某些裂脑情况下损坏数据。 但是,在其他情况下仍然会发生
5、数据损坏:所有链接同时断开。节点挂起,无法响应心跳消息。要在这些情况下降低数据损坏的机率,I/O 防护是必需的。 启用 I/O 防护时,SFCFS堆栈无需对危险状态进行特殊处理。vxfen 内核防护模块SCSI-3 PGR使用更健壮的 SCSI-3 PGR 机制来防止心跳故障(即裂脑 split brain)导致的数据损坏,这种功能一般叫做 IO fencing;SCSI-3 PR 永久保留但当用于检测故障的机制失败时,问题也随之而来,因为这种机制失败时呈现的症状与故障节点的症状相同。例如,如果双节点集群中有一个系统发生故障,则该系统会停止通过专用互联链路发送心跳。剩余的节点则会采取纠正措施。
6、但是,专用互联链路(而非实际节点)发生故障会呈现相同的症状,并导致每个节点断定其对等端已脱离。这种情况通常会导致数据损坏,因为这两个节点试图以不协调的方式控制数据存储。除了一组中断的专用网络之外,其他情形也可能导致这种情况。如果某个系统太忙,以至于表面上看来停止响应或“挂起” ,则其他节点会将该系统声明为死点。某些节点使用支持“中断”和“恢复”功能的硬件,也可能会将系统声明为死点。如果某个节点因中断而降至 PROM 级别而随后又恢复运行,其他节点可能将该系统声明为死点。即使系统稍后返回运行状态并开始执行写入操作,其他节点也可能会将该系统声明为死点。SFCFS 使用 I/O 防护来消除与裂脑相关
7、的风险。 I/O 防护允许活动集群的成员进行写访问。它能阻止非集群成员对存储进行访问。关于 I/O 防护操作I/O 防护功能由基于内核的防护模块 (vxfen) 提供,该功能在发生节点故障和通信故障时会采取相同的措施。当节点上的防护模块收到 GAB 模块的通知,告知集群成员集发生了更改时,该防护模块会立即启动防护操作。该节点会使用“抢占并中止”命令,尝试将已脱离节点的密钥逐出协调器磁盘。当节点成功地将已脱离的节点逐出协调器磁盘时,也就将其逐出了数据磁盘。在裂脑情形下,这两个拆分的节点会争夺协调器磁盘的控制权。赢得大部分协调器磁盘的节点将夺得控制权,并对失败的节点进行防护。随后,失败的节点发生混
8、乱并重新启动系统。/etc/default/vxfen/etc/vxfendg/etc/vxfenmode/etc/vxfentab (不能修改)page487.共享磁盘组的有效激活模式包括 exclusivewrite、readonly 、sharedread、sharedwrite以及 off(非活动)要显示共享磁盘组的激活模式,请使用 vxdg list 命令8.要配置集群,SFCFS 需要使用 Veritas Cluster Server (VCS)。VCS 提供了 SFCFS必不可少的两个主要组件。LLT 软件包提供了点对点通信并可以监视网络通信。GAB 软件包提供了集群状态、配置和
9、成员集服务,并监视系统之间的心跳链接以确保其处于活动状态。VCS 还提供了其他几个软件包,这些软件包可在安装 SFCFSHA 时提供应用程序故障转移支持。此外,SFCFS 还需要 Veritas Volume Manager (VxVM) 集群功能 (CVM),以便创建在装入集群文件系统时必需的共享卷。cfsmntadm add oradatadg oradatavol /oradata1 all=suid,rwcfsmount /oradata1vxresize -g oradatadg oradatavol +2Gcfscluster statusCFS 使用端口 f 在节点间通信。gab
10、config -a |grep “Port f“您可以使用位于目录 /var/VRTSvcs/log 中的 CFS 代理日志文件调试 CFS 问题。# cd/var/VRTSvcs/log# lsCFSMount_A.logCFSfsckd_A.logengine_A.log代理框架信息位于 engine_A.log 文件中,代理入口点信息位于 CFSMount_A.log 和CFSfsckd_A.log 文件中。CVM 和 SFCFS 各有一个主节点。增加文件系统时,先从 CVM 主节点增加卷和从属节点,接着从任一 SFCFS 节点增加文件系统。CVM 主节点和 SFCFS 节点可以不同。确
11、定集群中的主文件系统要确定集群中的主文件系统,请键入此命令:# fsclustadm-vshowprimarymount_point确定当前节点为 CVM 主节点要确定当前节点是否为 CVM 主节点,请键入此命令:# vxdctl-cmode实际增加文件系统大小1 在 CVM 主节点上,键入此命令:# vxassist-gshared_disk_groupgrowtovolume_namenewlength2 在任一 SFCFS 节点上,键入此命令:# fsadm-Vvxfs-bnewsize-rdevice_namemount_point9.管理 VCS查看可用的 Veritas 设备:#
12、lsdev-C-cvxdrvvxdmp Available Veritas VxDMPDevice Drivervxglm0 Available N/Avxgms0 Available N/Avxio Available Veritas VxIO Device Drivervxportal0 Available VERITAS VxPORTAL Device Drivervxqio0 Defined VERITAS VxQIODevice Drivervxspec Available Veritas VxSPEC Device Driver如果要查看驱动程序 gab 是否已在内存中加载,请执行
13、以下操作:# genkex|grepgab457f000 4ed20/usr/lib/drivers/gab如果要查看 vx 驱动程序是否已在内存中加载,请执行以下操作:# genkex|grepvx55de000 2000 /etc/vx/kernel/dmpjbod55dc000 2000 /etc/vx/kernel/dmpap55da000 2000 /etc/vx/kernel/dmpaa55b5000 21000/usr/lib/drivers/vxodm.ext_6155b2000 3000 /usr/lib/drivers/vxspec4de0000 7ce000 /usr/l
14、ib/drivers/vxio4d7a000 62000/usr/lib/drivers/vxdmp4cee000 3d000/usr/lib/drivers/vxgms.ext_614c7e000 4d000/usr/lib/drivers/vxfen4bf3000 e000 /usr/lib/drivers/vxqio.ext_614bef000 3000 /usr/lib/drivers/vxportal.ext_614969000 232000 /usr/lib/drivers/vxfs.ext_6148fa000 3e000/usr/lib/drivers/vxglm.ext若要验证
15、 VCS 配置:# cd/etc/VRTSvcs/conf/config# hacf-verify.启动和停止 VCS在每个节点上启动 VCS# hastart在每个节点上停止 VCS# hastop-local配置 LLT 的基于目标的负载平衡 运行以下命令可以配置基于目标的负载平衡:lltconfig-Flinkburst:010.管理 CVM验证 CVM 是否正常启动:# vxclustadm nidmapName CVM Nid CM Nid Statesystem01 0 0 Joined: Mastersystem02 1 1 Joined: Slave手工更改 master 主节
16、点vxclustadm setmaster nodenamevxclustadm -v nodestateCVM 日志文件/var/VRTSvcs/log 目录包含代理日志文件。# cd/var/VRTSvcs/log# ls-l*CVM*engine_A.logCVMCluster_A.log # CVM AgentlogCVMVolDg_A.log # CVM VolDgAgentlogCVMVxconfigd_A.log # CVM vxconfigd Agentlogengine_A.log # VCS log您可以使用 cmdlog 文件查看已执行的 CVM 命令列表。该文件位于/v
17、ar/adm/vx/cmdlog。要显示节点 ID 为 1 的系统上的协调器磁盘 /dev/hdisk75 的键,请输入以下命令:# vxfenadm-s/dev/hdisk75key1:Numeric Format: 86,70,68,69,69,68,48,48CharacterFormat: VFDEED00* NodeFormat: Cluster ID: 57069Node ID: 0 Node Name:system01显示 CVM 并行磁盘组上的键:# vxfenadm-s/dev/vx/rdmp/disk_7显示协调器磁盘上的所有键:# vxfenadm-sall-f/etc/
18、vxfentabDevice Name:/dev/vx/rdmp/disk_9TotalNumber Of Keys:2key0:Numeric Format: 86,70,66,69,65,68,48,50CharacterFormat: VFBEAD02NodeFormat: Cluster ID: 48813Node ID: 2 Node Name:unknownkey1:Numeric Format: 86,70,68,69,69,68,48,48CharacterFormat: VFDEED00* NodeFormat: Cluster ID: 57069Node ID: 0 Nod
19、e Name:system01可使用 lltstat -C 命令验证集群 ID,使用 lltstat -N 命令验证节点 ID。例如:# lltstat-C57069如果磁盘的键不属于特定集群,则 vxfenadm 命令无法查找节点 ID 对应的节点名称,从而会将节点名称输出为 unknown。例如:Device Name:/dev/vx/rdmp/disk_7TotalNumber Of Keys:1key0:Numeric Format: 86,70,45,45,45,45,48,49CharacterFormat: VF-01NodeFormat: Cluster ID: unknown
20、 Node ID: 1 Node Name:system02对于具有任意键格式的磁盘,vxfenadm 会将所有字段都输出为 unknown。例如:Numeric Format: 65,66,67,68,49,50,51,45CharacterFormat: ABCD123-NodeFormat: Cluster ID: unknown Node ID: unknownNode Name:unknown在裂脑发生之后清除键1 在所有节点上停止 VCS。# hastop-all2 确保所有节点已关闭端口 h。在每个节点上运行下列命令以验证端口 h 是否已关闭:# gabconfig-a端口 h
21、不能在输出中出现。3 在所有节点上停止 I/O 防护。在每个节点上,输入以下命令:# /etc/init.d/vxfen.rcstop4 如果有在 VCS 控制之外运行且可访问共享存储的应用程序,则关闭集群中所有可访问共享存储的其他节点。这样可防止数据损坏。5 启动 vxfenclearpre 脚本:# vxfenclearpre6 阅读脚本的介绍和警告。然后,可以选择运行脚本。Do you stillwant to continue: y/n(default : n) y该脚本清理磁盘并显示下列状态消息。Cleaning up the coordinator disks.Cleaning u
22、p the data disksfor all shared disk groups.Successfully removed SCSI-3 persistentregistration andreservations from the coordinator disksas well as theshared data disks.You can retrystarting fencing module. In ordertorestart the wholeproduct, you mightwant toreboot the system.7 启动防护模块。# /etc/init.d/v
23、xfen.rcstart清除注册# /opt/VRTSvcs/vxfen/bin/vxfenclearpre当 I/O 防护尝试失败时手动将节点加入到此集群中 如果 vxfen 脚本尝试允许该节点加入此集群失败,请使用以下命令重新启动vxfen 驱动程序:# /etc/init.d/vxfen.rcstop# /etc/init.d/vxfen.rcstart如果该命令失败,请重新启动新节点。重新启动时忽略 DISK OPERATION ERROR 消息安装 SFCFS 并配置 I/O 防护后重新启动系统时,可以放心地忽略类似以下内容的错误消息:.DCB47997 0506172404T H
24、hdisk13 DISK OPERATION ERRORDCB47997 0506172404T H hdisk13 DISK OPERATION ERRORDCB47997 0506172404T H hdisk17 DISK OPERATION ERROR启动过程中发生 SCSI 保留错误重新启动 SFCFS 集群的节点时,可能出现 SCSI 保留错误,例如:date system name kernel: scsi3(0,0,6) : RESERVATION CONFLICT对 SCSI-3 PR I/O 防护保护的任何共享磁盘组的每个磁盘成员,都会显示此消息。可以放心地忽略此消息。所有
25、 SFCFS 节点都处于 ADMIN_WAIT 状态在集群因为停电而出现混乱、重新通电并重新启动 SFCFS 节点时,由于磁盘上的I/O 防护键失效而导致 I/O 防护启动失败。这种情况会导致节点处于 ADMIN_WAIT状态启动处于 ADMIN_WAIT 状态的节点1 验证集群中节点的状态。# hastatus-summary- SYSTEM STATE- System StateFrozenA system01 ADMIN_WAIT0A system02 ADMIN_WAIT02 使用 vxfenclearpre 命令清除失效的 I/O 防护键。请参见第 84 页的“关于 vxfenclearpre 实用程序” 。3 启动 I/O 防护驱动程序:# /etc/init.d/vxfen.rcstart4 使用 hasys-force 命令在集群的任意节点中启动 VCS。此命令会强制 VCS 引擎使用您在该命令中指定的节点中的配置文件。例如:#hasys -force system01