|
谈论 Linux
OCFS 更新 作者:Wim Coekaerts
为什么要转用 OCFS version 1.0.9.12?什么时候将提供对异步输入/输出的支持?Oracle 的 Linux 设计主管 Wim Coekaerts 将回答这些问题。
因为我们常常收到关于 Linux 上的 Oracle 集群文件系统 (OCFS) 的特定应用的问题和 bug 报告,以及产品版本和功能的时间表的问题,所以我认为提供我们目前所处的状况的一个相对简短的概要,以及回答一些最常见的问题是个很好的主意。
为什么我应该升级到 version 1 的新版本? Version 1 是大约一年前发布的,并且仍然是目前主要的版本号。OCFS 的主要目标是提供原始设备的一个替代物。它不是被设计用作一个一般用途的集群文件系统,它也不是被设计来存储非数据库文件。对于数据库文件,我的意思是数据文件、重做日志文件、存档日志文件、控制文件、仲裁磁盘文件和 spfile 文件。
将这个文件系统用于任何其它类型的文件都没有经过充分的测试,因为最初目标中不包含这种功能;OCFS 与其它的文件系统(如 ufs、vxfs 和 ext2/3)不能相比。换句话说,ctime/utime/mtimes 的更新不一定是类似的。当一个文件移动时,OCFS 有一种显示节点编号的不同方法,并且您将以不同类型的时间戳记更新结束。基本上,我们尽可能努力地保持了性能,并保持 RDBMS 满意。能超越这些当然好,但并不是必需的。
当由 Oracle 使用时,OCFS 的原始性能类似于执行原始输入/输出的性能。代码本身几乎相同,我们依靠数据库来处理或维护 I/O 并发。这种方法允许我们保持性能,但要这么做,我们必须想出一些窍门。
当数据库在 OCFS 上打开一个文件时,它用一个额外的标记 O_DIRECT 来打开它。当用 O_DIRECT 来打开任意节点上的一个文件时,不允许进行频繁的文件访问。通过标准 OS 工具来尝试一次 cp、md5sum 或 dd 操作在 –EPERM 上将失败。如果您想要能够在数据库运行时使用 cp 或 dd — 例如,做一次热备份 — 那么您需要下载更新的文件实用程序包或使用 RMAN。
这些更新的文件实用程序 — cp、dd 和类似的程序 — 选择一个选项,o_direct=yes,这使得该工具在打开文件时也使用 o_direct。
使用 O_direct 使得文件系统性能更高。如果您想要使用 dd 或 cp,您还应当增加一个大的内存块;对于 OCFS,最理想的大小是在 512K 到 1MB 之间。例如:
dd o_direct=yes if=/ocfs/foo of=/backup/foo.bak bs=1M
对于 Red Hat Enterprise Linux 2.1 Advanced Server (RHAS2.1),首选的内核是 2.4.9-e.25 及更高版本。您应该使用的 OCFS 版本是 1.0.9.9 或更高版本(目前,1.0.9.12 是最新的版本)。对于那些正运行一个较旧版本的用户,有以下几个原因要转移到这个版本:
- 以挂起或内核“出错”结束的内核堆栈溢出警告: Linux 内核每个过程有一个 8K 的内核堆栈。过程结构正好位于它底下,因此如果驱动程序或内核代码过度使用这个堆栈,它潜在地可能覆盖过程结构,并导致系统挂起或系统出错。Linux 内核通常在 /var/log/messages 中生成 do_IRQ 警告。虽然这个警告本身不是个问题,但它的确表示您正接近 2K 的界限。在 1.0.9.9 中,我们对 OCFS 内核堆栈的使用进行了一次重大的清除。几个拥有沉重的 I/O(网络和磁盘 I/O)负载的客户发现了一些原因不明的锁住问题;不过,通过我们的清除,大多数问题消失了。注意,如果在堆栈中没有 OCFS,您很可能得到相同的警告。因此,如果您遇到了挂起或系统崩溃,在跟踪时它们发现了许多 do_IRQ() 的例程,那么我强烈建议您转用这个版本。
- 多节点配置且对单个 OCFS 分区进行频繁的存档操作的客户: 有一个非常小的窗口,其中两个节点可能分配了同一磁盘位置上的空间。这种情况虽然很少出现,会导致存档日志崩溃。
一些问题提示: 如果一个系统完全锁住或崩溃,而报表没有显示堆栈中有 OCFS,那么原因不可能是 OCFS。如果一个系统可以执行 ping 操作但在其它情况下不响应,那么可能涉及到一般的内核 VM 问题。
如果一条命令(如 ls)挂起,请检查 ps,并查看过程状态是否改变。如果这个过程处于 D 状态,并从未变化,那么它可能被固定住了。如果它围绕着 D、S、R 变化,那么它正在工作。
对于任何严重的问题,请联系支持小组或记录 bug,以使它们能够得到解决。
即将为 OCFS version 1 推出的版本和端口是什么? 相同的 1.0.9.9 版本将在 Red Hat Enterprise Linux 3 上发布,并且在即将推出的 SUSE/United Linux1.0 SP2a 和 SP3 上发布。
针对 IA64,我们计划为 RHEL2.1 进行一次更新,并为 RHEL3 和 SUSE/United Linux1.0 SP2 for IA64 设计一个版本。我们期望所有这些版本在 11 月中旬之前同步推出。
针对 AMD64 的一个版本正在设计之中,并将在我们发布 Oracle9i Database R2 production for AMD64 时推出。
什么时候将提供对异步输入/输出的支持? 相同的 1.0.9.9 版本在 Red Hat Enterprise Linux 3 上发布,并在即将推出的 SUSE/United Linux1.0 SP2a 和 SP3 上发布。
OCFS version 2 中新增了哪些内容? 即将推出测试版的 version 2 将允许共享 Oracle 主页安装,并将支持 Oracle 二进制和日志/跟踪文件的安装。Version 2 还将可能支持几种非 Oracle 产品,但它将不支持一般的集群文件系统。version 2 的目标时间安排是在 Oracle Database 10g 的生产版本之前。Version 2 将继续支持 Oracle RDBMS — 就像它现在支持一样,而不会带来性能损失。
Version 2 还包含了一次重大的改写,以允许数据高速缓存并减少在文件系统中分配的结构的数量。
让我们谈论 Linux。将您的问题通过电子邮件发送到 talkinglinux_ww@oracle.com。
Wim Coekaerts (talkinglinux_ww@oracle.com) 是技术团队 Corporate Architecture 的主要成员。在专门为 Larry Ellison 设计了一个基于 Linux 的互联网工具之后,他获得了 Oracle 的“Linux 先生”的称号。他的小组从事 Linux 内核的持续增强,并在 oss.oracle.com 的 GPL 下发布源代码。
|