OCSSD启动过程详细v1

本文详细解析了1orarootagent_ROOT如何启动ocssd.bin进程,以及该进程如何通过与gpnpd通信来读取VF的discoverystring,扫描并发现VF,获取集群参数配置如misscount、reboottime等。此外,还介绍了ocssd.bin如何进一步获取集群私网信息,实现节点间私网连接,最终完成集群重新配置和成员列表更新的过程。

1 orarootagent_ROOT启动ocssd.bin进程。

2 ocssd.bin进程和gpnpd通信,读取gpnp profile中VF的discovery string,并在对应的路径扫描VF.

3 找到VF后,ocssd.bin就能够获取集群的一些基本参数配置,例如:misscount、reboot time、long I\O timeout、short I\O timeout。

4 ocssd.bin继续和gpnpd通信,获取集群的私网信息,以便和集群的其他节点通信。

5 ocssd.bin进程通过gipcd进程获取本地节点和远程节点的具体私网连接信息。

6 节点间私网信息建立,集群进行重新配置。

7 集群重新配置结束,集群成员列表被更新。

`ocssd.bin` 是 Oracle Clusterware 中 **Cluster Synchronization Services (CSS)** 的核心进程,负责节点间的心跳、集群成员管理以及防止“脑裂”(Split-Brain)。当 `ocssd.bin` 反复崩溃时,会导致整个集群不稳定,甚至节点不断重启。 --- ## ✅ `ocssd.bin` 进程反复崩溃的常见原因 1. **Voting Disk 不可访问或损坏** 2. **Private Interconnect 网络问题(心跳中断)** 3. **时间不同步(NTP/chrony 配置错误)** 4. **操作系统资源不足(内存、CPU、句柄等)** 5. **OCR 损坏或无法访问** 6. **内核参数配置不当** 7. **文件系统权限问题(如 GRID_HOME 权限异常)** 8. **ASM 实例未启动导致 Voting Disk 不可用** --- ## ✅ 排查与解决方案 ### 步骤 1:查看 `ocssd.bin` 崩溃日志 关键日志路径: ```bash $GRID_HOME/log/<hostname>/cssd/ocssd.log ``` 使用以下命令实时查看: ```bash tail -f $GRID_HOME/log/$(hostname)/cssd/ocssd.log ``` 🔍 查找关键词: - `FATAL` - `rebooting after fatal error` - `Cannot open voting file` - `Connection to network handle lost` - `missed check-in from other node` - `voting disk I/O error` #### 示例错误: ```log [ CSSD]clssnmvDiskVerify: Successful connect to voting disk: /dev/oracleasm/disks/VOTE1 [ CSSD]clssnmvDDiskRead: Read failure on voting device /dev/oracleasm/disks/VOTE1 ``` 👉 表示投票盘读取失败。 --- ### 步骤 2:检查 Voting Disk 是否可访问 ```bash # 查看 voting disk 状态 crsctl query css votedisk # 输出应类似: # STATE File Universal Id File Name Disk group # —— ———— ———————————————— —————— ———— # ONLINE 7a9c1e2f3d... (ORCL:VOTE1) /dev/oracleasm/disks/VOTE1 [DATA] ``` ✅ 所有 voting disk 应为 `ONLINE`。若为 `OFFLINE` 或报错: ```bash # 强制重新扫描(谨慎操作) crsctl add css votedisk <path> -force ``` > ⚠️ 注意:删除或添加 voting disk 必须在所有节点 CRS 启动状态下进行,否则风险极高。 --- ### 步骤 3:验证私网通信(Private Interconnect) ```bash # 查看私网配置 oifcfg getif # 输出示例: # eth1 192.168.1.0 cluster_interconnect ``` 测试与其他节点私网 IP 的连通性和延迟: ```bash ping -I eth1 192.168.1.2 ``` 📌 要求: - 延迟 < 1ms - 无丢包 - MTU 匹配(建议设置为 9000,启用 Jumbo Frame) 关闭防火墙(临时测试): ```bash systemctl stop firewalld systemctl disable firewalld ``` --- ### 步骤 4:检查时间同步(NTP / chrony) Oracle 要求节点间时间差 < 500ms。 ```bash # 查看当前时间 date # 查看 chrony 状态 chronyc sources -v chronyc tracking # 检查偏移是否过大 ``` 如果时间偏差超过 1 秒,CSS 会主动 crash 并重启节点! 🔧 解决方法: ```bash # 强制同步时间 chronyc makestep # 或 ntpdate <ntp-server> ``` 并在 `/etc/chrony.conf` 中确保所有节点指向同一个 NTP 服务器。 --- ### 步骤 5:检查 OCR 状态 OCR 存储集群配置信息,若损坏会影响 CSS 初始化。 ```bash ocrcheck ``` 输出必须是: ```text Status of Oracle Cluster Registry is healthy ``` ❌ 如果不健康: - 使用自动备份恢复 OCR: ```bash ocrconfig -restore /u01/app/19.0.0/grid/cdata/<cluster-name>/backup00.ocr ``` - 重启 CRS 生效。 --- ### 步骤 6:检查系统资源和内核参数 #### a. 内存是否充足? ```bash free -h dmesg | grep -i "out of memory\|oom" ``` OOM Killer 杀死 `ocssd.bin` 会导致其突然退出。 #### b. 检查内核参数(/etc/sysctl.conf) 确保包含以下内容(根据官方文档调整): ```conf kernel.shmmax = 1352664064 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 fs.aio-max-nr = 1048576 fs.file-max = 6815744 ``` 应用: ```bash sysctl -p ``` --- ### 步骤 7:检查 GRID_HOME 文件权限 ```bash ls -ld $GRID_HOME/bin/ocssd.bin # 应该是 owned by grid:asmadmin,且有 s bit(SUID) # 正确权限:-rwxr-x--x 1 grid asmadmin ... ocssd.bin ``` 修复权限(以 root 执行): ```bash chown grid:asmadmin $GRID_HOME/bin/ocssd.bin chmod 6751 $GRID_HOME/bin/ocssd.bin # 包含 SUID + sticky ``` 然后重新启动 CRS: ```bash crsctl stop crs crsctl start crs ``` --- ### 步骤 8:强制清理并重建 CSS(最后手段) ⚠️ 仅适用于单节点环境或维护窗口期! ```bash # 停止 CRS crsctl stop crs # 清除本地状态(root 用户) cd /u01/app/19.0.0/grid/crs/install perl roothas.pl -delete -force # 重新配置 HAS perl roothas.pl -postinstall -force ``` 然后重启服务器,再运行 `root.sh`(如果是完整 GI 安装)。 --- ## ✅ 预防措施 | 措施 | 说明 | |------|------| | 启用多个 Voting Disk | 至少 3 个,奇数个,分布在不同磁盘组 | | 多路径私网 | 绑定双网卡(bonding),提高可靠性 | | 定期备份 OCR | 使用 `ocrconfig -manualbackup` | | 监控 ocssd.log | 设置日志轮转和告警 | | 使用 ASMLib 或 udev 固定设备名 | 防止设备重命名导致 voting disk 失联 | --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值