CentOS 7系统安装Ceph失败求助:无可用软件包等报错
我之前在CentOS 7上部署Ceph的时候也碰到过一模一样的问题,先把你遇到的报错信息整理出来方便定位:
[node.example.com][DEBUG ] 此系统未在授权服务器注册,您可以使用subscription-manager进行注册。
[node.example.com][DEBUG ] 正在确定最快镜像
[node.example.com][DEBUG ] 无可用的ceph软件包。
[node.example.com][DEBUG ] 无可用的ceph-osd软件包。
[node.example.com][DEBUG ] 无可用的ceph-mds软件包。
[node.example.com][DEBUG ] 无可用的ceph-mon软件包。
这个问题其实是两个原因叠加:一是系统默认在尝试访问需要Red Hat商业订阅的源,二是CentOS官方基础源里根本没有Ceph的软件包。下面是一步步的解决办法:
1. 禁用订阅管理器,切换到CentOS公共源
如果你用的是CentOS 7(不是RHEL),完全不需要依赖Red Hat的订阅服务,直接把它关掉并替换成公共源:
- 停止并禁用subscription-manager相关服务:
systemctl stop rhsmcertd systemctl disable rhsmcertd - 备份原有订阅源配置,然后创建CentOS基础源文件:
mv /etc/yum.repos.d/redhat.repo /etc/yum.repos.d/redhat.repo.bak cat > /etc/yum.repos.d/CentOS-Base.repo <<EOF [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #released updates [updates] name=CentOS-$releasever - Updates mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 EOF
2. 添加兼容CentOS 7的Ceph官方源
CentOS 7推荐用Ceph Luminous或者Nautilus版本(更高版本可能有兼容性问题),这里以Luminous为例创建源配置:
cat > /etc/yum.repos.d/ceph.repo <<EOF [ceph] name=Ceph packages for $basearch baseurl=https://download.ceph.com/rpm-luminous/el7/$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm-luminous/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-source] name=Ceph source packages baseurl=https://download.ceph.com/rpm-luminous/el7/SRPMS enabled=0 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc EOF
如果想安装Nautilus版本,把上面的rpm-luminous替换成rpm-nautilus就行。
3. 清理缓存并安装Ceph组件
最后刷新yum缓存,就可以正常安装需要的Ceph包了:
yum clean all yum makecache fast # 安装需要的组件,比如mon、osd、mds yum install ceph ceph-mon ceph-osd ceph-mds -y
额外提醒
如果你是用ceph-ansible自动化部署的,记得在ansible的inventory或者变量文件里指定我们刚才配置的Ceph源,避免部署脚本再次去调用订阅源检查。
内容的提问来源于stack exchange,提问作者Kisen.Chin

