当前位置:首页 > 行业动态 > 正文

分布式存储ceph部署思路

规划集群架构,安装组件并配置参数,创建存储池与CRUSH地图,测试验证,保障

Ceph分布式存储架构

Ceph作为开源分布式存储系统,采用CRUSH算法实现数据分布式存储,具备对象存储(RADOSGW)、块存储(RBD)和文件系统存储(CephFS)三种存储接口,其核心组件包括Monitor(MON)、Manager(MGR)、OSD(Object Storage Daemon)和MDS(Metadata Server),典型架构包含以下角色:

组件 功能描述
MON 维护集群状态,存储CRUSH Map
MGR 提供RESTful接口,管理集群状态
OSD 存储数据对象,处理数据读写
MDS 元数据服务器(仅CephFS启用时需要)

部署前环境准备

硬件规划

建议采用三节点以上服务器集群,需满足:

  • CPU:Intel E5及以上,单节点≥8核
  • 内存:≥32GB(每TB存储容量配4GB内存)
  • 磁盘
    • 至少3块SSD(建议RAID1配置用于OSD)
    • HDD/SSD混合存储(根据业务IOPS需求)
  • 网络:千兆/万兆以太网,建议双网卡冗余

操作系统要求

  • 推荐CentOS 7.6+/Ubuntu 18.04+
  • 关闭SELinux和防火墙(或开放必要端口)
  • NTP时间同步(所有节点时间差<1s)

网络规划

网络类型 端口范围 用途说明
前端业务 TCP:6789/80/443 RBD/CephFS/S3接口
集群心跳 TCP:6740-6742 MON节点通信
OSD通信 UDP:6800-7300 数据复制与恢复
MDS TCP:6801-6803 元数据服务(可选)

部署实施步骤

阶段1:基础环境配置

  1. SSH免密配置:所有节点生成相同公钥并分发
  2. 主机名解析:修改/etc/hosts添加所有节点IP与主机名映射
  3. 创建专用用户:建议创建ceph用户并设置sudo权限

阶段2:安装Ceph软件包

# 添加Ceph仓库(以Octopus版本为例)
cat <<EOF > /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph Repository
baseurl=https://download.ceph.com/rpm-octopus/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
EOF
# 安装基础组件
yum install -y ceph-deploy ceph-common ceph-mds ceph-mgr ceph-osd ceph-radosgw

阶段3:初始化集群

# 使用ceph-deploy工具部署初始监控节点
ceph-deploy new <mon1_host> <mon2_host> <mon3_host>
# 创建初始化配置文件
ceph-deploy mon create-initial --host <mon1_host> --redhat-storage --fsid $(uuidgen)

阶段4:配置OSD节点

  1. 磁盘分区:为每块OSD磁盘创建XFS文件系统
    ssh <osd_host> "sudo fdisk /dev/sdb && mkfs.xfs -f -n size=100G /dev/sdb"
  2. 部署OSD服务:通过ceph-deploy批量部署
    ceph-deploy osd create {osd_host1,osd_host2,...} --zap-disks

阶段5:配置PG与Pool

# 设置副本数为3(生产环境建议至少3个副本)
ceph osd pool create cephfs_data 128 128 replicated size=3 min_size=2 crush_ruleset=1
# 创建块设备池
ceph osd pool create rbd 256 256 replicated size=3

关键参数调优

CRUSH Map配置

建议采用机房级分层策略:

# 查看当前拓扑结构
ceph osd getcrushmap -o crushmap.txt
# 编辑crushmap.txt添加机柜层级
device_class = hdd # 定义存储介质类型
rack = rack1 # 机架编号
chassis = chassis1 # 机箱编号

动态调整参数示例

参数 默认值 生产环境建议值 作用说明
osd_pool_default_size 3 3 数据副本数
osd_pool_default_min_size 2 2 故障恢复最小副本数
osd_max_backfills 1 3 并发数据回填数量
filestore_xattr_use_omap false true 提升元数据查询效率

监控与运维体系

监控指标阈值设置

指标 危险阈值 预警阈值 监控方式
OSD负载率 >85% >70% Ceph Dashboard/Prometheus
网络延迟 >5ms >2ms Ping/时序数据库监控
PG不可用数量 >0 >0(持续15分钟) ceph health monitor
磁盘IO队列深度 >32 >16 sar/iostat

日志分析要点

  • OSD日志:关注FileStore相关错误(如slow request警告)
  • MON日志:检查quorum_writes失败记录
  • PG日志:追踪inactive状态PG的修复进度

典型故障处理流程

场景1:OSD宕机处理

  1. 执行ceph osd tree查看树形结构
  2. 标记故障节点:ceph osd out <osd.x>
  3. 数据迁移:ceph osd crush reweight-by-utilization自动平衡
  4. 恢复节点后执行ceph osd in <osd.x>重新加入集群

场景2:PG卡住处理

# 查看卡住PG列表
ceph pg ls_by_state stuck
# 强制修复指定PG
ceph pg repair <pgid>

FAQs

Q1:Ceph集群扩容时如何处理数据迁移?
A1:通过ceph osd crush reweight命令调整权重,新OSD会自动接收数据,建议每次扩容不超过原集群规模的20%,并监控recovery_rate参数(默认10MiB/s,可调整至50MiB/s提升速度)。

Q2:如何优化Ceph客户端的网络性能?
A2:建议开启TCP快速打开(tcp_fastopen),调整rbd_cache大小(建议设置为内存的10%),并启用bluestore后端存储,对于长连接场景,可设置client_rd_cache_bytes参数

0