在 CentOS 系统上为 Oracle 数据库配置 ASM(Automatic Storage Management,自动存储管理)是一项能够显著提升数据库性能、简化存储管理的关键任务,ASM 将操作系统管理的裸设备或文件整合成一个统一的存储池,由 Oracle 自行进行条带化、镜像和负载均衡,极大地解放了数据库管理员(DBA)的工作,本文将详细介绍在 CentOS 环境下配置 ASM 的完整流程,涵盖前期准备、核心配置步骤以及验证方法。
前期准备
在开始配置之前,充分的准备工作是确保过程顺利无误的基石,这包括系统环境、用户权限、内核参数和存储设备的规划。
系统与硬件要求
- 操作系统:建议使用稳定版本的 CentOS,如 CentOS 7 或 CentOS 8,确保系统已更新至最新的补丁级别。
- 存储设备:准备专用于 ASM 的物理磁盘,这些磁盘应为未分区的原始块设备(
/dev/sdb
,/dev/sdc
),不建议使用包含文件系统的分区,ASM 需要独占这些设备以发挥最佳性能。
创建必要的用户与组
Oracle 的安装和运行需要特定的用户和组,通常需要创建 grid
用户来管理 ASM 和集群件,以及 oracle
用户来管理数据库软件。
# 创建组 groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 asmadmin groupadd -g 54324 asmdba groupadd -g 54325 asmoper # 创建用户 useradd -u 54321 -g oinstall -G dba,asmadmin,asmdba,asmoper grid useradd -u 54322 -g oinstall -G dba,asmdba oracle
配置内核参数与 Shell 限制
根据 Oracle 官方文档,需要调整内核参数以满足其运行需求,编辑 /etc/sysctl.conf
文件,添加或修改以下参数:
fs.file-max = 6815744 kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576
执行 sysctl -p
使配置生效。
在 /etc/security/limits.conf
中为 oracle
和 grid
用户设置资源限制:
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
安装 ASM 支持包
CentOS 需要特定的软件包来支持 ASM 内核模块,使用 yum
进行安装:
yum install kmod-oracleasm oracleasm-support -y
核心配置步骤
准备工作就绪后,便可以进入 ASM 的核心配置阶段。
配置并加载 ASM 内核模块
使用 oracleasm
工具进行配置,此命令将以交互方式引导您完成配置,通常默认用户和组分别为 grid
和 asmadmin
。
oracleasm configure -i
系统会提示您输入默认用户、默认组、是否在启动时加载模块以及是否扫描磁盘,按照提示输入即可,配置完成后,执行以下命令加载内核模块:
oracleasm init
您可以使用 lsmod | grep oracleasm
来验证模块是否已成功加载。
标记 ASM 磁盘
将准备好的原始物理磁盘标记为 ASM 磁盘,假设您要使用 /dev/sdb
和 /dev/sdc
。
oracleasm createdisk DATA1 /dev/sdb oracleasm createdisk DATA2 /dev/sdc
这里的 DATA1
和 DATA2
是您为磁盘定义的别名,在后续配置中会使用,执行完毕后,可以用 oracleasm listdisks
命令查看已创建的 ASM 磁盘。
安装 Oracle Grid Infrastructure
ASM 是 Oracle Grid Infrastructure (GI) 的一部分,您需要下载与您的 Oracle 数据库版本相匹配的 GI 安装包。
- 解压安装包,并以
grid
用户身份运行安装程序。 - 在安装过程中,选择“安装和配置 Grid Infrastructure for a Standalone Server”(为独立服务器安装和配置 Grid Infrastructure)。
- 在“创建 ASM 磁盘组”步骤,点击“Change Discovery Path” 指定磁盘路径为
/dev/oracleasm/disks/
,系统会自动扫描出您刚才创建的DATA1
和DATA2
。 - 创建磁盘组,
DATA
,用于存放数据文件,根据需求选择冗余级别(External Redundancy 无冗余,Normal Redundancy 双向镜像,High Redundancy 三向镜像)。
下表是一个简单的磁盘组规划示例:
磁盘组名称 | 冗余类型 | 用途 | 包含的 ASM 磁盘 |
---|---|---|---|
DATA | External | 存放数据文件、控制文件、参数文件 | DATA1, DATA2 |
FRA | External | 存放归档日志、RMAN 备份 | FRA1 (假设还有另一块磁盘) |
- 完成安装向导,并根据提示以
root
用户身份执行orainstRoot.sh
和root.sh
脚本。
验证与后续
安装完成后,需要验证 ASM 是否正常运行。
- 检查 ASM 实例状态:
ps -ef | grep smon
,您应该能看到 ASM 的后台进程+ASM1_smon_...
。 - 使用 ASM 命令行工具 (ASMCMD):以
grid
用户登录,执行asmcmd
,进入命令行后使用lsdg
命令可以列出所有磁盘组及其状态。 - 在后续安装 Oracle 数据库软件时,选择“高级安装”,在存储选项部分即可看到并选择您刚刚创建的 ASM 磁盘组。
至此,您已成功在 CentOS 上配置了 ASM,为 Oracle 数据库提供了一个高性能、高可用的存储平台。
相关问答FAQs
问题1:我可以在一个磁盘分区(如 /dev/sdb1)上配置 ASM 磁盘吗?
解答:虽然技术上可行,但 Oracle 官方强烈不推荐这样做,ASM 的设计初衷是直接管理整个物理磁盘(LUN),使用分区会带来几个问题:它增加了额外的管理层,可能影响性能;ASM 的多路径软件(如 ASMLib)在处理整个设备时效率更高,能更好地进行 I/O 均衡;使用分区可能导致存储管理和故障排查变得复杂,最佳实践始终是为 ASM 提供完整的、未分区的原始块设备。
问题2:执行 oracleasm createdisk
命令时提示“Device is not a block device”或权限错误,该怎么办?
解答:这个错误通常由以下几种原因导致:
- 设备路径错误:您提供的路径不是一个块设备,请使用
ls -l /dev/sd*
等命令确认设备名称是否正确,并且它确实是块设备(文件类型为b
)。 - 设备已被使用:该磁盘上可能已经存在分区表或文件系统,ASM 要求设备是“干净”的,您可以使用
fdisk /dev/sdb
命令进入后,按d
删除所有分区,然后按w
保存。注意:此操作会清空磁盘上的所有数据,请务必谨慎! - 权限问题:执行
oracleasm createdisk
命令的用户(通常是grid
)没有对磁盘设备的读写权限,检查/dev/sdb
等设备的所有者和权限,您需要确保磁盘设备属于disk
组,grid
用户也在disk
组中,或者调整设备的 udev 规则,赋予asmadmin
组适当的权限,可以临时使用chown grid:asmadmin /dev/sdb
命令测试,但永久解决方案是配置 udev 规则。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复