登录
首页 >  文章 >  linux

Linux下Ceph存储搭建教程

时间:2026-04-13 13:39:37 291浏览 收藏

本文深入解析了在Linux环境下搭建Ceph分布式存储集群时最常遇到的四大“拦路虎”:ceph-deploy因不自动分发软件包导致初始化失败、cephadm因镜像拉取超时而启动受阻、OSD激活卡死于残留磁盘元数据、以及CephFS挂载因内核协议不兼容报错,并逐一给出精准归因与可落地的实战解决方案——从手动预装组件、配置国内Docker镜像源、安全擦除磁盘元数据,到降级通信协议或切换ceph-fuse,覆盖部署、扩容、运维全链路痛点,助你避开官方文档未明说的深坑,高效构建稳定可靠的Ceph存储底座。

Linux怎么使用Ceph存储_Linux如何搭建分布式存储集群【教程】

ceph-deploy 初始化集群失败:找不到 ceph 命令

根本原因不是没装 Ceph,而是 ceph-deploy 默认只在本地执行命令,不会自动把 Ceph 包推送到目标节点。它假设你已经手动在所有节点上装好了 cephceph-monceph-osd 等包。

实操建议:

  • 先在每个节点(包括部署机)运行 sudo apt install ceph ceph-common ceph-mon ceph-osd(Debian/Ubuntu)或 sudo yum install centos-release-ceph-quincy && sudo yum install ceph-common ceph-mon ceph-osd(CentOS 8+)
  • ceph-deploy 不再维护,官方已弃用;新集群直接用 cephadm,它自带包分发能力
  • 如果坚持用 ceph-deploy,必须确认所有节点的 /usr/bin/ceph 存在且可执行,否则初始化到 mon 步骤就会报 command not found

cephadm bootstrap 失败:Failed to pull image docker.io/ceph/ceph:v17

默认拉取的是国外镜像源,国内网络常超时或被重置。这不是配置写错,是网络策略问题。

实操建议:

  • 提前在所有节点配置好国内镜像加速器,比如阿里云的 https://.mirror.aliyuncs.com,写入 /etc/docker/daemon.json
  • cephadm 指定镜像:cephadm bootstrap --mon-ip 192.168.10.10 --image quay.io/ceph/ceph:v17(quay.io 在国内比 docker.io 稳定)
  • 若仍失败,先手动拉一次:sudo podman pull quay.io/ceph/ceph:v17cephadm 默认优先用 podman
  • 注意:v17(Quincy)要求内核 ≥ 5.4,老系统(如 CentOS 7)需升级 kernel 或改用 v16(Pacific)

OSD 创建卡在 activating 状态,ceph -s 显示 HEALTH_WARN

常见于使用裸设备(如 /dev/sdb)但未清空分区表或 LVM 元数据,Ceph 拒绝复用有残留结构的磁盘。

实操建议:

  • 创建前务必清理:用 sudo ceph-volume lvm zap /dev/sdb --destroy(安全擦除),不要只用 dd if=/dev/zero of=/dev/sdb bs=1M count=100
  • 确认磁盘没有挂载、没被 LVM 占用:lsblksudo pvs 都应不显示该设备
  • 若用目录方式(--data /var/lib/ceph/osd/ceph-0),确保父目录属主是 ceph:ceph,权限为 0755
  • 日志看 journalctl -u ceph.target -f,重点搜 bluestoredevice is busy

客户端 mount cephfs 报错:mount error(22): Invalid argument

不是密钥错了,是内核版太低或没启用 CephFS 模块。CentOS 7.9 默认内核 3.10 不支持 cephfs 的新协议(msgr2),而 cephadm 默认启用了 msgr2

实操建议:

  • 检查内核支持:zcat /proc/config.gz | grep -i ceph(需开启 CONFIG_CEPH_FS
  • 临时降级协议:在 mon 节点修改 /etc/ceph/ceph.conf,加 ms_bind_msgr2 = false,然后 sudo systemctl restart ceph-mon.target
  • 推荐用 kernel client + ceph-fuse 作为过渡:ceph-fuse -n client.admin -r / /mnt/cephfs,绕过内核限制
  • 注意:RBD 映射(rbd map)不受此影响,它走的是 block 层,和 cephfs 协议无关

真正麻烦的是跨版本兼容——比如 Pacific 集群混用 Quincy 客户端,某些 crush rule 或 pool 参数会静默失效,得盯紧 ceph health detail 里的 warning 级提示。

以上就是《Linux下Ceph存储搭建教程》的详细内容,更多关于的资料请关注golang学习网公众号!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>