Oracle 19c RAC环境安装目录规划、vSphere共享磁盘配置及软件目录/u01永久挂载与ASM存储管理指南

一、文档目的

本文用于指导在 vSphere Client 虚拟化环境中部署 Oracle 19c RAC 前的基础存储规划,包括:

  1. Oracle 19c RAC 安装目录规划;

  2. node1 / node2 共享磁盘分配;

  3. /u01 Oracle 软件目录磁盘永久挂载;

  4. ASM 磁盘组 +OCR+DATA+RECO 的对应关系。

本文适用于 Oracle Linux 8.x + Oracle 19c RAC + ASM + vSphere Client 测试或准生产环境。


二、RAC 与单机 Oracle 目录规划区别

Oracle 19c 单机环境安装目录规划与磁盘永久挂载操作指南https://blog.csdn.net/weixin_45806267/article/details/162009661?spm=1001.2014.3001.5501Oracle 单机环境常见规划:

目录 用途
/u01 Oracle 软件目录
/u02/oradata 数据文件目录
/u03/archivelog 归档目录
/u04/backup 备份目录

Oracle RAC + ASM 环境推荐规划:

类型 路径 / 磁盘组 用途
本地目录 /u01 安装 Grid / Oracle Database 软件
ASM 磁盘组 +OCR 存放 OCR / Voting Disk
ASM 磁盘组 +DATA 存放数据库数据文件、控制文件、联机日志等
ASM 磁盘组 +RECO 存放 FRA、归档日志、RMAN 备份、闪回日志等

结论:

复制代码
单机:/u01 + /u02 + /u03 + /u04
RAC :/u01 + +OCR + +DATA + +RECO

RAC 环境中,数据库文件不建议放在本地 /u02/oradata,而是交给 ASM 统一管理。


三、Oracle 19c RAC 软件目录规划

Oracle RAC 的目录结构------Linux 和 UNIX 平台真实应用集群 (RACC) 安装指南https://docs.oracle.com/en/database/oracle/oracle-database/19/rilin/directory-structures-for-oracle-rac.html

两台节点均保持一致目录结构。

1. 推荐目录

目录 属主 用途
/u01/app/oraInventory grid:oinstall Oracle Inventory 中央库存目录
/u01/app/grid grid:oinstall Grid 用户 Oracle Base
/u01/app/19.0.0/grid grid:oinstall Grid Infrastructure Home
/u01/app/oracle oracle:oinstall Oracle 用户 Oracle Base
/u01/app/oracle/product/19.0.0/dbhome_1 oracle:oinstall Oracle Database Home

2. 推荐路径

复制代码
/u01/app/oraInventory
/u01/app/grid
/u01/app/19.0.0/grid
/u01/app/oracle
/u01/app/oracle/product/19.0.0/dbhome_1

3. 目录创建命令

两台节点均执行:

复制代码
mkdir -p /u01/app/oraInventory
mkdir -p /u01/app/grid
mkdir -p /u01/app/19.0.0/grid
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1

chown -R grid:oinstall /u01/app/oraInventory
chown -R grid:oinstall /u01/app/grid
chown -R grid:oinstall /u01/app/19.0.0/grid
chown -R oracle:oinstall /u01/app/oracle

chmod -R 775 /u01/app

说明:

复制代码
Grid Base  = /u01/app/grid
Grid Home  = /u01/app/19.0.0/grid
Oracle Base = /u01/app/oracle
DB Home     = /u01/app/oracle/product/19.0.0/dbhome_1

四、vSphere 共享磁盘规划

1. 当前规划

用途 ASM 磁盘组 大小 vSphere SCSI 位置
OCR / Voting Disk +OCR 100GB SCSI(1:0)
数据文件 +DATA 400GB SCSI(1:1)
恢复区 / 归档 / 备份 +RECO 100GB SCSI(1:2)

2. 磁盘用途说明

ASM 磁盘组 用途
+OCR RAC 集群配置、OCR、Voting Disk
+DATA 数据文件、控制文件、联机 redo 日志、临时文件等
+RECO FRA、归档日志、闪回日志、RMAN 备份、控制文件自动备份等

说明:

复制代码
+OCR  = 集群文件
+DATA = 主数据磁盘组
+RECO = 主恢复磁盘组

不建议把三类用途合并成一个大盘再切分。标准做法是按用途独立分配共享盘,便于扩容、排错、备份策略和后期维护。


五、vSphere Client 中 node1 创建共享磁盘

1. 前提

确保 node1、node2 均已关机。

虚拟机:

复制代码
L08-TEST-DBA-ORACLENODE1(10.2.16.201)
L08-TEST-DBA-ORACLENODE2(10.2.16.202)

2. node1 添加 SCSI 控制器

进入:

复制代码
node1 → 操作 → 编辑设置 → 添加新设备 → SCSI 控制器

配置如下:

项目 设置
控制器类型 VMware 准虚拟
SCSI 总线共享 物理

说明:

复制代码
SCSI 控制器 0:系统盘、本地盘
SCSI 控制器 1:RAC 共享盘

不要把 RAC 共享盘挂在默认 SCSI 控制器 0 上。

3. node1 创建三块新硬盘

在 node1 上选择:

复制代码
添加新设备 → 硬盘

分别创建:

硬盘 大小 磁盘置备 共享 虚拟设备节点
OCR 100GB 厚置备快速置零 多写入器 SCSI(1:0)
DATA 400GB 厚置备快速置零 多写入器 SCSI(1:1)
RECO 100GB 厚置备快速置零 多写入器 SCSI(1:2)

关键要求:

复制代码
磁盘置备:厚置备快速置零
共享:多写入器
控制器:SCSI 控制器 1

配置完成后点击:

复制代码
确定

等待 vSphere 底部任务"重新配置虚拟机"完成。


六、vSphere Client 中 node2 添加现有共享磁盘

1. node2 添加 SCSI 控制器(和node1一致)

进入:

复制代码
node2 → 操作 → 编辑设置 → 添加新设备 → SCSI 控制器

配置如下:

项目 设置
控制器类型 VMware 准虚拟
SCSI 总线共享 物理

2. node2 添加 node1 创建的现有硬盘

重点:

复制代码
node2 不要新建硬盘。
node2 必须选择"添加新设备 → 现有硬盘"。

进入:

复制代码
node2 → 编辑设置 → 添加新设备 → 现有硬盘

到数据存储中选择 node1 创建的三块 .vmdk 文件。

挂载关系保持一致:

用途 node1 位置 node2 位置
OCR SCSI(1:0) SCSI(1:0)
DATA SCSI(1:1) SCSI(1:1)
RECO SCSI(1:2) SCSI(1:2)

每块现有硬盘确认:

复制代码
共享:多写入器
控制器:SCSI 控制器 1

完成后点击:

复制代码
确定

等待任务完成。


七、两台虚拟机添加高级参数

node1、node2 均执行以下配置:

进入:

复制代码
虚拟机 → 编辑设置 → 虚拟机选项 → 高级 → 编辑配置

添加或确认:

参数名
disk.EnableUUID TRUE

作用:

复制代码
便于 Linux 识别磁盘 UUID,后续配置 udev 规则更稳定。

八、启动后验证共享盘

node1、node2 启动后,分别执行:

复制代码
lsblk

当前示例识别情况:

node1

复制代码
/dev/sdb  系统盘
/dev/sda  本地 /u01 软件盘
/dev/sdc  400G  ASM DATA
/dev/sdd  100G  ASM OCR
/dev/sde  100G  ASM RECO

node2

复制代码
/dev/sda  系统盘
/dev/sdb  本地 /u01 软件盘
/dev/sdc  400G  ASM DATA
/dev/sdd  100G  ASM OCR
/dev/sde  100G  ASM RECO

注意:

复制代码
/dev/sdX 名称在两个节点上可能不一致。
不要仅凭 /dev/sda、/dev/sdb 判断用途。

建议执行:

复制代码
lsblk -d -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,MODEL,SERIAL,WWN

用于核对磁盘大小、序列号和用途。


九、永久挂载/u01 软件目录磁盘

1. /u01 作用

/u01 是本地软件目录,用于安装:

复制代码
Grid Infrastructure
Oracle Database 软件
Oracle Inventory

它不是 ASM 共享盘,不需要两个节点共享。

2. 当前规划

节点 /u01 本地磁盘
node1 /dev/sda
node2 /dev/sdb

注意:

复制代码
node1 的 /dev/sda 是空盘,可用于 /u01。
node2 的 /dev/sdb 是空盘,可用于 /u01。
不要动系统盘。
不要动 ASM 共享盘 /dev/sdc、/dev/sdd、/dev/sde。

3. node1 挂载 /u01

node1 执行前确认:

复制代码
lsblk

确认 /dev/sda 无分区、无挂载后执行:

复制代码
parted /dev/sda --script mklabel gpt
parted /dev/sda --script mkpart primary xfs 0% 100%

mkfs.xfs -f /dev/sda1

mkdir -p /u01

blkid /dev/sda1

查看 UUID,例如:

复制代码
UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

备份 fstab:

复制代码
cp /etc/fstab /etc/fstab.bak.$(date +%F_%H%M%S)

写入 /etc/fstab

复制代码
vi /etc/fstab

追加:

复制代码
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /u01 xfs defaults 0 0

挂载并验证:

复制代码
mount -a
df -h /u01

写入 /etc/fstab 就是永久挂载:

意思是:你把 /u01 的挂载关系写进 /etc/fstab 后,服务器重启时系统会自动把对应磁盘挂载到 /u01,不用每次手工执行 mount

4. node2 挂载 /u01

node2 执行前确认:

复制代码
lsblk

确认 /dev/sdb 无分区、无挂载后执行:

复制代码
parted /dev/sdb --script mklabel gpt
parted /dev/sdb --script mkpart primary xfs 0% 100%

mkfs.xfs -f /dev/sdb1

mkdir -p /u01

blkid /dev/sdb1

备份 fstab:

复制代码
cp /etc/fstab /etc/fstab.bak.$(date +%F_%H%M%S)

写入 /etc/fstab

复制代码
vi /etc/fstab

追加:

复制代码
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /u01 xfs defaults 0 0

挂载并验证:

复制代码
mount -a
df -h /u01

写入 /etc/fstab 就是永久挂载:

意思是:你把 /u01 的挂载关系写进 /etc/fstab 后,服务器重启时系统会自动把对应磁盘挂载到 /u01,不用每次手工执行 mount


十、创建 Oracle 软件目录

两台节点 /u01 挂载完成后,分别执行:

复制代码
mkdir -p /u01/app/oraInventory
mkdir -p /u01/app/grid
mkdir -p /u01/app/19.0.0/grid
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1

chown -R grid:oinstall /u01/app/oraInventory
chown -R grid:oinstall /u01/app/grid
chown -R grid:oinstall /u01/app/19.0.0/grid
chown -R oracle:oinstall /u01/app/oracle

chmod -R 775 /u01/app

验证:

复制代码
ls -ld /u01
ls -ld /u01/app
ls -ld /u01/app/grid
ls -ld /u01/app/19.0.0/grid
ls -ld /u01/app/oracle

十一、ASM 共享盘处理原则

类型 是否格式化 是否挂载 是否写 /etc/fstab 管理者
/u01 软件盘 是,mkfs.xfs 是,挂 /u01 Linux
+OCR 共享盘 Oracle ASM
+DATA 共享盘 Oracle ASM
+RECO 共享盘 Oracle ASM

以下共享盘不要格式化、不要挂载、不要写入 /etc/fstab

ASM 共享盘仅作为 Oracle ASM 裸设备使用,不创建 Linux 文件系统,不挂载到操作系统目录,不写入 /etc/fstab,避免操作系统文件系统与 ASM 同时管理同一块磁盘。

复制代码
/dev/sdc
/dev/sdd
/dev/sde

它们后续交给 ASM 使用:

Linux 设备 ASM 磁盘组
/dev/sdd +OCR
/dev/sdc +DATA
/dev/sde +RECO

注意:

复制代码
ASM 磁盘组不是 Linux 目录。
不能执行 mkfs.xfs。
不能 mount 到 /data、/reco、/ocr。
不能写 /etc/fstab。

ASM 共享盘由 Oracle ASM 直接管理,ASM 本身承担数据库文件的存储管理职责。若将 ASM 盘格式化为 XFS/ext4 并挂载到 Linux 目录,会导致操作系统文件系统与 Oracle ASM 同时管理同一块磁盘,存在元数据冲突和数据损坏风险。RAC 环境下共享盘会被多个节点同时访问,普通 Linux 文件系统不具备 RAC 集群并发写入能力,因此 ASM 盘不创建 Linux 文件系统、不挂载到操作系统目录、不写入 /etc/fstab,仅作为裸设备提供给 ASM 创建 +OCR、+DATA、+RECO 磁盘组。


十二、安装脚本 ASM 参数建议

结合当前磁盘识别,安装脚本 ASM 部分建议填写:

复制代码
-adc  Y
-mp   N

-od   /dev/sdd
-on   OCR
-or   EXTERNAL

-dd   /dev/sdc
-dn   DATA
-dr   EXTERNAL

-ad   /dev/sde
-an   RECO
-ar   EXTERNAL

说明:

参数 含义 建议
-od OCR 磁盘列表 /dev/sdd
-on OCR 磁盘组名称 OCR
-dd DATA 磁盘列表 /dev/sdc
-dn DATA 磁盘组名称 DATA
-ad ARCH 磁盘列表 /dev/sde
-an ARCH 磁盘组名称 RECO

虽然脚本页面字段显示为 ARCH,但建议磁盘组名称填写:

复制代码
RECO

不要填写:

复制代码
+RECO

ASM 磁盘组名称填写时不带 +,创建完成后在 Oracle 中显示为:

复制代码
+OCR
+DATA
+RECO

十三、重要注意事项

1. 不要把 ASM 共享盘格式化

以下命令不要对 ASM 盘执行:

复制代码
mkfs.xfs /dev/sdc
mount /dev/sdc /data

2. node2 不要新建共享盘

node2 必须:

复制代码
添加现有硬盘

不能:

复制代码
新建同样大小的硬盘

3. 磁盘名可能不一致

/dev/sdX 在不同节点上可能变化,正式安装前建议通过 WWNSERIAL 或 udev 固定设备名。

更规范命名示例:

复制代码
/dev/asm/asm-ocr01
/dev/asm/asm-data01
/dev/asm/asm-reco01

4. /u01 是本地盘

每个节点都有自己的 /u01。路径一致,但底层磁盘不是共享盘。


十四、最终规划汇总

类型 node1 node2 用途
系统盘 /dev/sdb /dev/sda 操作系统
软件盘 /dev/sda → /u01 /dev/sdb → /u01 Grid / Oracle 软件
共享盘 /dev/sdd /dev/sdd +OCR
共享盘 /dev/sdc /dev/sdc +DATA
共享盘 /dev/sde /dev/sde +RECO

最终架构:

复制代码
/u01   → 本地 Oracle / Grid 软件目录
+OCR   → RAC 集群 OCR / Voting
+DATA  → 数据库数据文件
+RECO  → FRA / 归档 / 备份 / 闪回

一句话总结:

复制代码
Oracle 软件走本地 /u01;
数据库文件走 ASM;
共享盘不挂载、不格式化,直接交给 ASM。