cvuqdisk安装失败直接原因是%pre脚本依赖smartctl但系统未安装smartmontools;需先yum install smartmontools,再设置CVUQDISK_GRP=oinstall并确保各节点版本一致、权限为grid:oinstall且setuid/setgid。

cvuqdisk安装失败报错 /usr/sbin/smartctl not found
直接原因是 cvuqdisk RPM 的 %pre 脚本依赖 smartctl,但系统没装 smartmontools。这不是 cvuqdisk 本身损坏,而是预检查机制在找硬件健康工具时断了链。
常见错误现象包括:
ls: 无法访问/usr/sbin/smartctl: 没有那个文件或目录error: %pre(cvuqdisk-1.0.9-1.x86_64) scriptlet failed, exitstatus 1error: install: %pre scriptlet failed (2), skipping cvuqdisk-1.0.9-1
实操建议:
- 先确认缺失:运行
which smartctl或rpm -q smartmontools,返回空即未安装 - RHEL/CentOS 6/7:用
yum install smartmontools(会顺带装mailx依赖) - RHEL/CentOS 8+ 或 Oracle Linux 8+:改用
dnf install smartmontools - 装完立刻验证:
smartctl --version和ls /usr/sbin/smartctl必须成功
cvuqdisk 安装前必须设置 CVUQDISK_GRP 环境变量
不设这个变量,rpm -ivh cvuqdisk-*.rpm 会默认用 root 组安装,导致后续 cluvfy 检查失败,报 “Package cvuqdisk not installed”——即使 RPM 显示安装成功。
正确做法:
- 在所有 RAC 节点上,以
root用户执行:export CVUQDISK_GRP=oinstall(注意:必须和grid用户所属主组一致) - 推荐写入
/etc/profile.d/cvuqdisk.sh并source,避免每次手动 export - 验证是否生效:
echo $CVUQDISK_GRP应输出oinstall - 再运行安装脚本或
rpm -ivh,日志里会显示Using default group oinstall to install package
cvuqdisk 必须在所有节点单独安装且版本严格匹配
Oracle 集群验证(CVU)要求每个节点都独立拥有该包,且版本号(如 cvuqdisk-1.0.9-1)必须和 Grid Infrastructure 安装介质中的完全一致。混用不同小版本(比如一个节点是 1.0.7,另一个是 1.0.9)会导致 cluvfy stage -pre crsinst 报 PRVF-7532 或 PRVF-4037。
关键点:
- 包来源只能是 Grid 安装介质下的
rpm/目录,不要从第三方 repo 下载 - 安装后立即检查:
rpm -q cvuqdisk,输出应为完整包名,如cvuqdisk-1.0.9-1.x86_64 - 跨节点验证一致性:
ssh node2 'rpm -q cvuqdisk',两节点输出必须一字不差 - 若已装错版本,先
rpm -e cvuqdisk卸载,再用正确 RPM 重装
cvuqdisk 权限问题常被忽略:安装后需手动修复 /usr/bin/cvuqdisk 所有者
某些旧版 RPM(如 cvuqdisk-1.0.7-1)安装后,/usr/bin/cvuqdisk 文件所有者可能是 root:root,但 CVU 运行时要求它属于 grid:oinstall。这会导致 cluvfy 静默跳过磁盘扫描,最终 OCR 创建失败或 root.sh 卡住。
补救步骤:
- 检查当前权限:
ls -l /usr/bin/cvuqdisk - 若 owner 不是
grid,执行:chown grid:oinstall /usr/bin/cvuqdisk - 确保可执行:
chmod 6751 /usr/bin/cvuqdisk(setuid + setgid 是必须的) - 该操作必须在每个节点重复执行,不能只做一次
这个细节不会出现在任何报错信息里,但它是 PRVF-5436(共享磁盘不可见)背后最隐蔽的元凶之一。











