在现代融IT架构中,Oracle Automatic Storage Management (ASM) 已成为数据库存储管理的首选方案,尤其在RAC(Real Application Clusters)环境中,它提供了高效、可靠且易于管理的共享存储解决方案。
一、ASM硬盘规范与命名 conventions
规范的硬盘配置是ASM稳定运行的基础。上海银行对ASM磁盘组的规划、命名及硬件要求都有严格的标准。
-
磁盘组规划:
- +CRS:用于存放集群投票盘(VOTE)和集群注册文件(OCR),每套RAC环境仅创建一个。通常由3块10GB的硬盘组成,确保集群的高可用性。
- +DATA :用于存放数据库数据文件。根据数据库容量,可分为单卷组(容量小于2TB)或多卷组(容量大于2TB),命名格式为
+DATAXXXX或+DATAXXXXn(XXXX为数据库实例名)。 - +ARCH :专门用于存放归档日志,每个数据库对应一个独立的归档卷组,命名格式为
+ARCHXXXX(XXXX为数据库实例名)。
-
硬盘命名规范:
- +CRS磁盘组的硬盘固定命名为
/dev/ASMDISK/CRSDISK1,/dev/ASMDISK/CRSDISK2,/dev/ASMDISK/CRSDISK3。 - +DATA和+ARCH磁盘组的硬盘则按顺序命名为
/dev/ASMDISK/ASMDISK1,/dev/ASMDISK/ASMDISK2, ... 等。
- +CRS磁盘组的硬盘固定命名为
-
硬盘需求规范:
- ASM直接使用未格式化的物理硬盘,不允许使用分区或逻辑卷(LV)。
- 同一个磁盘组内的所有硬盘必须是同规格、同型号的,以保证性能和容量的一致性。
二、操作系统层面的硬盘绑定技术
为确保ASM在主机重启后仍能正确识别磁盘,避免盘符漂移,并固化权限,上海银行在不同操作系统上采用了成熟的硬盘绑定技术。
-
Linux系统 (RHEL 6.x及以上):
- 背景 :由于Oracle官方不再为RHEL 6.x以上版本提供
oracleasm包,转而采用udev规则进行磁盘绑定。 - 目标 :实现多路径聚合、基于WWID(全球唯一标识符)的持久化设备名、以及固定的文件权限和属主(
grid:dba)。 - 操作步骤 :
a. 修改/etc/scsi_id.config配置文件。
b. 获取每个磁盘的WWID。
c. 创建udev规则文件(如/etc/udev/rules.d/99-oracle-asmdevices.rules),根据WWID或设备名通配符,定义/dev/ASMDISK/下的别名、属主和权限。
d. 重启udev服务使配置生效,并验证绑定结果。
- 背景 :由于Oracle官方不再为RHEL 6.x以上版本提供
-
HP-UX系统:
- 背景:通过创建设备文件别名,确保重启后盘符一致,并固化权限。
- 目标:与Linux类似,实现持久化设备名和权限。
- 操作步骤 :
a. 确认共享磁盘在各节点的WWID和系统设备文件名。
b. 修改原始磁盘设备文件的属主和权限为grid:dba。
c. 创建/dev/ASMDISK/目录。
d. 使用mknod命令为每个ASM磁盘创建指定的别名设备文件。
e. 验证别名设备文件的正确性。
三、硬盘格式化前的关键检查
在对任何磁盘执行格式化操作前,必须进行严格检查,以防止误操作导致ASM或SFRAC(Veritas集群)使用的磁盘数据丢失。
-
数据库管理员确认:
- 使用
asmcmd lsdsk命令查看ASM当前使用的所有磁盘路径。 - 使用
crsctl query css votedisk命令确认CRS磁盘组的具体成员。
- 使用
-
操作系统层面确认(Linux示例):
- 检查是否存在
grid用户。 - 检查是否有
asm_smon_+ASM*进程运行,确认ASM实例存在。 - 使用
kfod disks=all status=true命令(grid用户执行)检查磁盘的Header状态。MEMBER状态的磁盘绝对不能格式化 ,CANDIDATE或PROVISIONED状态的磁盘才可进行后续操作。 - 使用
blkid命令查看磁盘类型,TYPE="oracleasm"表明该磁盘已被ASM使用。
- 检查是否存在
四、日常维护操作与禁止事项
-
日常禁止操作:
- 严禁 在未做充分检查的情况下,对任何磁盘执行
pvcreate、dd等可能破坏磁盘数据的命令。 - 在HP-UX系统上,严禁 运行
insf -e命令,以免重置设备文件和权限。
- 严禁 在未做充分检查的情况下,对任何磁盘执行
-
核心日常维护命令:
asmcmd lsdg:查看所有磁盘组的状态、总空间、剩余空间以及是否正在进行Rebalance操作。asmcmd lsdsk:查看所有ASM磁盘的详细信息,如路径、大小、状态等。
五、ASM实例参数配置优化
合理配置ASM实例参数是保证其性能和稳定性的关键。上海银行推荐的核心参数配置如下(示例):
sql
ALTER SYSTEM SET processes=1000 SCOPE=SPFILE;
ALTER SYSTEM SET sga_max_size=0 SCOPE=SPFILE; -- 使用自动内存管理
ALTER SYSTEM SET sga_target=0 SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target=0 SCOPE=SPFILE;
ALTER SYSTEM SET memory_max_target=4096M SCOPE=SPFILE;
ALTER SYSTEM SET memory_target=3072M SCOPE=SPFILE;
ALTER SYSTEM SET large_pool_size=128M SCOPE=SPFILE;
修改参数后需重启ASM实例(通常通过重启集群实现)。
六、ASM磁盘组管理实践
-
创建磁盘组:
sqlCREATE DISKGROUP DG_NAME EXTERNAL REDUNDANCY DISK '/dev/ASMDISK/ASMDISKx';(根据冗余需求选择
EXTERNAL,NORMAL, 或HIGH) -
添加磁盘到磁盘组:
sqlALTER DISKGROUP DG_NAME ADD DISK '/dev/ASMDISK/ASMDISKx' REBALANCE POWER 10;REBALANCE POWER参数控制Rebalance操作的并行度。 -
从磁盘组中删除磁盘:
sqlALTER DISKGROUP DG_NAME DROP DISK 'DG_NAME_0001' REBALANCE POWER 10;删除前需确保磁盘组有足够的剩余空间。可通过
SELECT * FROM v$asm_operation;监控Rebalance进度。 -
删除磁盘组:
sql-- 在所有其他节点上卸载磁盘组 ALTER DISKGROUP DG_NAME DISMOUNT; -- 在一个节点上删除磁盘组 DROP DISKGROUP DG_NAME INCLUDING CONTENTS;
七、ASM磁盘头信息备份策略
ASM磁盘头部包含了至关重要的元数据。建立完善的备份机制,以防磁盘头部损坏导致灾难性后果。
-
备份内容:
- 磁盘头信息 :使用
kfed read命令读取并备份每个ASM磁盘的头部信息。 - ASM元数据 :使用
asmcmd md_backup命令备份整个磁盘组的元数据。 - ASM实例参数文件 :使用
CREATE PFILE FROM SPFILE;命令备份参数文件。 - 磁盘前32个AU(Allocation Unit) :使用
dd命令备份,这部分包含了关键的元数据结构。
- 磁盘头信息 :使用
-
备份策略:
- 配置
cron任务,由grid用户定期(如每日)执行备份脚本。 - 备份文件保留30天,以应对近期的数据损坏场景。
- 配置