在虚拟机上添加共享磁盘后节点2的ASM实例无法加载到

本文记录了一次使用DBCA为ASM增加磁盘并尝试在另一节点挂载的过程及遇到的问题。在节点1成功创建并增加了ARCHLOG和BACKUP两个磁盘组后,尝试在节点2上进行挂载时遇到错误提示,包括无法进入指定目录和部分磁盘组挂载失败等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在节点1用DBCA给ASM增加磁盘图形过程比较容易,新建了两个目录分别是ARCHLOG和BACKUP. 可不能装载节点2上面!

[oracle@node2bdump]$ export ORACLE_SID=+ASM2

[oracle@node2bdump]$ asmcmd

ASMCMD>ll

        commands:

        -------- 

        cd

        du

        find

        help

        ls

        lsct

        lsdg

        mkalias

        mkdir

        pwd

        rm

        rmalias

ASMCMD>ls

ARCHLOG/

BACKUP/

DATA/

ASMCMD>cd DATA

ASMCMD>ls

MYRAC/

ASMCMD>cd ..

ASMCMD>cd ARCHLOG

无法进入该目录

启动ASM实例

SQL>startup

ORA-32004:obsolete and/or deprecated parameter(s) specified

ASMinstance started

 

TotalSystem Global Area   92274688 bytes

FixedSize                  1217884 bytes

VariableSize              65890980 bytes

ASMCache                  25165824 bytes

ORA-15032:not all alterations performed

ORA-15003:diskgroup "DATA" already mounted in another lock name space

ORA-15003:diskgroup "BACKUP" already mounted in another lock name space

ORA-15003:diskgroup "ARCHLOG" already mounted in another lock name space

ASM实例已经存在

 

[oracle@node2dbs]$ ps -ef | grep asm_

oracle   26435    1  0 17:05 ?        00:00:00 asm_pmon_+ASM2

oracle   26437    1  0 17:05 ?        00:00:00 asm_diag_+ASM2

oracle   26439    1  0 17:05 ?        00:00:00 asm_psp0_+ASM2

oracle   26459    1  0 17:05 ?        00:00:01 asm_lmon_+ASM2

oracle   26461    1  0 17:05 ?        00:00:00 asm_lmd0_+ASM2

oracle   26463    1  0 17:05 ?        00:00:00 asm_lms0_+ASM2

oracle   26480    1  0 17:05 ?        00:00:00 asm_mman_+ASM2

oracle   26482    1  0 17:05 ?        00:00:00 asm_dbw0_+ASM2

oracle   26484    1  0 17:05 ?        00:00:00 asm_lgwr_+ASM2

oracle   26486    1  0 17:05 ?        00:00:00 asm_ckpt_+ASM2

oracle   26488    1  0 17:05 ?        00:00:00 asm_smon_+ASM2

oracle   26490    1  0 17:05 ?        00:00:00 asm_rbal_+ASM2

oracle   26492    1  0 17:05 ?        00:00:00 asm_gmon_+ASM2

oracle   26564    1  0 17:05 ?        00:00:00 asm_lck0_+ASM2

oracle   32297 24832 0 17:09 pts/1    00:00:00 grep asm_

 

exportORACLE_SID=+ASM2

sqlplus/ as sysdba

SQL>shutdown immediate;

SQL>conn / as sysdba

Connectedto an idle instance.

SQL>startup

ASMinstance started

TotalSystem Global Area   92274688 bytes

FixedSize                  1217884 bytes

VariableSize              65890980 bytes

ASMCache                  25165824 bytes

ORA-15032:not all alterations performed

ORA-15063:ASM discovered an insufficient number of disks for diskgroup

"BACKUP"

ORA-15063:ASM discovered an insufficient number of disks for diskgroup

"ARCHLOG"

 

查看ASM日志

Tail-100 /opt/oracle/database/admin/+ASM/bdump/alert_+ASM2.log

SQL>ALTER DISKGROUP ALL MOUNT

TueSep 25 17:52:30 2012

NOTE:cache registered group DATA number=1 incarn=0x28a105da

NOTE:cache registered group ARCHLOG number=2 incarn=0x25e105d8

NOTE:cache registered group BACKUP number=3 incarn=0x262105d9

TueSep 25 17:52:30 2012

LoadedASM Library - Generic Linux, version 2.0.4(KABI_V2) library for asmlib interface

TueSep 25 17:52:30 2012

NOTE:Hbeat: instance not first (grp 1)

ERROR: no PST quorum in group 2:required 1, found 0

Tue Sep 25 17:52:30 2012

NOTE: cache dismounting group2/0x25E105D8 (ARCHLOG)

NOTE: dbwr not being msg'd to dismount

ERROR: diskgroup ARCHLOG was not mounted

TueSep 25 17:52:30 2012

ERROR:no PST quorum in group 3: required 1, found 0

TueSep 25 17:52:30 2012

NOTE:cache dismounting group 3/0x262105D9 (BACKUP)

NOTE:dbwr not being msg'd to dismount

ERROR:diskgroup BACKUP was not mounted

NOTE:cache opening disk 0 of grp 1: VOL1 label:VOL1

NOTE:F1X0 found on disk 0 fcn 0.0

NOTE:cache opening disk 1 of grp 1: VOL2 label:VOL2

NOTE:cache mounting (not first) group 1/0x28A105DA(DATA)

TueSep 25 17:52:31 2012

kjbdomattsend to node 0

TueSep 25 17:52:31 2012

NOTE:attached to recovery domain 1

TueSep 25 17:52:32 2012

NOTE:opening chunk 1 at fcn 0.7142 ABA

NOTE:seq=42 blk=940

TueSep 25 17:52:32 2012

NOTE:cache mounting group 1/0x28A105DA(DATA) succeeded

SUCCESS:diskgroup DATA was mounted

TueSep 25 17:52:34 2012

NOTE:recovering COD for group 1/0x28a105da(DATA)

SUCCESS:completed COD recovery for group 1/0x28a105da(DATA)

 

关闭虚拟机 修改VMX文件增加

scsi1.sharedBus = "VIRTUAL"


<think>嗯,用户询问的是在VMware虚拟机中配置Oracle ASM共享磁盘的方法。这个问题涉及Oracle数据库和虚拟化技术的结合应用,属于比较专业的系统管理领域。 用户可能正在搭建Oracle测试环境或学习ASM技术,从引用内容看应该是在Linux环境下操作。考虑到ASM磁盘共享性的要求,需要特别注意VMware磁盘配置的细节。 参考了用户提供的几个引用片段:引用[2]详细说明了VMware虚拟磁盘创建命令的使用方法,包括磁盘类型、适配器选择等关键参数;引用[1]和[3]则提供了Oracle ASM配置的实际案例,特别是引用[3]提到通过alter diskgroup命令动态添加磁盘的操作流程。 在整理方案时,需要重点解决几个技术难点:一是确保多节点虚拟机能够同时访问共享磁盘,这要求磁盘文件必须配置为"independent persistent"模式;二是Linux系统对共享磁盘的权限控制,需要统一所有节点的udev规则;三是ASMLib驱动与Oracle版本的兼容性问题。 考虑到用户可能不熟悉底层命令,在回答中特别标注了关键命令参数的说明,比如vmware-vdiskmanager的"-t 2"选项表示预分配磁盘空间。还加入了操作后验证步骤,因为ASM磁盘添加后需要检查各节点识别状态是否一致。 最后补充了性能优化建议,因为虚拟机环境下的ASM性能调优与实际物理机有差异,比如预分配磁盘能减少碎片化带来的性能波动。相关问题的设计也侧重实用场景,特别是故障处理方向,因为共享磁盘配置不当容易导致集群脑裂问题。</think>在 VMware 虚拟机中为 Oracle ASM 配置共享磁盘需要确保多个虚拟机节点能够**同时访问**相同的物理磁盘文件。以下是详细步骤: --- ### **步骤 1: 创建共享磁盘文件** 1. **关闭所有虚拟机**。 2. 使用 VMware 命令行工具 `vmware-vdiskmanager.exe` 创建独立持久化磁盘: ```bash vmware-vdiskmanager.exe -c -s 10GB -a lsilogic -t 2 "F:\asm_disk\sharedisk1.vmdk" ``` - **参数说明**: - `-c`: 创建磁盘 - `-s 10GB`: 磁盘大小 - `-a lsilogic`: 适配器类型(选 `lsilogic` 或 `buslogic`) - `-t 2`: **独立持久化模式**(关键!确保多节点可共享) - 路径需替换为你的实际路径[^2]。 --- ### **步骤 2:磁盘添加到所有虚拟机节点** 1. 为每个 Oracle RAC 节点虚拟机添加磁盘- 编辑虚拟机设置 → **添加硬盘** → 选择 **现有磁盘** → 指向刚创建的 `sharedisk1.vmdk`。 2. **重复此步骤**,确保所有节点虚拟机都挂载**同一磁盘文件**。 --- ### **步骤 3: 虚拟机磁盘配置(每个节点执行)** 1. **识别新磁盘**: ```bash ls /dev/sd* # 查看新增磁盘(如 /dev/sdb) ``` 2. **配置磁盘权限**(推荐使用 `udev`): - 创建规则文件 `/etc/udev/rules.d/99-oracle-asm.rules`: ```bash KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM="/usr/lib/udev/scsi_id -g -u -d /dev/$name", RESULT=="<磁盘SCSI_ID>", OWNER="grid", GROUP="asmadmin", MODE="0660" ``` - 获取 `SCSI_ID`: ```bash /usr/lib/udev/scsi_id -g -u -d /dev/sdb ``` 3. 重启 `udev` 服务: ```bash udevadm control --reload-rules udevadm trigger ``` --- ### **步骤 4: 配置 Oracle ASM** 1. **登录 ASM 实例**: ```bash sqlplus / as sysasm ``` 2. **添加磁盘磁盘组**: ```sql ALTER DISKGROUP DATA ADD DISK '/dev/sdb1' NAME asm_sharedisk1; -- 或使用 ASMLib 标签(若安装): ALTER DISKGROUP DATA ADD DISK 'ORCL:SHAREDISK1' NAME asm_sharedisk1; ``` 3. 验证磁盘组状态: ```sql SELECT name, state FROM v$asm_diskgroup; ``` --- ### **关键注意事项** 1. **磁盘模式必须为独立持久化** (`-t 2`):避免快照导致数据不一致[^2][^4]。 2. **所有节点使用相同磁盘文件**:确保路径一致。 3. **SCSI 总线共享设置**: - 虚拟机设置 → 硬盘 → 高级 → **虚拟设备节点** 设置为 `SCSI x:x`(非 IDE)。 - SCSI 控制器需启用 **总线共享**(勾选 "Physical" 或 "Virtual")。 4. **禁用磁盘缓存**(提升稳定性): - 虚拟机设置 → 硬盘 → 高级 → 取消勾选 "缓冲 IO"。 --- ### **性能优化建议** - **预分配磁盘空间** (`-t 2`):避免动态分配的性能开销[^2]。 - **分离 ASM 磁盘路径**:将共享磁盘文件存放在 SSD 或独立磁盘阵列。 - **调整 VMware 内存设置**:为虚拟机预留足够内存,减少交换延迟。 --- ### **常见问题排查** - **节点无法同时识别磁盘**:检查 SCSI 总线共享设置和磁盘模式 (`-t 2`)。 - **ASM 无法发现磁盘**:确认 `udev` 权限或 ASMLib 标签配置正确。 - **I/O 错误**:禁用主机缓存(虚拟机设置 → 硬盘 → 高级 → 取消 "缓冲 IO")。 --- ### 相关问题 1. **如何验证 ASM 共享磁盘在多节点间的同步状态?** 2. **在 VMware 中配置 ASM 时,为什么必须使用独立持久化磁盘?** 3. **如何动态扩展已存在的 ASM 磁盘组容量?** 4. **ASM 磁盘组出现数据不同步时如何修复?** [^1]: 虚拟机环境下的 Oracle ASM 配置需确保磁盘可被多节点共享访问。 [^2]: VMware 共享磁盘需通过 `-t 2` 参数设置为独立持久化模式。 [^3]: 通过 `ALTER DISKGROUP` 命令可动态添加 ASM 磁盘。 [^4]: 虚拟磁盘需配置为 SCSI 模式并启用总线共享。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值