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

分布式存储ceph集群实践

部署Monitor节点,配置集群,添加OSD存储,调优PS/PG/CRUSH,启停MD

分布式存储Ceph集群实践指南

环境规划与硬件选型

Ceph集群的性能和稳定性高度依赖硬件选型,以下是典型生产环境的推荐配置:

组件类型 CPU 内存 磁盘 网络 用途说明
Monitor节点 8核+ 16GB+ SSD(RAID1) 千兆+ 集群元数据管理
OSD节点 16核+ 32GB+ HDD/SSD混合 万兆+ 数据存储与检索
Client节点 4核+ 8GB+ 业务访问入口
网关节点 8核+ 16GB+ SSD缓存盘 万兆+ RGW/S3接口服务

关键设计原则

  1. 三副本策略:每份数据保存3个副本,需保证ECU数量≥3
  2. 网络隔离:管理网段(10.0.0.0/24)、数据网段(172.16.0.0/16)分离
  3. 磁盘配比:HDD(容量型)与SSD(性能型)按7:3比例搭配

部署前准备

  1. 系统初始化

    # 时间同步
    ntpdate ntp.aliyun.com
    sed -i 's/^.NTP/server ntp.aliyun.com/' /etc/ntp.conf
    systemctl enable ntpd
    # 防火墙配置
    firewall-cmd --permanent --add-port={6789/tcp,6800/tcp,6801/tcp}
    firewall-cmd --permanent --add-service=nfs
  2. YUM源配置

    cat <<EOF >/etc/yum.repos.d/ceph.repo
    [ceph-noarch]
    name=Ceph noarch
    baseurl=http://mirrors.aliyun.com/octopus/ceph/$releasever/
    enabled=1
    gpgcheck=1
    EOF
  3. SSH免密配置

    ssh-keygen -t rsa -P ""
    for node in {mon1,osd1,osd2}; do
        ssh-copy-id -i ~/.ssh/id_rsa.pub root@$node
    done

集群部署流程

Step 1:初始化Monitor节点

ceph-deploy new mon1 mon2 mon3
ceph-deploy mon create-initial-monitors mon1 mon2 mon3

Step 2:部署OSD节点

# 磁盘预处理
sed -i '/^sdb/d' /etc/fstab      # 清除原有挂载配置
pvcreate /dev/sdb               # 创建PV卷
vgcreate ceph_osd /dev/sdb      # 创建VG卷组
lvcreate -n osd_data -L 10T ceph_osd # 创建LV逻辑卷
mkfs.xfs -f -n ftype=1 /dev/ceph_osd/osd_data
# OSD部署
ceph-deploy osd create osd1 osd2 osd3 --zap-disk

Step 3:配置CRUSH地图

ceph osd crush reweight-bucket by-hostname 0.2
ceph osd crush add-bucket host1 host
ceph osd crush move host1 root=default

核心组件配置

组件类型 配置文件路径 关键参数 推荐值
Monitor /etc/ceph/ceph.conf mon_host 0.0.1:6789,10.0.0.2:6789,10.0.0.3:6789
OSD /etc/ceph/osd. .conf osd_memory_target 5GB
MDS /etc/ceph/mds. .conf mds_cache_size 4G
Client /etc/ceph/client. .conf client_mount_timeout 60s

存储池管理实践

创建ECP存储池

ceph osd pool create ecp_pool 128 128 erasure  # 纠删码模式
ceph osd pool set ecp_pool allow_ec_overwrites true

RBD块存储配置

rbd create --size 100G --pool rbd_pool my_disk
rbd feature enable my_disk layering,deep-flatten,fast-diff

性能优化策略

  1. PG数量计算

    PG_NUM = (OSD_COUNT  100) / (CLIENT_COUNT  REPLICATION_FACTOR)
    # 示例:10 OSD  100 / (5客户端  3副本) = 66个PG
  2. 缓存调优

    ceph config set global filestore_xfs_flags "-o rsize=4096,wsize=4096"
    ceph config set global osd_recovery_max_active_stuck 50
  3. 网络优化

    • 启用RDMA传输:net_config = rdma
    • TCP窗口缩放:sysctl -w net.ipv4.tcp_rmem="41943040"
    • Jumbo帧配置:ifconfig eth0 mtu 9000

监控与运维

常用监控命令

# 集群健康检查
ceph health detail
# OSD状态查看
ceph osd tree
# PG分布分析
ceph pg dump_stuck inactive
# 性能统计
ceph osd perf

日志分析技巧

  • 慢请求追踪:grep "slow request" /var/log/ceph/osd.log
  • OSD负载分析:sar -d -p + iostat -dx组合使用
  • 网络延迟检测:ceph osd benchmark --connect-timeout 5

故障处理案例

场景1:OSD离线恢复

# Step1:标记坏盘
ceph osd out osd.123
# Step2:替换磁盘
sed -i '/sdb/d' /etc/fstab
# Step3:重新部署OSD
ceph-deploy osd zap osd1 && ceph-deploy osd create osd1 --zap-disk

场景2:PG卡住处理

# Step1:强制修复
ceph pg repair_all <pg_id>
# Step2:调整CRUSH权重
ceph osd crush reweight-bucket by-hostname 0.15
# Step3:重建PG队列
ceph osd pool set <pool> pg_autoscale_mode off

扩展与升级方案

扩容OSD节点

# Step1:添加新节点
ceph-deploy osd create new_osd --zap-disk --redhat-storage=true
# Step2:重平衡数据
ceph osd pool set <pool> size <new_size>
# Step3:验证分布
ceph osd tree -s

版本升级流程

# Step1:停止服务
systemctl stop ceph-osd@.service ceph-mon@.service
# Step2:升级软件包
yum clean all && yum update ceph-common ceph-osd ceph-mon -y
# Step3:重启集群
systemctl daemon-reload && systemctl start ceph-mon@.service ceph-osd@.service

FAQs常见问题解答

Q1:如何根据业务需求规划Ceph集群规模?
A1:需考虑三个维度:①数据总量(当前量+3年增长量)②并发访问量(IOPS需求)③容灾等级(副本数),计算公式:所需OSD数 = (总容量 × 副本数) / (单盘容量 × 0.9),建议预留20%冗余资源,例如100TB数据+3副本,使用4TB硬盘时至少需要7个OSD节点。

Q2:遇到”OSD stuck inactive”告警如何处理?
A2:分三步排查:①检查磁盘SMART状态(smartctl -a /dev/sdb)②确认网络连通性(ping -c 5 <monitor_ip>)③重置OSD状态(ceph osd out <osd_id>ceph osd in <osd_id>),若持续异常,需查看/var/log/ceph/osd.<id>.log中的

0