上一篇
分布式存储ceph集群部署
- 行业动态
- 2025-05-15
- 6
规划硬件资源,部署Ceph组件,配置存储池与CRUSH策略,启动集群
分布式存储Ceph集群部署详解
环境准备与规划
硬件资源要求
Ceph集群的性能和可靠性依赖于底层硬件配置,需根据业务规模合理规划:- 节点类型:分为Monitor节点(管理集群状态)、Manager节点(提供REST API)、OSD节点(存储数据)、MDS节点(元数据服务,仅文件存储场景)。
- 最低硬件配置:
| 角色 | CPU | 内存 | 磁盘 | 网络带宽 |
|————–|——|——-|————————–|———-|
| Monitor/Mgr | 2核 | 4GB | SSD(低延迟) | 千兆网卡 |
| OSD | 4核 | 8GB | HDD/SSD(容量根据需求) | 万兆网卡 |
| MDS(可选) | 2核 | 4GB | 无特殊要求 | 千兆网卡 |
操作系统与网络规划
- 系统要求:推荐CentOS 7/8、Ubuntu 20.04 LTS或Rocky Linux,内核版本≥4.x。
- 网络拓扑:
- 公共网络:用于节点通信(如SSH、Ceph心跳)。
- 前端网络:客户端访问Ceph存储(如NFS、RBD、S3)。
- 集群网络:OSD间数据复制(可选独立网络,推荐万兆)。
磁盘分区与格式化
- OSD磁盘处理:
# 以/dev/sdb为例,创建XFS文件系统 mkfs.xfs -f -i size=16384 /dev/sdb # 挂载到目录(持久化存储) mkdir -p /var/lib/ceph/osd/ceph-xx mount /dev/sdb /var/lib/ceph/osd/ceph-xx
- 禁用磁盘休眠:修改
/etc/laptop-mode/laptop-mode.conf
或关闭相关服务。
- OSD磁盘处理:
Ceph集群部署步骤
安装前配置
- 主机名解析:所有节点需配置
/etc/hosts
,示例如下:168.1.10 mon1.example.com 192.168.1.11 mon2.example.com 192.168.1.12 osd1.example.com
- 时间同步:通过NTP或chrony确保所有节点时间一致。
- SSH免密登录:生成密钥对并分发至所有节点。
- 主机名解析:所有节点需配置
部署Monitor节点
- 安装Ceph软件包:
# 添加Ceph仓库(以Octopus版为例) cat <<EOF > /etc/yum.repos.d/ceph.repo [ceph-octopus] baseurl=https://download.ceph.com/rpm-octopus/el7/x86_64 enabled=1 gpgcheck=1 EOF yum install -y ceph-deploy ceph-common ceph-mds ceph-mgr ceph-osd ceph-radosgw
- 初始化集群:
ceph-deploy new mon1 mon2 mon3 # 生成初始配置文件并分发至所有节点 ceph-deploy --host <mon_ip> mon create-initial
- 安装Ceph软件包:
部署OSD节点
- 创建OSD目录:
ceph-deploy disk zap osd1:/dev/sdb # 清除磁盘签名 ceph-deploy osd create --zap-disk osd1:/dev/sdb
- 扩展OSD容量:新增磁盘时执行
ceph-deploy osd add osd1:/dev/sdc
。
- 创建OSD目录:
配置CRUSH地图与存储池
- 查看CRUSH拓扑:
ceph osd tree # 输出示例: # ... root default ... # osd.0 weight=0.125 # osd.1 weight=0.125 # osd.2 weight=0.125
- 创建存储池:
ceph osd pool create blockpool 128 128 erasure # 块存储池,副本数=3 ceph osd pool create rgwpool 64 64 replicated # RGW存储池
- 查看CRUSH拓扑:
客户端与服务配置
启用Ceph Manager
- 启动Dashboard:
ceph mgr module enable dashboard # 访问地址:http://<mgr_ip>:8080(默认端口)
- 配置Prometheus监控:
ceph mgr module enable prometheus
- 启动Dashboard:
部署Ganesha NFS网关
- 安装Ganesha:
yum install -y ceph-nfs-ganesha # 配置NFS导出目录 echo "/cephfs/nfs /export/nfs ceph nfs.cluster:blockpool" > /etc/exports-ceph.conf
- 启动服务:
systemctl enable nfs-ganesha nfs-ganesha.target systemctl start nfs-ganesha.target
- 安装Ganesha:
集成RDMA加速(可选)
- 配置RoCE网络:确保OSD节点支持RDMA,启用
rdma
模块。 - 调整Ceph参数:
ceph config set global rbd_default_features 3 # 启用对象特性 ceph config set global osd_rdma_network true
- 配置RoCE网络:确保OSD节点支持RDMA,启用
监控与优化
健康状态检查
- 查看集群状态:
ceph health detail # 常见状态说明: # HEALTH_OK:正常 # HEALTH_WARN:轻微问题(如PG数量不均衡) # HEALTH_ERR:严重错误(如OSD宕机)
- PG分布优化:通过
ceph pg ls
检查放置组分布,调整pg_num
和pgp_num
参数。
- 查看集群状态:
性能调优参数
| 参数 | 默认值 | 优化建议 | 适用场景 |
|———————–|———|—————————|—————-|
|osd_recovery_op_priority
| 5 | 调整为10(提高恢复优先级) | 大规模数据恢复 |
|filestore_xattr_use_omap
| false | true(加速元数据操作) | 文件存储场景 |
|bluestore_cache_size
| 内存5% | 根据SSD容量扩大至10% | SSD作为OSD时 |日志与审计
- 集中日志收集:配置Elasticsearch+Kibana分析
/var/log/ceph
日志。 - 审计追踪:启用
ceph config set global audit_log true
记录操作日志。
- 集中日志收集:配置Elasticsearch+Kibana分析
常见问题与解决方案
FAQs
Q1:如何扩展Ceph集群新增OSD?
A1:执行以下步骤:
- 在目标节点准备磁盘并分区;
- 运行
ceph-deploy osd create --zap-disk <node>:<disk>
; - 触发数据平衡:
ceph osd reweight-by-utilization
。
Q2:OSD宕机后如何恢复?
A2:
- 标记OSD为
out
:ceph osd out <osd.id>
; - 修复硬件问题后,重新上线:
ceph osd in <osd.id>
; - 手动触发数据恢复:`ceph osd reweight-by-