文章
| DBA:Linux
了解如何安装和配置一个成本低于 1800 美元的 Oracle RAC 10g 第 2 版开发集群。 2005 年 12 月更新 目录
|
熟悉 Oracle 真正应用集群 (RAC) 10g 技术的最有效方法之一是访问一个实际的 Oracle RAC 10g 集群。没有什么方法比直接体验它们能够更好地理解其好处的了 — 包括容错、安全性、负载均衡和可伸缩性。
不幸的是,对于很多商家而言,典型的生产级 RAC 配置所需的硬件投入使它们无法实现这一目标。一个小型两节点集群可能需要 10,000 美元到 20,000 美元以上。该价格还不包括产品级 RAC 环境的核心(通常是一个存储区域网),其起价为 8,000 美元。
对于那些没有大笔现金而希望熟悉 Oracle RAC 10g 的人而言,本指南提供一种低成本的替代方法来配置一个 Oracle RAC 10g 第 2 版系统,它使用常见的商业组件和可下载的软件,估计成本在 1200 美元到 1800 美元之间。相关系统包括一个运行 Linux(CentOS 4.2 或 Red Hat Enterprise Linux 4)的双节点集群(每个节点使用一个处理器),具有基于 IEEE1394 (FireWire) 驱动器技术的共享磁盘存储器。(当然,您还可以考虑在 VMware 虚拟机上构建一个虚拟集群,但是其体验将不尽相同!)
请注意,这不是构建低成本 Oracle RAC 10g 系统的唯一方法。我曾见过其他的解决方案,这些解决方案利用了基于 SCSI 的实施而不是基于共享存储器的 FireWire。在大多数情况下,SCSI 的成本会高于我们的 FireWire 解决方案,典型的 SCSI 卡的价格在 70 美元左右,而一个 80GB 的外置 SCSI 驱动器价格为 700 美元到 1000 美元。注意,某些主板可能已包含内置的 SCSI 控制器。
请注意,不要在生产环境中运行此配置,并且它不受 Oracle 或其他任何厂商的支持,这点很重要。在生产环境中,光纤通道(能够在点对点或交换式拓扑中连接系统与存储设备的高速串行传输接口)是首选技术。FireWire 为测试和开发提供了光纤通道的低成本替代方法,但尚不能用于生产。
Oracle9i 和 Oracle 10g 第 1 版指南使用原始分区存储共享存储器上的文件,但此处我们将利用 Oracle 集群文件系统第 2 版 (OCFS2) 和 Oracle 自动存储管理 (ASM) 特性。将对两个 Linux 服务器进行如下配置:
| Oracle 数据库文件 | ||||
| RAC 节点名 | 实例名 | 数据库名 | $ORACLE_BASE | 用于存储 DB 文件的文件系统/卷管理器 |
| linux1 | orcl1 | orcl | /u01/app/oracle | ASM |
| linux2 | orcl2 | orcl | /u01/app/oracle | ASM |
| Oracle 集群件共享文件 | ||||
| 文件类型 | 文件名 | 分区 | 挂载点 | 文件系统 |
| Oracle Cluster Registry | /u02/oradata/orcl/OCRFile | /dev/sda1 | /u02/oradata/orcl | OCFS2 |
| CRS 表决磁盘 | /u02/oradata/orcl/CSSFile | /dev/sda1 | /u02/oradata/orcl | OCFS2 |
注意,在 Oracle 数据库 10g 第 2 版 (10.2) 中,集群就绪服务(即 CRS)现在称作 Oracle 集群件。
Oracle 集群件软件将安装到构成 RAC 集群的每个节点上的 /u01/app/oracle/product/crs 中。但集群件软件需要将其两个文件(Oracle 集群注册表 (OCR) 文件和表决磁盘文件)与集群中的所有节点共享。这两个文件将安装到使用 OCFS2 的共享存储器中。可以(但 Oracle 不建议)使用 RAW 设备存储这些文件,但不能使用 ASM 存储这两个集群件文件。
Oracle 数据库 10g 第 2 版软件将安装到构成 RAC 集群每个节点的 Oracle Home(即 /u01/app/oracle/product/10.2.0/db_1)中。所有 Oracle 物理数据库文件(数据、联机重做日志、控制文件、归档重做日志)将安装到由 ASM 管理的共享驱动器的不同分区上。(可以将 Oracle 数据库文件十分轻松地存储在 OCFS2 上。但是,使用 ASM 可以使本文更有趣!)
注意:本文仅作为绝对不可替代的文档。如果要寻找一个利用 RHEL 3 上的 Oracle RAC 10g 第 1 版的示例。要获得以前发布的本指南的 Oracle9i RAC 版本。
随 Oracle9i 一同推出的 Oracle RAC 是 Oracle 并行服务器 (OPS) 的后续版本。RAC 允许多个实例同时访问同一数据库(存储器)。它通过允许系统进行扩展,提供了容错、负载均衡和性能效益,同时由于所有节点访问同一数据库,因此一个实例的故障不会导致无法访问数据库。
Oracle RAC 的核心是共享磁盘子系统。集群中的所有节点必须能够访问集群中所有节点的所有数据、重做日志文件、控制文件和参数文件。数据磁盘必须在全局范围内可用,以便允许所有节点访问数据库。每个节点拥有自己的重做日志和控制文件,但是其他节点必须能够访问这些文件,以便在系统故障时恢复该节点。
Oracle RAC 与 OPS 之间的一个较大区别是,它采用了高速缓存合并技术。在 OPS 中,节点间的数据请求需要先将数据写入磁盘,然后发出请求的节点才可以读取该数据。使用高速缓存合并时,一起传递数据与使用复杂锁定算法的高速互联。
不是所有的集群解决方案都使用共享存储器。有些厂商使用一种称为 联合集群 的方法,在这种方法中,数据分布在多台计算机中,而不是由所有计算机共享。但是,在使用 Oracle RAC 10g 时,多个节点使用相同的磁盘集来存储数据。利用 Oracle RAC,数据文件、重做日志文件、控制文件和归档日志文件保存在原始磁盘设备的共享存储器、NAS、SAN、ASM 或集群文件系统中。Oracle 的集群方法利用了集群中所有节点的集体处理能力,同时提供了故障切换安全性。
有关 Oracle RAC 的更多背景知识,请访问 OTN 上的 Oracle RAC 产品中心。
光纤通道是最流行的共享存储器解决方案之一。前面曾提到,光纤通道是一种高速串行传输接口,用于在点对点或交换式拓扑结构中连接系统与存储设备。光纤通道支持的协议包括 SCSI 和 IP。
光纤通道配置可以支持多达 127 个节点,其每秒的吞吐量高达 2.12 GB。但是,光纤通道非常昂贵;仅交换机的起价就为 1000 美元,而高端驱动器价格可能达到 300 美元。总体而言,典型的光纤通道设置(包括服务器的插卡)价格约为 8000 美元。
光纤通道的一种较为便宜的替代方法是 SCSI。SCSI 技术为共享存储器提供了可接受的性能,但是对于那些习惯了基于 GPL 的 Linux 价格的管理员和开发人员来说,即使是 SCSI(一个双节点集群的价格在 2,000 美元到 5,000 美元左右)也可能超出预算。
另一种流行的解决方案是建立在 NAS 基础上的 Sun NFS(网络文件系统)。只有在您使用网络设备或类似的设备时,它才可以用于共享存储器。具体来说就是,您需要拥有能够保证在 NFS 上进行直接 I/O、将 TCP 作为传输协议并且读/写块大小为 32K 的服务器。
FireWire 是由 Apple Computer 和 Texas Instruments 开发的,它是一种高速串行数据总线的跨平台实施方案。利用其高带宽、长距离(长度多达 100 米)和高能量的总线,FireWire 现在用于数字视频 (DV)、专业音响、硬盘驱动器、高端数字照相机和家庭娱乐设备等应用中。现在,FireWire 以高达每秒 800 兆位的传输速率工作,而下一代的 FireWire 要求理论上的位速率达到 1600 Mbps,然后达到令人吃惊的 3200 Mbps。那是每秒 3.2 GB。这种速度将使 FireWire 成为传输大量数据文件甚至要求最苛刻的视频应用(如处理未压缩的高清晰 (HD) 视频或者多个标准清晰度 (SD) 的视频流)所必不可少的技术。
以下图表显示了多种类型磁盘接口的速度对比。对于每种接口,我提供了每秒千位 (kb)、千字节 (KB)、兆位 (Mb)、兆字节 (MB) 以及千兆位 (Gb) 的最大传输速率。可以看到,IEEE1394 的功能显然超过其他可用的磁盘接口技术。
| 磁盘接口 | 速度 | ||||
| Kb | KB | Mb | MB | Gb | |
| 串行 | 115 | 14.375 | 0.115 | 0.014 | |
| 并行(标准) | 920 | 115 | 0.92 | 0.115 | |
| USB 1.1 | 12 | 1.5 | |||
| 并行 (ECP/EPP) | 24 | 3 | |||
| SCSI-1 | 40 | 5 | |||
| SCSI-2(快速 SCSI/快速窄带 SCSI) | 80 | 10 | |||
| ATA/100(并行) | 100 | 12.5 | |||
| IDE | 133.6 | 16.7 | |||
| 快速宽带 SCSI(宽带 SCSI) | 160 | 20 | |||
| Ultra SCSI(SCSI-3 / Fast-20 / Ultra 窄带) | 160 | 20 | |||
| Ultra IDE | 264 | 33 | |||
| 宽带 Ultra SCSI(快速宽带 20) | 320 | 40 | |||
| Ultra2 SCSI | 320 | 40 | |||
| FireWire 400 - IEEE1394(a) | 400 | 50 | |||
| USB 2.0 | 480 | 60 | |||
| 宽带 Ultra2 SCSI | 640 | 80 | |||
| Ultra3 SCSI | 640 | 80 | |||
| FireWire 800 - IEEE1394(b) | 800 | 100 | |||
| 串行 ATA - (SATA) | 1200 | 150 | 1.2 | ||
| 宽带 Ultra3 SCSI | 1280 | 160 | 1.28 | ||
| Ultra160 SCSI | 1280 | 160 | 1.28 | ||
| Ultra 串行 ATA 1500 | 1500 | 187.5 | 1.5 | ||
| Ultra320 SCSI | 2560 | 320 | 2.56 | ||
| FC-AL 光纤通道 | 3200 | 400 | 3.2 | ||
我们用于构建示例 Oracle RAC 10g 环境的硬件包括两个 Linux 服务器以及您可以在本地任何计算机商店中或通过互联网购买的组件。
| 服务器 1 — (linux1) | |||
Dimension 2400 系列
|
620 美元 | ||
1 - 以太网 LAN 卡
|
20 美元 | ||
| 1 - FireWire 卡
|
30 美元 | ||
| 服务器 2 — (linux2) | |||
Dimension 2400 系列
|
620 美元 | ||
1 - 以太网 LAN 卡
|
20 美元 | ||
| 1 - FireWire 卡
|
30 美元 | ||
| 其他组件 | |||
FireWire 硬盘驱动器
|
280 美元 | ||
| 1 - 额外的 FireWire 电缆 |
20 美元 | ||
| 1 - 以太网集线器或交换机 (用于与 int-linux1 / int-linux2 互联) |
25 美元 | ||
| 4 - 网络电缆 | 5 美元 5 美元 5 美元 5 美元 |
||
| 总计 | 1,685 美元 | ||
请注意,Maxtor OneTouch 外置硬盘驱动器确实有两个 IEEE1394 (FireWire) 端口,尽管乍看上去可能不是这样。上面列出的其他外置硬盘驱动器也是如此。还要注意,虽然您可能总想将以太网交换机(用于互联 int-linux1/int-linux2)替换为一根交叉的 CAT5 线,但我不推荐使用这种方法。我发现在使用交叉的 CAT5 线进行互联时,只要我关闭一台 PC,另一台 PC 就会检测到一个“cable unplugged”错误,因而高速缓存合并网络将会变为不可用。
既然我们知道了将在本示例中使用的硬件,就让我们对环境概况进行概念性的了解:
图 1 体系结构
本节总结了用于安装 Linux 操作系统的各个屏幕。本指南原定使用 Red Hat Enterprise Linux 4 AS/ES (RHEL4) 操作环境。作为替代方法,我在本文中使用了 CentOS 4.2:RHEL4 操作环境的一个免费且稳定的版本。
有关更多详细的安装说明,可以使用由 Red Hat Linux 提供的手册。但是,我建议对本配置使用我在下面提供的说明。
在两个节点上安装 Linux 操作系统之前,您应该先安装 FireWire 和两个 NIC 接口(卡)。
此外,在开始安装前,确保 FireWire 驱动器(我们的共享存储驱动器)没有连接到两个服务器中的任何一个上。您也可以选择将这两个服务器同时连接到 FireWire 驱动器,并只需关掉驱动器的电源。
下载 CentOS 4.2 的以下 ISO 镜像:
在下载并将 CentOS 镜像(ISO 文件)刻录到 CD 之后,将 CentOS 1 号盘插入到第一个服务器(在本示例中是 linux1),启动其电源,并按照以下说明来回应安装屏幕的提示。在第一个节点上安装完 Linux 后,在第二个节点上执行相同的 Linux 安装,但将节点名 linux1 替换为 linux2 并设定适当的不同 IP 地址。
Boot Screen
第一个屏幕是 CentOS Enterprise Linux 引导屏幕。在 boot:提示符处按 [Enter] 键启动安装过程。
Media Test
当要求测试 CD 介质时,用 Tab 键切换到 [Skip] 并按 [Enter] 键。如果有错误,则介质刻录软件会向我们发出警告。在几秒钟后,安装程序将会检测视频卡、监视器和鼠标。然后安装程序进入 GUI 模式。
Welcome to CentOS Enterprise Linux
在欢迎屏幕上,单击 [Next] 继续。
Language / Keyboard Selection
接下来的两个屏幕提示您设置语言和键盘设置。为您的配置作出合适的选择。
Installation Type
选择 [Custom] 选项并单击 [Next] 继续。
Disk Partitioning Setup
选择 [Automatically partition] 并单击 [Next] 继续。
如果以前在本机上安装了 Linux,则下一屏幕将询问您是要“删除”还是“保留”旧分区。选择 [Remove all partitions on this system] 选项。还要确保为本安装选择了 [hda] 驱动器。我还选中了 [Review (and modify if needed) the partitions created] 复选框。单击 [Next] 继续。
然后显示一个对话窗口,询问您是否真的要删除所有分区。单击 [Yes] 回复这一警告。
Partitioning
随后安装程序将允许您查看(如果需要还可以更改)它自动选择的磁盘分区。几乎所有情况下,安装程序将为 /boot 分配 100MB,为 swap 分配双倍数量的 RAM,而将剩余空间分配给根 (/) 分区。我倾向于至少为 swap 分配 1 GB 的空间。就本安装而言,我将接受所有自动选用的大小。(包括 2GB 的 swap,因为我安装了 1GB 的 RAM。)
从 RHEL 4 开始,安装程序将创建与刚才提到的相同磁盘配置,但将使用逻辑卷管理器 (LVM) 创建它们。例如,它将把第一个硬盘驱动器(我的配置使用 /dev/hda)划分为两个分区 - 一个分区用于 /boot 分区 (/dev/hda1),而磁盘的剩余部分专用于 LVM 指定的 VolGroup00 (/dev/hda2)。然后,将 LVM 卷分组 (VolGroup00) 划分为两个 LVM 分区 - 一个分区用于根文件系统 (/),另一个用于交换分区。我主要检查它是否创建了至少 1GB 的交换分区。由于我安装了 1GB RAM,因此安装程序创建了 2GB 的交换分区。也就是说,我只要接受默认的磁盘布局就行了。
Boot Loader Configuration
安装程序将默认使用 GRUB 引导加载程序。要使用 GRUB 引导加载程序,接受所有默认值并单击 [Next] 继续。
Network Configuration
在启动操作系统安装之前,我已确认在每个 Linux 机器上安装了两个 NIC 接口(卡)。本屏幕应该已经成功地检测到每个网络设备。
首先,确保将每个网络设备设置为 [Active on boot]。安装程序可能选择不激活 eth1。
第二步,按照以下方法对 eth0 和 eth1 进行 [Edit] 操作。您可能要为 eth0 和 eth1 使用不同的 IP 地址,没问题。如果可能,试着将 eth1(互联)置于不同于 eth0(公共网络)的子网中:
eth0:
- 取消选中 [Configure using DHCP] 复选项
- 选中 [Activate on boot]
- IP 地址:192.168.1.100
- 网络掩码: 255.255.255.0
eth1:
- 取消选中 [Configure using DHCP] 复选项
- 选中 [Activate on boot]
- IP 地址:192.168.2.100
- 网络掩码:255.255.255.0
接着,手动设置您的主机名。第一个节点使用“linux1”,第二个节点使用“linux2”。然后提供您的网关和 DNS 服务器,最后关闭该对话框。
Firewall
在该屏幕上,确保选中 [No firewall],然后单击 [Next] 继续。系统可能显示一个警告对话框,提示您不要设置防火墙。如果出现此情况,只需单击 [Proceed] 继续。
Additional Language Support/Time Zone
接下来的两个屏幕允许您选择其他语言支持以及时区信息。几乎所有情况下,您都可以接受默认值。
Set Root Password
选择一个根口令,然后单击 [Next] 继续。
Package Group Selection
滚动到本屏幕的底部,在“Miscellaneous”区域的下面选择 [Everything]。单击 [Next] 继续。
请注意,Oracle 的安装并不要求安装所有 Linux 程序包。为简单起见,我决定安装所有程序包。有关成功的 Oracle 安装所需重要程序包的详细说明,请参见第 15 节(“检查用于 Oracle 10g 第 2 版的 RPM 程序包”)。
请注意,在使用某些 RHEL4 发行版本时,默认情况下将不显示“Package Group Selection”屏幕,而只显示“Install default software packages”或“Customize software packages to be installed”屏幕。选择选项“Customize software packages to be installed”,然后单击 [Next] 继续。随即将显示“Package Group Selection”屏幕。此时,向下滚动到该屏幕底部,然后在“Miscellaneous”部分下选择 [Everything]。单击 [Next] 继续。
About to Install
本屏幕主要是一个确认屏幕。单击 [Next] 开始安装。安装过程中,将请求您将磁盘切换到 2 号盘、3 号盘,然后切换到 4 号盘。单击 [Continue] 启动安装过程。
请注意,在使用 CentOS 4.2 时,安装程序将请求您切换到 2 号盘、3 号盘、4 号盘、1 号盘,然后返回到 4 号盘。
Graphical Interface (X) Configuration
在使用大多数 RHEL4 发行版本(CentOS 4.2 除外)时,安装结束时,安装程序将尝试检测视频硬件。确保安装程序已经检测并选择了正确的视频硬件(图形卡和监视器),以便正确使用 X Windows 服务器。在接下来的几个屏幕中,您将继续进行 X 配置。
Congratulations
大功告成。您已经在第一个节点 (linux1) 上成功安装了 CentOS Enterprise Linux。安装程序将从 CD-ROM 驱动器中弹出 CD。取出 CD,单击 [Exit] 重新引导系统。
系统第一次引导进入 Linux 中时将为您显示另一个 Welcome 屏幕。接下来的向导将允许您配置日期和时间、添加其他用户、测试声卡并安装任何其他 CD。我唯一关心的屏幕是时间和日期(如果您使用的是 CentOS 4.x,则是监视器/显示设置)。至于其他屏幕,由于没有其他需要安装的东西(至少目前是这样!),因此只需快速通过即可。如果一切都已成功,您现在应该看到登录屏幕了。
在第二个节点上执行相同的安装
在第一个节点上完成 Linux 安装后,在第二个节点 (linux2) 上重复以上步骤。在配置机器名和网络时,确保配置相应值。对于我的安装,以下是我为 linux2 所配置的内容:
首先,确保将每个网络设备设置为 [Active on boot]。安装程序将选择不激活 eth1。
第二步,按照以下方法对 eth0 和 eth1 进行 [Edit] 操作:
eth0:
- 取消选中 [Configure using DHCP] 复选项
- 选中 [Activate on boot]
- IP 地址:192.168.1.101
- 网络掩码: 255.255.255.0
eth1:
- 取消选中 [Configure using DHCP] 复选项
- 选中 [Activate on boot]
- IP 地址:192.168.2.101
- 网络掩码:255.255.255.0
接着,手动设置您的主机名。我对第二个节点使用“linux2”。然后提供您的网关和 DNS 服务器,最后关闭该对话框。
注意:虽然我们在 Linux 安装过程中配置了几个网络设置,但千万不要跳过本节,这是因为它包含 RAC 环境所需的关键步骤。
网络设置简介
在 Linux O/S 安装过程中,您已经为每个节点配置了 IP 地址和主机名。现在您需要配置 /etc/hosts 文件,并调整几个用于互联的网络设置。我还提供了启用 Telnet 和 FTP 服务的说明。
每个节点均应有一个用于公共网络的静态 IP 地址和一个用于专用集群互联的静态 IP 地址。专用互联只用于由 Oracle 传输与集群管理器和高速缓存合并相关的数据。虽然可以将公共网络用于互联,但由于它可能导致数据库性能降低(减少高速缓存合并和集群管理器流量的带宽),因此不建议使用这种方法。对于生产 RAC 实施,互联应该至少有 GB 或更多,并且只由 Oracle 使用。
配置公共网络和专用网络
在我们的双节点示例中,我们需要在两个节点上配置网络,以访问公共网络及其专用互联。
在 RHEL4 中配置网络设置的最简单方法是使用网络配置程序。该应用程序可以以根用户帐户从命令行启动,如下所示:
# su -
# /usr/bin/system-config-network &
使用网络配置应用程序,您需要配置两个 NIC 设备以及 /etc/hosts 文件。可以使用网络配置 GUI 完成这两个任务。请注意,两个节点的 /etc/hosts 设置是相同的。
我们的示例配置将使用以下的设置:
| 服务器 1 (linux1) | |||
| 设备 | IP 地址 | 子网 | 目的 |
| eth0 | 192.168.1.100 | 255.255.255.0 | 连接 linux1 与公共网络 |
| eth1 | 192.168.2.100 | 255.255.255.0 | 连接 linux1(互联)与 linux2 (int-linux2) |
| /etc/hosts | |||
127.0.0.1 localhost loopback
|
|||
| 服务器 2 (linux2) | |||
| 设备 | IP 地址 | 子网 | 目的 |
| eth0 | 192.168.1.101 | 255.255.255.0 | 连接 linux2 与公共网络 |
| eth1 | 192.168.2.101 | 255.255.255.0 | 连接 linux2(互联)与 linux1 (int-linux1) |
| /etc/hosts | |||
127.0.0.1 localhost loopback
|
|||
请注意,只需在两个节点的 /etc/hosts 文件(或您的 DNS)中定义虚拟 IP 地址。当您运行 Oracle Universal Installer 时,该程序启动 Oracle 的虚拟互联网协议配置助手 (VIPCA),也就说 Oracle 将自动配置公共虚拟 IP 地址。当运行 srvctl start nodeapps -n <node_name> 命令时,所有的虚拟 IP 地址将被激活。这就是将要在客户端 tnsnames.ora 文件中进行配置的主机名/IP 地址(后文详述)。
在以下的屏幕截图中,只显示了节点 1 (linux1)。确保对两个节点进行了所有适当的网络设置。
图 2 网络配置屏幕,节点 1 (linux1)
图 3 以太网设备屏幕,eth0 (linux1)
图 4 以太网设备屏幕,eth1 (linux1)
图 5:网络配置屏幕,/etc/hosts (linux1)
在配置网络后,您可以使用 ifconfig 命令验证一切是否正常。以下示例来自于 linux1:
$ /sbin/ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:0D:56:FC:39:EC
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr:fe80::20d:56ff:fefc:39ec/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:835 errors:0 dropped:0 overruns:0 frame:0
TX packets:1983 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:705714 (689.1 KiB) TX bytes:176892 (172.7 KiB)
Interrupt:3
eth1 Link encap:Ethernet HWaddr 00:0C:41:E8:05:37
inet addr:192.168.2.100 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr:fe80::20c:41ff:fee8:537/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:546 (546.0 b)
Interrupt:11 Base address:0xe400
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr:::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:5110 errors:0 dropped:0 overruns:0 frame:0
TX packets:5110 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:8276758 (7.8 MiB) TX bytes:8276758 (7.8 MiB)
sit0 Link encap:IPv6-in-IPv4
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
关于虚拟 IP
10g 中为什么使用虚拟 IP (VIP)?为什么当它的主节点发生故障时不只是返回一个无效的连接呢?
这全是出于对应用程序可用性的考虑。当一个节点发生故障时,与其关联的 VIP 将被自动故障切换到另外某个节点上。当出现这种情况时,会发生两件事。
这意味着,当客户端向现在已经停机的节点发出 SQL 时,或者在连接状态下遍历地址列表时,客户端不会等待很长的 TCP/IP 超时(大约 10 分钟),而是接收到一个 TCP 重置信息。就 SQL 来说,该信息为 ORA-3113。对于连接,使用 tnsname 中的下一个地址。
更进一步的操作是使用透明的应用程序故障切换 (TAF)。成功配置 TAF 后,可以完全避免 ORA-3113 错误!第 28 节(“透明的应用程序故障切换 - (TAF)”)将更详细地介绍 TAF。
如果不使用 VIP,连接停用节点的客户端经常要等待 10 分钟的 TCP 超时,然后才收到错误信息。因此,不使用 VIP 您就不会真正拥有好的高可用性解决方案(来源 — Metalink 注释 220970.1)。
确保 RAC 节点名没有出现在回送地址中
确保在 /etc/hosts 文件的回送地址中 不包含节点名(linux1 或 linux2)。如果机器名出现在回送地址条目中,如下所示:
127.0.0.1 linux1 localhost.localdomain localhost
需要按如下所示将其删除:
127.0.0.1 localhost.localdomain localhost
如果 RAC 节点名出现在回送地址中,您在 RAC 安装期间将接收到以下错误信息:
ORA-00603:ORACLE server session terminated by fatal error
或
ORA-29702:error occurred in Cluster Group Service operation
调整网络设置
在 Oracle 9.2.0.1 以及更高版本中,Oracle 在 Linux 上使用 UDP 作为默认协议进行过程间通信 (IPC) 的默认协议,如在 RAC 集群中的实例间的高速缓存合并和集群管理器缓冲区传输。
Oracle 强烈建议将默认的和最大的发送缓冲区大小(SO_SNDBUF 套接字选项)调整为 256KB,并将默认的和最大的接收缓冲区大小(SO_RCVBUF 套接字选项)调整为 256KB。
接收缓冲区由 TCP 和 UDP 用于保留所接收的数据,直到应用程序读出这些数据为止。由于不允许对等端发送超过缓冲区大小窗口的数据,因此接收缓冲区无法溢出。这意味着,如果数据报不适合套接字接收缓冲区,则将它们舍弃,从而可能导致发送端压垮接收端。
无需重新引导即可在 /proc 文件系统中更改默认的和最大的窗口大小:
# su - root
# sysctl -w net.core.rmem_default=262144
net.core.rmem_default = 262144
# sysctl -w net.core.wmem_default=262144
net.core.wmem_default = 262144
# sysctl -w net.core.rmem_max=262144
net.core.rmem_max = 262144
# sysctl -w net.core.wmem_max=262144
net.core.wmem_max = 262144
以上命令对已经运行的操作系统作出更改。现在您应将以下各行添加到 RAC 集群中每个节点的 /etc/sysctl.conf 文件中,从而使以上更改成为永久性更改(针对每次重新引导而言):
# Default setting in bytes of the socket receive buffer
net.core.rmem_default=262144
# Default setting in bytes of the socket send buffer
net.core.wmem_default=262144
# Maximum socket receive buffer size which may be set by using
# the SO_RCVBUF socket option
net.core.rmem_max=262144
# Maximum socket send buffer size which may be set by using
# the SO_SNDBUF socket option
net.core.wmem_max=262144
启用 Telnet 和 FTP 服务
虽然将 Linux 配置为运行 Telnet 和 FTP 服务器,但在默认情况下禁用了这些服务。要启用 telnet 的这些服务,以根用户帐户登录到服务器并运行以下命令:
# chkconfig telnet on
# service xinetd reload
Reloading configuration:[ OK ]
从 Red Hat Enterprise Linux 3.0 版(以及 CentOS 中)起,FTP 服务器 (wu-ftpd) 不再随 xinetd 一起提供。它已经为 vsftp 所取代,并且可以从 /etc/init.d/vsftpd 启动,如下所示:
# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd:[ OK ]
如果您希望在重新启动(重新引导)计算机时启动和停止 vsftpd 服务,可以创建以下符号链接:
# ln -s /etc/init.d/vsftpd /etc/rc3.d/S56vsftpd
# ln -s /etc/init.d/vsftpd /etc/rc4.d/S56vsftpd
# ln -s /etc/init.d/vsftpd /etc/rc5.d/S56vsftpd
在集群中的所有节点上执行以下内核升级和 FireWire 模块安装!
接下来的步骤是获取并安装一个新的 Linux 内核以及支持具有多个登录的 IEEE1394 设备的 FireWire 模块。这将需要两个单独的下载和安装:一个用于新的 RHEL4 内核,另一个包含支持的 FireWire 模块。
在本指南的先前版本中,我提供了下载 Linux 内核的一个修补版本(源代码)及编译它的步骤。 由于 Oracle 的 Linux 项目开发小组的工作,已经不再需要这些步骤了。Oracle 现在提供了一个 RHEL4 的预编译内核(它也可用于 CentOS!),很容易下载和安装。本节介绍了如何下载并安装此内核以及支持的 FireWire 模块。在开始详细说明如何执行这些操作之前,我们先花一些时间来介绍一下新内核需要进行的更改。
尽管已经有了针对 Linux 的 FireWire 驱动程序,但它们常常不支持共享存储器。通常,当您登录到操作系统时,操作系统将驱动程序与该机器上一个具体的驱动器相连。这种实施方法不适用于我们的 RAC 配置。共享存储器(我们的 FireWire 硬盘驱动器)需要被多个节点所访问。您需要使 FireWire 驱动程序能够提供对驱动器的非独占访问,以便多个服务器(即组成集群的节点)能够访问同一个存储器。通过在源代码中删除在登录期间标识机器的位掩码,导致对 FireWire 硬盘驱动器进行非独占访问,从而实现这一目的。集群中的所有其他节点在其登录会话期间,使用相同的经过修改的驱动程序登录到同一个驱动器,因此它们也具有对于该驱动器的非独占访问权。
您的实施描述了一个双节点的集群(每个节点具有单处理器)— 每个服务器均运行 CentOS Enterprise Linux。请牢记,需要在两个 Linux 节点上执行打补丁的 Linux 内核的安装过程。CentOS Enterprise Linux 4.2 包含内核 2.6.9-22.EL #1。 我们将需要从以下两个 URL 中下载 OTN 提供的 2.6.9-11.0.0.10.3.EL #1 Linux 内核和支持的 FireWire 模块:
下载新 RHEL 4 内核的以下文件之一:
kernel-2.6.9-11.0.0.10.3.EL.i686.rpm —(用于单处理器)
或
kernel-smp-2.6.9-11.0.0.10.3.EL.i686.rpm —(用于多处理器)
下载支持的 FireWire 模块的以下文件之一:
oracle-firewire-modules-2.6.9-11.0.0.10.3.EL-1286-1.i686.rpm —(用于单处理器)
或
oracle-firewire-modules-2.6.9-11.0.0.10.3.ELsmp-1286-1.i686.rpm —(用于多处理器)
以 root 用户安装新的 RHEL 4 内核:
# rpm -ivh --force kernel-2.6.9-11.0.0.10.3.EL.i686.rpm —(用于单处理器)
或
# rpm -ivh --force kernel-smp-2.6.9-11.0.0.10.3.EL.i686.rpm — (用于多处理器)
使用 RPM 安装新内核还将用适当的节 (stanza) 和默认的引导选项来更新您的 GRUB(或 lilo)配置。安装新内核后不必修改引导加载程序配置。
注意:安装新内核后,不必在此时继续安装支持的 FireWire 模块。要安装 FireWire 模块,必须先重新引导至新内核中。
重新引导至新的 Linux 服务器中:
此刻,新 RHEL4 内核已经安装完毕。您现在需要重新引导至新的 Linux 内核中:
# init 6
以 root 身份安装支持的 FireWire 模块:
引导至新的 RHEL 4 内核后,需要通过运行以下任意命令安装支持的 FireWire 模块程序包:
# rpm -ivh oracle-firewire-modules-2.6.9-11.0.0.10.3.EL-1286-1.i686.rpm — (用于单处理器)# rpm -ivh oracle-firewire-modules-2.6.9-11.0.0.10.3.ELsmp-1286-1.i686.rpm — (用于多处理器)
或
添加模块选项:
将以下行添加到 /etc/modprobe.conf:
options sbp2 exclusive_login=0
将串行总线协议模块 (sbp2) 的参数 sbp2 exclusive_login 设置为零是非常重要的,以便允许多个主机并发地登录和访问 FireWire 磁盘。
在第二个 Linux 服务器上执行以上任务:
在第一个 Linux 服务器上安装新的 RHEL4 内核和支持的 FireWire 模块后,转移到第二个 Linux 服务器并在其中重复本节中的相同任务。
将 FireWire 驱动器连接到每台机器并引导进入新的内核中:
在集群中的两个节点上都执行了以上任务之后,关闭两台 Linux 机器的电源:
===============================
# hostname
linux1
# init 0
===============================
# hostname
linux2
# init 0
===============================
在关闭了两台计算机的电源后,将它们连接到 FireWire 驱动器的后部。打开 FireWire 驱动器的电源。最后,打开每台 Linux 服务器的电源并确保将每台机器引导进入新的内核中。
注意:在两个节点上执行引导的过程中,“查找新硬件”部分将提示 RHEL4 用户提供 FireWire 硬盘驱动器。只需选择选项“配置”来配置该设备并继续执行引导过程。如果“查找新硬件”部分中未提示您提供新的 FireWire 驱动器,您将需要运行以下命令并重新引导计算机:
# modprobe -r sbp2
# modprobe -r sd_mod
# modprobe -r ohci1394
# modprobe ohci1394
# modprobe sd_mod
# modprobe sbp2
# init 6
加载 FireWire 堆栈:
在大多数情况下,在 /etc/rc.sysinit 文件中已经对 FireWire 堆栈加载进行了配置。该文件中所包含的用于加载 FireWire 堆栈的命令是:
# modprobe sbp2
# modprobe ohci1394
在 Red Hat 的旧版本中,情况有所不同,必须手动运行这些命令或者将其包含在启动文件中。在 Red Hat Enterprise Linux 3 及更高版本中,这些命令已经包含在 /etc/rc.sysinit 文件中并在每次引导时运行。
检查 SCSI 设备:
重新引导每台机器后,内核应该自动把该磁盘检测为 SCSI 设备 (/dev/sdXX)。本节将提供几个应该在集群的所有节点上运行的命令,以验证是否成功地检测到 FireWire 驱动器并由集群中所有节点所共享。
对于本配置而言,我同时在两个节点上执行上述过程。在过程完成后,我关闭两台机器,首先启动 linux1,然后启动 linux2。以下的命令和结果来自于我的 linux2 机器。同样,请确认您在两个节点上都运行了以下的命令,以确保两台机器都能登录到共享驱动器。
首先查看该 FireWire 适配器是否已被成功地检测到:
# lspci
00:00.0 Host bridge:Intel Corporation 82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface (rev 01)
00:02.0 VGA compatible controller:Intel Corporation 82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (rev 01)
00:1d.0 USB Controller:Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller:Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller:Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
00:1d.7 USB Controller:Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge:Intel Corporation 82801 PCI Bridge (rev 81)
00:1f.0 ISA bridge:Intel Corporation 82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface:Intel Corporation 82801DB (ICH4) IDE Controller (rev 01)
00:1f.3 SMBus:Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)
00:1f.5 Multimedia audio controller:Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
01:04:00.0 Ethernet controller:Linksys NC100 Network Everywhere Fast Ethernet 10/100 (rev 11)
01:06:00.0 FireWire (IEEE 1394):Texas Instruments TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link)
01:09.0 Ethernet controller:Broadcom Corporation BCM4401 100Base-T (rev 01)
然后,查看是否已加载这些模块:
# lsmod |egrep "ohci1394|sbp2|ieee1394|sd_mod|scsi_mod"
sd_mod 17217 0
sbp2 23948 0
scsi_mod 121293 2 sd_mod,sbp2
ohci1394 35784 0
ieee1394 298228 2 sbp2,ohci1394
第三步,确认已检测到磁盘并由内核创建了一个条目:
# cat /proc/scsi/scsi
Attached devices:
Host:scsi0 Channel:00 Id:01 Lun: 00
Vendor:Maxtor Model:OneTouch II Rev:023g
Type:Direct-Access ANSI SCSI revision: 06
现在,我们将确认 FireWire 驱动器可以被多个登录所访问,并显示有效登录:
# dmesg | grep sbp2
sbp2:$Rev:1265 $ Ben Collins <bcollins@debian.org>
ieee1394:sbp2:Maximum concurrent logins supported: 2
ieee1394:sbp2:Number of active logins: 0
ieee1394:sbp2:Logged into SBP-2 device
从以上输出中,可以看到我的 FireWire 驱动器能够支持多达 2 个服务器的并发登录。您的驱动器的芯片组应该支持 RAC 集群中所有节点的并发访问,这很重要。
我喜欢执行的另一项测试是从集群中的每个节点上运行快速的 fdisk -l,以验证它确实被操作系统所接受。您的驱动器可能会显示该设备不包含有效的分区表,但就 RAC 配置的这一阶段而言,这样是完全可以的。
# fdisk -l
Disk /dev/hda:40.0 GB, 40000000000 bytes
255 heads, 63 sectors/track, 4863 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 4863 38957625 8e Linux LVM
Disk /dev/sda:300.0 GB, 300090728448 bytes
255 heads, 63 sectors/track, 36483 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 36483 293049666 c W95 FAT32 (LBA)
不再需要重新扫描 SCSI 总线:
在内核的旧版本中,我需要运行 rescan-scsi-bus.sh 脚本来检测 FireWire 驱动器。此脚本的目的是通过使用以下命令为节点创建 SCSI 项:
echo "scsi add-single-device 0 0 0 0" > /proc/scsi/scsi
在 RHEL3 和 RHEL4 中,不再需要该步骤,会自动检测到磁盘。
SCSI 设备检测方面的故障诊断:
如果您在检测 SCSI 设备的任何步骤(如上所述)中遇到问题,可以尝试以下操作:
# modprobe -r sbp2
# modprobe -r sd_mod
# modprobe -r ohci1394
# modprobe ohci1394
# modprobe sd_mod
# modprobe sbp2
您可能还要拔下任何连接到服务器的 USB 设备。如果连接了 USB 设备,系统可能无法识别您的 FireWire 驱动器!
9. 创建“oracle”用户和目录(在两个节点上)
在集群中的所有节点上执行以下任务!
您将使用 OCFS2 存储 Oracle 集群件软件需要共享的文件。使用 OCFS2 时,集群中所有计算机上的 UNIX 用户 oracle 的 UID 以及 UNIX 组 dba 的 GID 都必须相同。如果 UID 或 GID 不同,则 OCFS 文件系统中的文件将显示为“unowned”,甚至可能被其他用户所拥有。对于本文而言, oracle UID 使用 175, dba GID 使用 115。
创建 Oracle 的组和用户
让我们继续此示例,创建 Unix dba 组和 oracle 用户帐户以及所有相关目录。
# mkdir -p /u01/app
# groupadd -g 115 dba
# useradd -u 175 -g 115 -d /u01/app/oracle -s /bin/bash -c "Oracle Software Owner" -p oracle oracle
# chown -R oracle:dba /u01
# passwd oracle
# su - oracle
注意:当您为每个 RAC 节点设置 Oracle 环境变量时,请确保为每个 RAC 节点分配唯一的 Oracle SID! 对于此示例,我使用:
在两个节点上都创建了“ oracle”UNIX 用户 id 后,通过使用以下 .bash_profile 确保正确设置了环境:
....................................
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
alias ls="ls -FA"
# User specific environment and startup programs
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=$ORACLE_BASE/product/crs
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
# Each RAC node must have a unique ORACLE_SID.(i.e. orcl1, orcl2,...)
export ORACLE_SID=orcl1
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp ....................................
最后,为将用于存储两个 Oracle 集群件共享文件的 OCFS2 文件系统创建挂载点。需要以“root”用户帐户运行这些命令:
$ su -
# mkdir -p /u02/oradata/orcl
# chown -R oracle:dba /u02
确保为 OUI 提供足够的临时空间
注意:Oracle Universal Installer (OUI) 最多需要 /tmp 目录具有 400MB 可用空间。
您可以运行以下命令查看 /tmp 中的可用空间:
# cat /proc/swaps
Filename Type Size Used Priority
/dev/mapper/VolGroup00-LogVol01 partition 2031608 0 -1
— 或 —
# cat /proc/meminfo | grep SwapTotal SwapTotal:2031608 kB
如果由于某种原因,您在 /tmp 中没有足够的空间,您可以在其他文件系统中临时创建空间,并在安装期间将您的 TEMP 和 TMPDIR 指向该空间。以下是完成此操作的步骤:
# su -
# mkdir /<AnotherFilesystem>/tmp
# chown root.root /<AnotherFilesystem>/tmp
# chmod 1777 /<AnotherFilesystem>/tmp
# export TEMP=/<AnotherFilesystem>/tmp # used by Oracle
# export TMPDIR=/<AnotherFilesystem>/tmp # used by Linux programs
# like the linker "ld"
当 Oracle 的安装完成时,您可以使用以下命令删除该临时目录:
# su -
# rmdir /<AnotherFilesystem>/tmp
# unset TEMP
# unset TMPDIR
仅在集群中的一个节点上创建以下分区!
接下来的步骤是在 FireWire(共享)驱动器上创建所需的分区。正如我在前面指出的,您将使用 OCFS2 来存储 Oracle 的集群件软件要共享的两个文件。然后,您将创建三个 ASM 卷;两个 ASM 卷用于所有物理数据库文件(数据/索引文件、联机重做日志文件、控制文件、SPFILE 和归档重做日志文件),另一个用于闪回恢复区。
下表列出了将要在 FireWire(共享)驱动器上创建的各个分区以及它们将包含的文件。
| Oracle 共享驱动器配置 | |||||
| 文件系统类型 | 分区 | 大小 | 挂载点 | ASM 磁盘组名称 | 文件类型 |
| OCFS2 | /dev/sda1 | 1GB | /u02/oradata/orcl | Oracle 集群注册表文件 — (~100MB) CRS 表决磁盘 — (~20MB) |
|
| ASM | /dev/sda2 | 50GB | ORCL:VOL1 | +ORCL_DATA1 | Oracle 数据库文件 |
| ASM | /dev/sda3 | 50GB | ORCL:VOL2 | +ORCL_DATA1 | Oracle 数据库文件 |
| ASM | /dev/sda4 | 100GB | ORCL:VOL3 | +FLASH_RECOVERY_AREA | Oracle 闪回恢复区 |
| 总计 | 201GB | ||||
在 FireWire 共享存储器上创建所有分区
如上表中所示,我的 FireWire 驱动器显示为 SCSI 设备 /dev/sda。 fdisk 命令用于创建(和删除)分区。对于此配置而言,我们将创建四个分区:一个分区用于 Oracle 的集群件共享文件,余下的三个分区用于 ASM(存储所有 Oracle 数据库文件和闪回恢复区)。在创建新分区之前,删除 FireWire 驱动器上的现有分区(如果有)是很重要的:
# fdisk /dev/sda
Command (m for help):p
Disk /dev/sda:300.0 GB, 300090728448 bytes
255 heads, 63 sectors/track, 36483 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 36483 293049666 c W95 FAT32 (LBA)
Command (m for help):d
Selected partition 1
Command (m for help):p
Disk /dev/sda:300.0 GB, 300090728448 bytes
255 heads, 63 sectors/track, 36483 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4):1
First cylinder (1-36483, default 1):1
Last cylinder or +size or +sizeM or +sizeK (1-36483, default 36483):+1G
Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4):2
First cylinder (124-36483, default 124):124
Last cylinder or +size or +sizeM or +sizeK (124-36483, default 36483):+50G
Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4):3
First cylinder (6204-36483, default 6204):6204
Last cylinder or +size or +sizeM or +sizeK (6204-36483, default 36483):+50G
Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
Selected partition 4
First cylinder (12284-36483, default 12284):12284
Last cylinder or +size or +sizeM or +sizeK (12284-36483, default 36483):+100G
Command (m for help):p
Disk /dev/sda:300.0 GB, 300090728448 bytes
255 heads, 63 sectors/track, 36483 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 123 987966 83 Linux
/dev/sda2 124 6203 48837600 83 Linux
/dev/sda3 6204 12283 48837600 83 Linux
/dev/sda4 12284 24442 97667167+ 83 Linux
Command (m for help):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
在创建了所有必要分区后,现在应以 root 用户帐户使用以下语法将分区的更改情况通知给内核:
# partprobe
# fdisk -l /dev/sda
Disk /dev/sda:300.0 GB, 300090728448 bytes
255 heads, 63 sectors/track, 36483 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 123 987966 83 Linux
/dev/sda2 124 6203 48837600 83 Linux
/dev/sda3 6204 12283 48837600 83 Linux
/dev/sda4 12284 24442 97667167+ 83 Linux
(注意:FireWire 驱动器和所创建的分区将显示为 SCSI 设备。)