银河麒麟系统如何将Ceph块设备映射到本地使用

来源:3D模型作者:陆星河头衔:网络博主
导读:本期聚焦于陆星河创作的《银河麒麟系统如何将Ceph块设备映射到本地使用》,敬请观看详情。Ceph作为分布式存储方案,在国产化环境中应用越来越广泛,但不少工程师在银河麒麟服务器上做RBD映射时会遇到内核模块缺失、权限认证失败、重启后设备丢失等问题。本文围绕银河麒麟V10环境,详细讲解从安装ceph-common客户端、配置ceph.conf和密钥文件,到使用rbd map命令完成块设备映射的全过程,同时覆盖multipath多路径配置、开机自动挂载以及mon host地址与keyring常见报错的排查方法,帮助你在麒麟系统上稳定使用Ceph块存储。

在国产化替代进程中,银河麒麟V10作为主流的服务器操作系统,经常需要对接已有的Ceph分布式存储集群。对接的核心操作就是把Ceph的RBD块设备映射到本地,变成一个类似/dev/rbd0的块设备,再进行格式化和挂载使用。整个流程看似只有几条命令,但实际操作中坑不少,比如ceph-common没有安装、密钥文件权限不对、映射成功后重启丢失等。本文把完整流程和常见问题的解决办法一次性讲清楚。

银河麒麟系统如何将Ceph块设备映射到本地使用

准备工作:安装客户端工具并配置认证信息

银河麒麟V10基于CentOS 8的软件仓库体系,安装Ceph客户端工具推荐直接使用yum或dnf。如果服务器可以访问外网源,执行下面的命令即可;如果是内网环境,需要提前配置本地源或者挂载Ceph安装介质的repo文件。

# 安装ceph客户端基础包
yum install -y ceph-common

# 确认rbd命令可用
rbd --version
# 输出类似:ceph version 14.2.x 或更高版本

安装完成后,需要从Ceph集群侧拿到两份关键文件:一个是ceph.conf配置文件,另一个是对应用户的keyring密钥文件。通常用client.admin做测试,生产环境建议单独创建一个只授权特定池的用户,例如client.kylin。在Ceph管理节点上执行:

# 在Ceph集群节点上创建专用用户并导出密钥
ceph auth get-or-create client.kylin mon 'allow r' osd 'allow rwx pool=kylin_pool' > ceph.client.kylin.keyring

# 导出精简格式的密钥(推荐客户端使用)
ceph auth print-key client.kylin

ceph.conf复制到麒麟客户端的/etc/ceph/目录下,同时创建密钥文件。这里密钥文件的权限必须是600,否则rbd命令会直接报权限错误,这是新手最容易踩的第一个坑。

mkdir -p /etc/ceph
# 编辑 /etc/ceph/ceph.conf,内容示例:
# [global]
#     mon host = 192.168.10.101,192.168.10.102,192.168.10.103

# 创建密钥文件(keyring格式)
cat > /etc/ceph/ceph.client.kylin.keyring << 'EOF'
[client.kylin]
    key = AQD1P8VgAAAAABAAAPh0XBl3N0EXAMPLEKEY==
EOF

chmod 600 /etc/ceph/ceph.client.kylin.keyring

# 验证连通性
ceph -s --name client.kylin

如果ceph -s能正常返回集群健康状态,说明客户端认证和mon节点网络都没问题,可以进入下一步。如果报monclient(hunting): couldn't connect,优先检查防火墙3300端口和mon host地址写法。

执行RBD映射并挂载使用

认证通过后,先确认目标镜像存在,然后使用rbd map命令把镜像映射为本地块设备。映射成功后系统会生成/dev/rbd0这样的设备文件,后续操作就和普通磁盘完全一样了。

# 查看池中的镜像
rbd ls kylin_pool --name client.kylin

# 执行映射(第一次使用需要先禁用部分特性,避免老内核不支持)
rbd feature disable kylin_pool/data-vol exclusive-lock object-map fast-diff deep-flatten --name client.kylin

# 映射到本地
rbd map kylin_pool/data-vol --name client.kylin
# 输出:/dev/rbd0

# 查看已映射的设备
rbd showmapped

有一个非常典型的问题需要特别注意:麒麟V10的内核如果版本偏旧,映射时会报rbd: sysfs write failed或者Unknown feature错误。这是因为Ceph新版本镜像默认开启了exclusive-lock、object-map等特性,而旧内核的rbd模块不认识这些特性。解决办法就是像上面那样先disable掉多余特性,只保留layering。执行rbd info可以查看当前镜像开启了哪些特性。

映射成功后,对/dev/rbd0进行格式化和挂载:

# 格式化为xfs(麒麟推荐文件系统)
mkfs.xfs /dev/rbd0

# 创建挂载点并挂载
mkdir -p /data
mount /dev/rbd0 /data

# 查看挂载结果
df -h /data

卸载时要注意顺序:先umount,再执行rbd unmap,顺序颠倒可能造成设备忙。如果设备一直显示busy,可以用rbd unmap -o force强制解除,但强制操作前务必确认没有进程还在读写该设备。

开机自动映射与自动挂载配置

手动映射在服务器重启后会失效,生产环境必须配置自动化。这里不推荐把rbd map命令简单写进rc.local,因为rc.local执行时机太晚且不管理依赖关系,网络未就绪时会导致映射失败。更稳妥的做法有两种。

第一种是使用RBD的原生自动映射机制。在镜像上打上krbd标签,内核模块加载时会自动完成映射:

# 给镜像打krbd标签,开机自动映射
rbd add kylin_pool/data-vol krbd --name client.kylin

# 同时在/etc/ceph/目录下确保存在 rbdmap 文件
cat > /etc/ceph/rbdmap << 'EOF'
kylin_pool/data-vol id=kylin,keyring=/etc/ceph/ceph.client.kylin.keyring
EOF

# 启动rbdmap服务并设置开机自启
systemctl enable --now rbdmap

第二种是配置systemd服务单元,灵活度更高,适合有定制需求的场景。创建/etc/systemd/system/rbd-map.service文件,内容如下:

[Unit]
Description=Map Ceph RBD device
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/rbd map kylin_pool/data-vol --name client.kylin
ExecStop=/usr/bin/rbd unmap /dev/rbd0 --name client.kylin

[Install]
WantedBy=multi-user.target

写好服务文件后执行systemctl daemon-reloadsystemctl enable --now rbd-map。挂载部分建议写在/etc/fstab中,并且一定要加上_netdev参数,让系统知道这是网络设备,避免开机时因设备未就绪而卡住:

# /etc/fstab 中添加一行
/dev/rbd0  /data  xfs  defaults,_netdev  0  0

常见报错排查思路汇总

最后把实际运维中高频出现的几类问题整理一下。第一类是认证失败,报RADOS permission denied,一般是keyring文件权限不是600,或者使用的用户名和keyring文件名不匹配,客户端要求ceph.client.用户名.keyring这种严格的对应关系。

第二类是映射报Request timed out,通常是客户端到Ceph集群OSD节点的网络不通。RBD数据面走的是6789以外的动态端口,只放行mon的3300端口是不够的,需要保证客户端到所有OSD节点的内网互通,最好把客户端和存储集群放在同一网段。

第三类是重启后/dev/rbd0变成/dev/rbd1,导致fstab挂载失败。这种情况建议在fstab中不写设备名,改用镜像名称的方式挂载,或者用rbd map输出的稳定符号链接/dev/rbd/kylin_pool/data-vol,这个路径不会因为设备号变化而改变,是最推荐的生产写法。

第四类是性能问题,如果发现映射后读写速度明显偏低,可以用rbd bench-write做基准测试,同时在客户端执行rbd -p kylin_pool perf dump观察指标。常见原因是副本池跨机房部署导致延迟高,或者是麒麟服务器网卡没有做bond、MTU没有开启巨帧。排除掉这些因素后,RBD在万兆内网下跑满磁盘带宽是完全没有问题的。

整体来看,在银河麒麟上使用Ceph块设备,关键点集中在认证文件规范、内核特性兼容、自动化映射这三块。把这三块配置规范到位,麒麟服务器对接Ceph存储的稳定性和性能都能达到生产水准。如果在容器化场景中还需要对接Kubernetes,可以进一步研究ceph-csi插件,原理上同样是基于RBD映射,只是把映射过程交给了CSI驱动自动完成。

银河麒麟CephRBD修改时间:2026-09-13 15:39:01

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260913/56093.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。