适用于 SUSE Linux Enterprise High Availability Extension 12 SP5

18 OCFS2

摘要

Oracle Cluster File System 2 (OCFS2) 是一个自 Linux 2.6 内核以来完全集成的通用日记文件系统。OCFS2 可将应用程序二进制文件、数据文件和数据库储存到共享储存设备。群集中的所有节点对文件系统都有并行的读和写权限。用户空间控制守护程序(通过克隆资源管理)提供与 HA 堆栈的集成,尤其是与 Corosync 和分布式锁管理器 (DLM) 的集成。

18.1 功能和优点

OCFS2 可用于以下储存解决方案,例如:

  • 一般应用程序和工作负荷。

  • 群集中的 Xen 映像存储。Xen 虚拟机和虚拟服务器可存储于由群集服务器安装的 OCFS2 卷中。它提供了 Xen 虚拟机在各服务器之间的快速便捷的可移植性。

  • LAMP (Linux、Apache、MySQL 和 PHP | Perl | Python) 堆栈。

作为高性能、非对称的并行群集文件系统,OCFS2 支持以下功能:

  • 应用程序文件对群集中的所有节点均可用。用户只需在群集中的 OCFS2 上安装它一次。

  • 所有节点都可以通过标准文件系统接口直接并行读写至储存区,从而方便地管理运行于群集上的应用程序。

  • 文件访问通过 DLM 协调。DLM 控制在多数情况下都运行良好,但如果应用程序的设计与 DLM 争夺对文件访问的协调,则此设计可能会限制可伸缩性。

  • 所有后端储存上都可以使用储存备份功能。可以方便地创建共享应用程序文件的图形,它能够帮助提供有效的故障恢复。

OCFS2 还提供以下功能:

  • 元数据缓存。

  • 元数据日记。

  • 跨节点的文件数据一致性。

  • 支持多达 4 KB 的多个块大小、多达 1 MB 的群集大小,最大卷大小为 4 PB (Petabyte)。

  • 支持最多 32 个群集节点。

  • 对于数据库文件的异步和直接 I/O 支持,提高了数据库性能。

注意
注意:OCFS2 的支持

仅当与 SUSE Linux Enterprise High Availability Extension 提供的 pcmk (Pacemaker) 堆栈搭配使用时,SUSE 才支持 OCFS2。与 o2cb 堆栈结合使用时,SUSE 不提供对 OCFS2 的支持。

18.2 OCFS2 包和管理实用程序

OCFS5 内核模块(ocfs2)自动安装到 SUSE® Linux Enterprise Server 12 SP2 中的 High Availability Extension 上。要使用 OCFS2,请确保在群集中的每个节点上安装以下包:ocfs2-tools 和与内核匹配的 ocfs2-kmp-* 包。

ocfs2-tools 包提供以下实用程序,用于管理 OFS2 卷。有关语法信息,请参见其手册页。

表 18.1︰ OCFS2 实用程序

OCFS2 实用程序

描述

debugfs.ocfs2

检查 OCFS 文件系统的状态以进行调试。

fsck.ocfs2

检查文件系统的错误并进行选择性的修改。

mkfs.ocfs2

在某个设备上创建 OCFS2 文件系统,通常是共享物理或逻辑磁盘上的某个分区。

mounted.ocfs2

检测并列出群集系统上所有的 OCFS2 卷。检测并列出已经安装了 OCFS2 设备的系统上的所有节点或列出所有的 OCFS2 设备。

tunefs.ocfs2

更改 OCFS2 文件系统参数,包括卷标、节点槽号、所有节点槽的日志大小和卷大小。

18.3 配置 OCFS2 服务和 STONITH 资源

创建 OCFS2 卷之前,必须先将 DLM 和 STONITH 资源配置为群集中的服务。

以下过程使用 crm 外壳配置群集资源。或者,您也可以按第 18.6 节 “使用 Hawk2 配置 OCFS2 资源”中所述,使用 Hawk2 来配置资源。

过程 18.1︰ 配置 STONITH 资源
注意
注意:所需的 STONITH 设备

您需要配置屏蔽设备。没有一个适当的 STONITH 机制(如 external/sbd),则配置会失败。

  1. 启动壳层,并以 root 用户身份或同等身份登录。

  2. 过程 11.3 “初始化 SBD 设备”中所述,创建 SBD 分区。

  3. 运行 crm configure

  4. external/sbd 配置为屏蔽设备,并将 /dev/sdb2 作为存储检测信号和屏蔽的共享储存上的专用分区:

    crm(live)configure# primitive sbd_stonith stonith:external/sbd \
      params pcmk_delay_max=30 meta target-role="Started"
  5. 使用 show 复查更改。

  6. 如果全部都正确,请使用 commit 提交更改,并使用 exit 退出 crm 当前配置。

有关为 DLM 配置资源组的细节,请参见过程 17.1 “配置 DLM 的基础组”

18.4 创建 OCFS2 卷

根据第 18.3 节 “配置 OCFS2 服务和 STONITH 资源”中所述配置 DLM 群集资源后,请将系统配置为使用 OCFS2,并创建 OCFs2 卷。

注意
注意:适用于应用程序和数据文件的 OCFS2 卷

我们建议您通常将应用程序文件和数据文件储存在不同的 OCFS2 卷上。如果应用程序卷和数据卷具有不同的装入要求,则必须将它们储存在不同的卷上。

开始之前要准备计划用于 OCFS2 卷的块设备。将这些设备留作可用空间。

然后,按过程 18.2 “创建并格式化 OCFS2 卷”中所述使用 mkfs.ocfs2 创建和格式化 OCFS2 卷。此命令最重要的参数列于表 18.2 “重要的 OCFS2 参数”中。有关此命令的更多信息和命令语法,请参见 mkfs.ocfs2 手册页。

表 18.2︰ 重要的 OCFS2 参数

OCFS2 参数

描述和建议

卷标 (-L)

卷的描述性名称能够在不同节点上安装卷时唯一标识它。使用 tunefs.ocfs2 实用程序根据需要修改该卷标。

群集大小 (-C)

群集大小是分配给文件以保存数据的最小空间单元。有关可用选项和推荐的信息,请参见 mkfs.ocfs2 手册页。

节点槽数 (-N)

可以同时安装卷的最大节点数。OCFS2 将为每个节点创建单独的系统文件(如日记)。访问卷的节点可以是小端体系结构(如 AMD64/Intel 64)和大端体系结构(如 System z)的组合。

节点特定的文件称为本地文件。节点槽号附加到该本地文件。例如:journal:0000 属于指派到槽号 0 的所有节点。

根据预期有多少个节点并行装入卷,在创建卷时设置每个卷的最大节点槽数。使用 tunefs.ocfs2 实用程序根据需要增加节点槽数。请注意,此值不能减小。

如果未指定 -N 参数,系统会根据文件系统的大小确定槽数。

块大小 (-b)

文件系统可寻址的最小空间单元创建卷时请指定块大小。有关可用选项和推荐的信息,请参见 mkfs.ocfs2 手册页。

打开/关闭特定功能 (--fs-features)

可以提供功能标志的逗号分隔列表,mkfs.ocfs2 会尝试根据此列表创建具有那些功能的文件系统。要打开某功能,请将其加入列表。要关闭某功能,请在其名称前加 no

有关所有可用标志的概述,请参见 mkfs.ocfs2 手册页。

预定义功能 (--fs-feature-level)

允许您从一组预定义文件系统功能中进行选择。有关可用选项的信息,请参见 mkfs.ocfs2 手册页。

如果使用 mkfs.ocfs2 创建和格式化卷时未指定任何功能,则默认情况下将启用以下功能:backup-supersparseinline-dataunwrittenmetaeccindexed-dirsxattr

过程 18.2︰ 创建并格式化 OCFS2 卷

只在群集节点之上执行以下步骤。

  1. root 用户身份打开终端窗口并登录。

  2. 使用命令 crm status 检查群集是否联机。

  3. 使用 mkfs.ocfs2 实用程序创建并格式化卷。有关此命令语法的信息,请参见 mkfs.ocfs2 手册页。

    例如,要在 /dev/sdb1 上创建最多支持 32 个群集节点的新 OCFS2 文件系统,请输入以下命令:

    root #  mkfs.ocfs2 -N 32 /dev/sdb1

18.5 装入 OCFS2 卷

可以手动装入 OCFS2 卷,也可以按过程 18.4 “使用群集资源管理器装入 OCFS2 卷”中所述使用群集管理器将其装入。

过程 18.3︰ 手动装入 OCFS2 卷
  1. root 用户身份打开终端窗口并登录。

  2. 使用命令 crm status 检查群集是否联机。

  3. 使用 mount 命令从命令行装入卷。

警告
警告:手动装入的 OCFS2 设备

如果为方便测试而手动装入了 OCFS2 文件系统,在开始将其作为群集资源使用前,请务必将其卸载恢复原状。

过程 18.4︰ 使用群集资源管理器装入 OCFS2 卷

要使用 High Availability 软件装入 OCFS2 卷,请在群集中配置 ocfs2 文件系统资源。以下过程使用 crm 外壳配置群集资源。或者,您也可以按第 18.6 节 “使用 Hawk2 配置 OCFS2 资源”中所述,使用 Hawk2 来配置资源。

  1. 启动壳层,并以 root 用户身份或同等身份登录。

  2. 运行 crm configure

  3. 配置 Pacemaker 以在群集中的每个节点上装入 OCFS2 文件系统:

    crm(live)configure# primitive ocfs2-1 ocf:heartbeat:Filesystem \
      params device="/dev/sdb1" directory="/mnt/shared" \
      fstype="ocfs2" options="acl" \
      op monitor interval="20" timeout="40" \
      op start timeout="60" op stop timeout="60" \
      meta target-role="Stopped"
  4. ocfs2-1 原始资源添加到您在过程 17.1 “配置 DLM 的基础组”中创建的 g-storage 组。

    crm(live)configure# modgroup g-storage add ocfs2-1

    add 子命令默认会追加新的组成员。由于基本组具有内部共置和顺序约束,Pacemaker 将仅在也已运行 dlm 资源的节点上启动 ocfs2-1 资源。

  5. 使用 show 复查更改。

  6. 如果全部都正确,请使用 commit 提交更改,并使用 exit 退出 crm 当前配置。

18.6 使用 Hawk2 配置 OCFS2 资源

除了使用 crm 外壳为 OCFS2 手动配置 DLM 和文件系统资源以外,您还可以使用 Hawk2 设置向导中的 OCFS2 模板。

重要
重要:手动配置与使用 Hawk2 的差别

设置向导中的 OCFS2 模板包括 STONITH 资源的配置。如果使用该向导,仍需在共享储存上创建 SBD 分区,并根据过程 18.1 “配置 STONITH 资源”中所述配置一个 STONITH 资源。

使用 Hawk2 设置向导中的 OCFS2 模板还会导致资源配置与过程 17.1 “配置 DLM 的基础组”过程 18.4 “使用群集资源管理器装入 OCFS2 卷”中所述的手动配置略有不同。

过程 18.5︰ 使用 Hawk2 的向导配置 OCFS2 资源
  1. 登录 Hawk2:

    https://HAWKSERVER:7630/
  2. 在左侧导航栏中,选择向导

  3. 展开文件系统类别,然后选择 OCFS2 文件系统

  4. 按照屏幕指导执行操作。如果需要有关某个选项的信息,在 Hawk2 中单击它即可显示简短帮助文本。完成最后的配置步骤后,校验您所输入的值。

    向导会显示将应用于 CIB 的配置代码片段以及任何其他更改(如果需要)。

  5. 检查建议的更改。如果一切都符合您的预期,请应用更改。

    如果操作成功,屏幕上会显示一条讯息。

18.7 在 OCFS2 文件系统上使用定额

要在 OCFS2 文件系统上使用定额,请分别使用相应的定额功能或装入选项创建和装入文件系统:ursquota(用于单独用户的定额)或 grpquota(用于组的定额)。这些功能也可以稍后使用 tunefs.ocfs2 在未装入的文件系统上启用。

文件系统启用了相应的定额功能后,它会跟踪其元数据,查看每个用户(或组)使用的空间和文件数。由于 OCFS2 将定额信息视为文件系统内部元数据,因此您无需运行 quotacheck(8) 程序。所有功能都内置到 fsck.ocfs2 和文件系统驱动程序中。

要实施强加于每个用户或组的限制,请如同在任何其他文件系统上一样运行 quotaon(8)。

由于性能原因,每个群集节点都会在本地执行定额会计,并每 10 秒将此信息与通用中央储存同步一次。此间隔可使用 tunefs.ocfs2、选项 usrquota-sync-intervalgrpquota-sync-interval 进行调整。因此,定额信息可能不会始终都准确,因而在几个群集节点上并行操作时,用户或组可以稍微超出其定额限制。

18.8 更多信息

有关 OCFS2 的更多信息,请参见以下链接:

https://ocfs2.wiki.kernel.org/

OCFS2 项目主页。

http://oss.oracle.com/projects/ocfs2/

Oracle 上的原 OCFS2 项目主页。

http://oss.oracle.com/projects/ocfs2/documentation

项目的原文档主页。

打印此页