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 支持,提高了数据库性能。
仅当与 SUSE Linux Enterprise High Availability Extension 提供的 pcmk (Pacemaker) 堆栈搭配使用时,SUSE 才支持 OCFS2。与 o2cb 堆栈结合使用时,SUSE 不提供对 OCFS2 的支持。
18.2 OCFS2 包和管理实用程序 #
OCFS2 内核模块(ocfs2
)自动安装到 SUSE® Linux Enterprise Server 15 SP2 中的 High Availability Extension 上。要使用 OCFS2,请确保在群集中的每个节点上安装您内核适用的以下包: ocfs2-tools 及匹配的 ocfs2-kmp-*
包。
此 ocfs2-tools 包提供以下实用程序,用于管理 OFS2 卷。有关语法信息,请参见其手册页。
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 来配置资源。
您需要配置屏蔽设备。没有一个适当的 STONITH 机制(如 external/sbd
),则配置会失败。
启动壳层,并以
root
用户身份或同等身份登录。如过程 11.3 “初始化 SBD 设备”中所述,创建 SBD 分区。
运行
crm
configure
。将
external/sbd
配置为屏蔽设备,并将/dev/sdb2
作为存储检测信号和屏蔽的共享储存上的专用分区:crm(live)configure#
primitive
sbd_stonith stonith:external/sbd \ params pcmk_delay_max=30 meta target-role="Started"使用
show
复查更改。如果全部都正确,请使用
commit
提交更改,并使用exit
退出 crm 当前配置。
有关为 DLM 配置资源组的细节,请参见过程 17.1 “配置 DLM 的基础组”。
18.4 创建 OCFS2 卷 #
根据第 18.3 节 “配置 OCFS2 服务和 STONITH 资源”中所述配置 DLM 群集资源后,请将系统配置为使用 OCFS2,并创建 OCFs2 卷。
我们建议您通常将应用程序文件和数据文件储存在不同的 OCFS2 卷上。如果应用程序卷和数据卷具有不同的装入要求,则必须将它们储存在不同的卷上。
开始之前要准备计划用于 OCFS2 卷的块设备。将这些设备留作可用空间。
然后,按过程 18.2 “创建并格式化 OCFS2 卷”中所述使用 mkfs.ocfs2
创建和格式化 OCFS2 卷。此命令最重要的参数列于表 18.2 “重要的 OCFS2 参数”中。有关此命令的更多信息和命令语法,请参见 mkfs.ocfs2
手册页。
OCFS2 参数 |
描述和建议 |
---|---|
卷标 ( |
卷的描述性名称能够在不同节点上安装卷时唯一标识它。使用 |
群集大小 ( |
群集大小是分配给文件以保存数据的最小空间单元。有关可用选项和推荐的信息,请参见 |
节点槽数 ( |
可以同时安装卷的最大节点数。OCFS2 将为每个节点创建单独的系统文件(如日记)。访问卷的节点可以是小端体系结构(如 AMD64/Intel 64)和大端体系结构(如 S/390x)的组合。
节点特定的文件称为本地文件。节点槽号附加到该本地文件。例如:
根据预期有多少个节点并行装入卷,在创建卷时设置每个卷的最大节点槽数。使用
如果未指定 |
块大小 ( |
文件系统可寻址的最小空间单元创建卷时请指定块大小。有关可用选项和推荐的信息,请参见 |
打开/关闭特定功能 ( |
可以提供功能标志的逗号分隔列表,
有关所有可用标志的概述,请参见 |
预定义功能 ( |
允许您从一组预定义文件系统功能中进行选择。有关可用选项的信息,请参见 |
如果使用 mkfs.ocfs2
创建和格式化卷时未指定任何功能,则默认情况下将启用以下功能:backup-super
、sparse
、inline-data
、unwritten
、metaecc
、indexed-dirs
和 xattr
。
只在群集节点之一上执行以下步骤。
以
root
用户身份打开终端窗口并登录。使用命令
crm status
检查群集是否联机。使用
mkfs.ocfs2
实用程序创建并格式化卷。有关此命令语法的信息,请参见mkfs.ocfs2
手册页。例如,要在
/dev/sdb1
上创建最多支持 32 个群集节点的新 OCFS2 文件系统,请输入以下命令:root #
mkfs.ocfs2 -N 32 /dev/sdb1
18.5 装入 OCFS2 卷 #
可以手动装入 OCFS2 卷,也可以按过程 18.4 “使用群集资源管理器装入 OCFS2 卷”中所述使用群集管理器将其装入。
以
root
用户身份打开终端窗口并登录。使用命令
crm status
检查群集是否联机。使用
mount
命令从命令行装入卷。
如果为方便测试而手动装入了 OCFS2 文件系统,在开始将其作为群集资源使用前,请务必将其卸载恢复原状。
要使用 High Availability 软件装入 OCFS2 卷,请在群集中配置 ocfs2 文件系统资源。以下过程使用 crm
外壳配置群集资源。或者,您也可以按第 18.6 节 “使用 Hawk2 配置 OCFS2 资源”中所述,使用 Hawk2 来配置资源。
启动壳层,并以
root
用户身份或同等身份登录。运行
crm
configure
。配置 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="Started"将
ocfs2-1
原始资源添加到您在过程 17.1 “配置 DLM 的基础组”中创建的g-storage
组。crm(live)configure#
modgroup
g-storage add ocfs2-1add
子命令默认会追加新的组成员。由于基本组具有内部共置和顺序约束,Pacemaker 将仅在也已运行dlm
资源的节点上启动ocfs2-1
资源。使用
show
复查更改。如果全部都正确,请使用
commit
提交更改,并使用exit
退出 crm 当前配置。
18.6 使用 Hawk2 配置 OCFS2 资源 #
除了使用 crm 外壳为 OCFS2 手动配置 DLM 和文件系统资源以外,您还可以使用 Hawk2
中的 OCFS2 模板。不包括 STONITH 资源的配置。如果使用该向导,仍需在共享储存上创建 SBD 分区,并根据过程 18.1 “配置 STONITH 资源”中所述配置一个 STONITH 资源。
中的 OCFS2 模板使用 Hawk2 过程 17.1 “配置 DLM 的基础组”和过程 18.4 “使用群集资源管理器装入 OCFS2 卷”中所述的手动配置略有不同。
中的 OCFS2 模板还会导致资源配置与18.7 在 OCFS2 文件系统上使用定额 #
要在 OCFS2 文件系统上使用定额,请分别使用相应的定额功能或装入选项创建和装入文件系统:ursquota
(用于单独用户的定额)或 grpquota
(用于组的定额)。这些功能也可以稍后使用 tunefs.ocfs2
在未装入的文件系统上启用。
文件系统启用了相应的定额功能后,它会跟踪其元数据,查看每个用户(或组)使用的空间和文件数。由于 OCFS2 将定额信息视为文件系统内部元数据,因此您无需运行 quotacheck
(8) 程序。所有功能都内置到 fsck.ocfs2 和文件系统驱动程序中。
要实施强加于每个用户或组的限制,请如同在任何其他文件系统上一样运行 quotaon
(8)。
由于性能原因,每个群集节点都会在本地执行定额会计,并每 10 秒将此信息与通用中央储存同步一次。此间隔可使用 tunefs.ocfs2
、选项 usrquota-sync-interval
和 grpquota-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
项目的原文档主页。