
1. Ceph分布式存储系统概述Ceph是一个开源的分布式存储系统设计初衷是提供高性能、高可靠性和高扩展性的存储解决方案。它最吸引人的特点是完全去中心化的架构——没有单点故障所有组件都可以动态扩展。在实际生产环境中Ceph已经被广泛应用于云计算平台、企业级存储、大数据分析等多个领域。Ceph支持三种存储接口块存储(RBD)像普通硬盘一样使用为虚拟机或物理服务器提供块设备文件系统存储(CephFS)类似NFS的共享文件系统对象存储(RGW)兼容S3和Swift API的对象存储服务2. 环境准备与基础配置2.1 硬件与网络要求建议至少准备3台物理服务器或虚拟机作为集群节点每台配置CPU4核以上内存8GB以上存储系统盘至少1块独立数据盘建议SSD网络千兆以上网络生产环境建议分离public网络和cluster网络重要提示所有节点需要配置静态IP并确保网络互通时间同步必须精确差异不超过1秒2.2 系统初始化配置在所有节点执行以下基础配置# 设置主机名各节点不同 hostnamectl set-hostname ceph-1 # 关闭SELinux setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config # 关闭防火墙 systemctl disable --now firewalld # 配置SSH免密登录 ssh-keygen -t rsa -P -f /root/.ssh/id_rsa ssh-copy-id rootceph-1 ssh-copy-id rootceph-2 ssh-copy-id rootceph-3 # 配置NTP时间同步 yum install -y chrony systemctl enable --now chronyd2.3 磁盘准备使用lsblk确认磁盘设备名称数据盘不要分区直接使用lsblk # 输出示例 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 99G 0 part ├─cs-root 253:0 0 61.2G 0 lvm / ├─cs-swap 253:1 0 7.9G 0 lvm [SWAP] └─cs-home 253:2 0 29.9G 0 lvm /home sdb 8:16 0 100G 0 disk # 这是我们要用的数据盘3. Ceph集群部署实战3.1 安装Cephadm管理工具在主节点(ceph-1)执行# 安装依赖 yum install -y python3 docker # 获取cephadm安装脚本 curl --silent --remote-name --location https://github.com/ceph/ceph/raw/quincy/src/cephadm/cephadm chmod x cephadm # 添加Ceph仓库使用国内镜像加速 ./cephadm add-repo --release quincy sed -i s#download.ceph.com#mirrors.ustc.edu.cn/ceph# /etc/yum.repos.d/ceph.repo # 安装cephadm ./cephadm install3.2 初始化Ceph集群使用cephadm引导新集群cephadm bootstrap --mon-ip 192.168.1.25成功后会输出Dashboard访问信息类似Ceph Dashboard is now available at: URL: https://ceph-1:8443/ User: admin Password: dsvi6yiat73.3 添加集群节点将其他节点加入集群# 复制SSH密钥到其他节点 ssh-copy-id -f -i /etc/ceph/ceph.pub rootceph-2 ssh-copy-id -f -i /etc/ceph/ceph.pub rootceph-3 # 添加主机到集群 ceph orch host add ceph-2 192.168.1.26 ceph orch host add ceph-3 192.168.1.273.4 部署监控服务调整mon和mgr的部署数量# 部署3个monitor必须奇数个 ceph orch apply mon --placement3 ceph-1 ceph-2 ceph-3 # 部署3个manager通常2-3个 ceph orch apply mgr --placement3 ceph-1 ceph-2 ceph-34. 存储服务部署与配置4.1 创建OSD存储设备为每个节点添加数据盘作为OSDceph orch daemon add osd ceph-1:/dev/sdb ceph orch daemon add osd ceph-2:/dev/sdb ceph orch daemon add osd ceph-3:/dev/sdb验证OSD状态ceph osd tree4.2 部署CephFS文件存储# 创建数据池和元数据池 ceph osd pool create cephfs_data ceph osd pool create cephfs_metadata # 创建文件系统 ceph fs new cephfs cephfs_metadata cephfs_data # 部署MDS服务 ceph orch apply mds cephfs --placement3 ceph-1 ceph-2 ceph-34.3 部署RGW对象存储# 创建realm和zone radosgw-admin realm create --rgw-realmmyorg --default radosgw-admin zonegroup create --rgw-zonegroupdefault --master --default radosgw-admin zone create --rgw-zonegroupdefault --rgw-zonecn-east-1 --master --default # 部署RGW服务 ceph orch apply rgw myorg cn-east-1 --placement3 ceph-1 ceph-2 ceph-35. 集群管理与维护5.1 常用管理命令# 查看集群状态 ceph -s # 查看服务部署情况 ceph orch ls # 查看特定类型服务 ceph orch ps --daemon-type osd # 扩展OSD当有新磁盘时 ceph orch daemon add osd ceph-1:/dev/sdc5.2 访问Web界面Ceph提供了多个Web管理界面Dashboard: https:// :8443Prometheus: http:// :9095Grafana: https:// :3000初始用户名密码在bootstrap时生成可通过以下命令查看ceph dashboard get-login-credentials5.3 客户端配置在需要使用Ceph存储的客户端上# 安装客户端工具 yum install -y ceph-common # 从集群节点复制配置文件 scp rootceph-1:/etc/ceph/ceph.conf /etc/ceph/ scp rootceph-1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/6. 生产环境注意事项网络配置建议分离public网络和cluster网络万兆网络是生产环境的基本要求监控告警配置Prometheus监控所有Ceph指标设置合理的告警规则如OSD down、PG异常等性能调优# 调整OSD内存限制默认4GB ceph config set osd osd_memory_target 8GB # 启用bluestore压缩 ceph config set osd bluestore_compression_algorithm snappy备份策略定期备份monitor的keyring和配置文件对重要数据配置多副本或纠删码升级注意事项先升级master节点逐个节点滚动升级升级前确保集群状态健康7. 常见问题排查问题1OSD无法启动检查步骤查看日志journalctl -u ceph-osdosd-id检查磁盘smartctl -a /dev/sdX检查网络ping monitor-ip问题2PG状态异常常见修复命令ceph pg repair pg-id ceph osd set norecover ceph osd unset norecover问题3空间不足警告解决方案添加新的OSD调整CRUSH规则清理无用数据8. 性能优化建议硬件层面使用SSD作为OSD磁盘为journal/WAL使用单独的NVMe设备确保足够的网络带宽配置层面# 调整OSD内存 ceph config set osd osd_memory_target 8GB # 启用RBD缓存 rbd_cache true rbd_cache_size 64MBPool配置根据负载类型选择合适的PG数量对性能敏感数据使用副本而非纠删码考虑使用缓存分层技术我在实际部署中发现Ceph集群的性能很大程度上取决于网络质量。曾经在一个项目中将网络从千兆升级到万兆后集群的IOPS性能提升了近8倍。另外定期执行ceph osd reweight-by-utilization可以自动平衡数据分布避免热点问题。