在虚拟机环境中搭建和使用RAC(Real Application Clusters)集群是很多Oracle学习者和测试人员的常见选择,但虚拟化的特性会带来一些物理机环境下不存在的问题,稍不注意就可能导致集群故障。下面我们就详细梳理相关的注意事项。

一、硬件资源配置注意事项
虚拟机的硬件资源分配直接影响RAC集群的稳定性,建议按照以下标准配置:
- 每个RAC节点至少分配4核CPU、8GB内存,生产测试场景可适当提升配置,避免资源不足导致节点无响应
- 不要过度分配CPU和内存资源,预留足够的宿主机资源,防止多个虚拟机同时高负载时宿主机资源耗尽
- 虚拟磁盘优先选择厚置备延迟置零模式,避免使用精简置备,减少磁盘扩容和性能波动问题
二、网络规划注意事项
RAC对网络的要求较高,虚拟机环境下网络配置需要额外注意:
- 至少配置3类网络:公共网络(对外提供服务)、私有网络(节点间心跳通信)、存储网络(连接共享存储),每类网络使用独立的虚拟交换机
- 私有网络建议选择仅主机模式或者自定义的隔离虚拟网络,避免和公共网络共用,减少广播干扰
- 关闭虚拟机的网络适配器的
MAC地址自动生成选项,固定MAC地址,防止虚拟机重启后MAC变化导致网络不通 - 所有节点的hosts文件需要正确配置,包含每个节点的公共IP、私有IP、虚拟IP、SCAN IP,且保证节点间网络互通,无丢包
三、共享存储配置注意事项
共享存储是RAC的核心组件,虚拟机环境下共享存储的配置是出错率最高的环节:
- 优先选择ISCSI或者虚拟共享磁盘模式,不要使用本地磁盘模拟共享存储,避免多节点同时写入时出现数据不一致
- 如果使用虚拟共享磁盘,需要将磁盘模式设置为
独立持久,并勾选共享选项,保证多个节点可以同时访问 - 存储的udev规则需要正确配置,保证重启后磁盘设备名固定,避免ASM识别不到磁盘
以下是udev规则配置的示例,用于固定ISCSI共享磁盘的设备名:
# 查看磁盘的SCSI_ID
/usr/lib/udev/scsi_id -g -u -d /dev/sdb
# 编写udev规则文件,/etc/udev/rules.d/99-oracle-asm.rules
KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="360014058d2e9ee3a5b449a9a9a9a9a9a", SYMLINK+="asm_disk01", OWNER="grid", GROUP="asmadmin", MODE="0660"四、系统参数与软件配置注意事项
- 虚拟机的操作系统版本需要和RAC版本兼容,建议选择Oracle官方认证的操作系统版本,避免兼容性问题
- 按照Oracle官方文档的要求调整内核参数,比如
kernel.shmmax、kernel.shmall、net.ipv4.ip_local_port_range等,不要遗漏参数 - 关闭虚拟机的SELinux和防火墙,或者开放RAC相关的端口,避免节点间通信被拦截
- 安装Grid和Oracle软件时,使用
cvuqdisk工具提前检查集群的软硬件环境,提前解决不符合要求的问题
五、日常使用注意事项
- 不要随意快照虚拟机,尤其是集群运行中的节点,快照可能导致共享存储状态不一致,建议停机后再做快照
- 虚拟机关机时需要先关闭RAC集群服务,再关闭虚拟机,避免数据丢失或者集群状态异常
- 定期备份RAC的OCR和 Voting Disk文件,虚拟机环境下的存储故障恢复成本更高,备份可以降低风险
- 如果宿主机需要维护,建议先关闭所有RAC节点虚拟机,再操作宿主机,避免突然断电导致集群损坏
只要按照上述注意事项配置和使用,虚拟机上的RAC环境也可以保持长期稳定运行,满足测试和学习的需要。