集群应用程序简介 集群应用程序具有各种级别的成熟度和功能。它们包括:
到写本文时为止,除了第三方集群文件系统之外,还有四种可选用的运行 oracle rac 的文件系统。按 oracle 的推荐顺序,它们依次为:
oracle 自动存储管理 (asm) oracle 的一个特点就是,无论它在哪种环境中运行,一旦您获得一个 oracle api,则所有的外观、体验和操作都相同。oracle asm是 oracle 数据库 10g 的一个特性,它将这种一致的环境扩展到存储管理方面,使用 sql 语句、oracle enterprise manager 网格控制或数据库配置助手程序来创建和管理存储内容和元数据。将 asm 用于 oracle 数据库 10g 数据文件存储被认为是最佳方法。 asm 中的基本数据结构是磁盘组,它由一个或多个磁盘组成。在该语境中,“磁盘”可以是一个磁盘分区、一个完整的磁盘、一个级联磁盘、一个存储设备的分区或者一个完整的存储设备。一定要认识到,asm 并非通用集群文件系统。相反,asm 是一个具有集群感知的文件系统,专门为处理 oracle 数据库文件、控制文件和日志文件而设计。asm 不应与逻辑卷管理器 (lvm) 共用,这是因为后者会使 asm 无法识别磁盘。
asm 执行以下功能:oracle 集群文件系统 (ocfs) ocfs 专门为支持 oracle rac 应用程序的数据和磁盘共享而设计。它在 rac 集群的服务器节点间提供一致的文件系统映像,充当原始设备的替身。除了简化集群数据库管理外,它还在保持原始设备性能优势的同时克服了原始设备的局限性。
ocfs 第 1 版支持 oracle 数据文件、spfile、控制文件、仲裁磁盘文件、归档日志、配置文件以及 oracle 集群注册表 (ocr) 文件(oracle 数据库 10g 中的新文件)。设计它不是为了使用其他文件系统的文件,甚至不是为了使用那些必须在集群每个节点上安装的 oracle 软件 — 除非您使用第三方解决方案。此外,ocfs 不提供诸如 i/o 分配(分割)等 lvm 功能,也不提供冗余功能。
oracle 支持用于 32 位和 64 位发行版本的 red hat advanced server 2.1、red hat enterprise linux 3 和 novell suse (united linux) 上的 ocfs 第 1 版中的 oracle 数据库,该数据库需要从可下载的二进制文件进行安装。如果您自己对其进行重新编译,则 oracle 不提供支持。
有三种不同的 rpm 程序包:
$ uname -alinux linux 2.4.18-4gb #1 wed mar 27 13:57:05 utc 2002 i686 unknown
相反,ocfs 第 2 版(到 2005 年 3 月时仍为测试版)符合 posix 标准,并且支持 oracle 数据库软件,它可以安装在一个节点上并在集群的其他节点间共享。除了共享的 oracle_home 外,ocfs 第 2 版的其他新特性还包括改进的元数据数据高速缓存、空间分配和锁定。此外还有改进的日志和节点恢复功能。
网络文件系统 (nfs) 虽然 asm 和 ocfs 是 oracle rac 的首选文件系统,但 oracle 还支持经过认证的网络文件服务器上的 nfs。nfs 是分布式文件系统,本文不对其作全面讨论。有关更多信息,请访问 nfs 主页。
原始设备 过去有一段时间内,原始设备是运行 oracle rac 的唯一选择。原始设备就是一个没有安装文件系统的磁盘驱动器,可以被分成多个原始分区。原始设备允许绕过文件系统缓冲区高速缓存直接访问硬件分区。
要让 oracle rac 使用原始设备,必须在安装 oracle 软件之前通过 linux raw 命令将一个块设备绑定到该原始设备:
# raw /dev/raw/raw1 /dev/sda/dev/raw/raw1:bound to major 8, minor 0# raw /dev/raw/raw2 /dev/sda1/dev/raw/raw2:bound to major 8, minor 1# raw /dev/raw/raw3 /dev/sda2/dev/raw/raw3:bound to major 8, minor 2在绑定后,您可以使用 raw 命令来查询所有原始设备。
# raw -qa/dev/raw/raw1:bound to major 8, minor 0/dev/raw/raw2:bound to major 8, minor 1/dev/raw/raw3:bound to major 8, minor 2major 和 minor 数值确定了该内核的设备位置和驱动程序。major 数值确定了总的设备类型,而 minor 数值确定了属于该设备类型的设备数量。在上述示例中,major 8 是 scsi 磁盘 /dev/sda 的设备类型。
请注意,设备不需要处于可访问状态即可运行上述命令。当我为了演示而运行上述命令时,我的系统没有连接任何 scsi 磁盘。这些命令的效果在我下一次重新启动后将会消失,除非我将这些命令放在类似 /etc/init.d/boot.local 或 /etc/init.d/dbora 的引导脚本中,每当我的系统引导时,就会运行这些脚本。
在将块设备映射到原始设备后,您仍然需要确保原始设备属于 oracle 用户和 oinstall 组。
# ls -l /dev/raw/raw1crw-rw---- 1 root disk 162, 1 mar 23 2002 /dev/raw/raw1# chown oracle:oinstall /dev/raw/raw1# ls -l /dev/raw/raw1crw-rw---- 1 oracle oinstall 162, 1 mar 23 2002 /dev/raw/raw1然后您可以在 oracle 数据文件与原始设备之间使用符号链接,以便使事情更易于管理。
linux 内核 2.4 版中的原始设备限制中包括每分区一个原始设备的限制和每系统 255 个原始设备的限制。novell suse enterprise linux 带有 63 个原始设备文件,但可以使用 mknod 命令(需要有根权限)创建最多 255 个原始设备。
# ls /dev/raw/raw64ls:/dev/raw/raw64:no such file or directory# cd /dev/rawlinux:/dev/raw # mknod raw64 c 162 64# ls /dev/raw/raw64/dev/raw/raw64以上的 mknod 命令需要设备名、设备类型以及 major 和 minor 数值。本示例中的设备名是“raw64”,设备类型是“c”(表示它是一个字符设备)。该新设备的 major 和 minor 数值分别是 162 和 64。另外,novell suse 用户可以通过运行 orarun rpm 来安装这些设备。
使用原始设备的其他缺点包括:
oracle rac 提供了一个文件系统(集群的或非集群的)所具有的很多功能,最大程度地减轻了文件系统本身的工作。如前所述,所需要的只是一个对 oracle rac 现有的、内在的数据库集群功能进行补充的文件系统。尽管 ocfs、nfs 和原始设备也可能是可行的方法,但在大多数情况下,asm 会最大程度地实现这一目的,从而被视为 oracle 的最佳实践。还可以将 asm 用于数据文件,ocfs 用于表决磁盘、ocr 和 oracle 主目录,以及在 nfs 存储器上使用 asm。
将来我们还可以期待另一个方法,就是 ocfs 第 2 版能够使用共享的 oracle 主目录,从而完善 asm 上的共享存储器。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器