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

分布式存储ceph集群部署

规划硬件资源,部署Ceph组件,配置存储池与CRUSH策略,启动集群

分布式存储Ceph集群部署详解

环境准备与规划

  1. 硬件资源要求
    Ceph集群的性能和可靠性依赖于底层硬件配置,需根据业务规模合理规划:

    • 节点类型:分为Monitor节点(管理集群状态)、Manager节点(提供REST API)、OSD节点(存储数据)、MDS节点(元数据服务,仅文件存储场景)。
    • 最低硬件配置
      | 角色 | CPU | 内存 | 磁盘 | 网络带宽 |
      |————–|——|——-|————————–|———-|
      | Monitor/Mgr | 2核 | 4GB | SSD(低延迟) | 千兆网卡 |
      | OSD | 4核 | 8GB | HDD/SSD(容量根据需求) | 万兆网卡 |
      | MDS(可选) | 2核 | 4GB | 无特殊要求 | 千兆网卡 |
  2. 操作系统与网络规划

    • 系统要求:推荐CentOS 7/8、Ubuntu 20.04 LTS或Rocky Linux,内核版本≥4.x。
    • 网络拓扑
      • 公共网络:用于节点通信(如SSH、Ceph心跳)。
      • 前端网络:客户端访问Ceph存储(如NFS、RBD、S3)。
      • 集群网络:OSD间数据复制(可选独立网络,推荐万兆)。
  3. 磁盘分区与格式化

    • 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或关闭相关服务。

Ceph集群部署步骤

  1. 安装前配置

    • 主机名解析:所有节点需配置/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免密登录:生成密钥对并分发至所有节点。
  2. 部署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
  3. 部署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
  4. 配置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存储池

客户端与服务配置

  1. 启用Ceph Manager

    • 启动Dashboard
      ceph mgr module enable dashboard
      # 访问地址:http://<mgr_ip>:8080(默认端口)
    • 配置Prometheus监控
      ceph mgr module enable prometheus
  2. 部署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
  3. 集成RDMA加速(可选)

    • 配置RoCE网络:确保OSD节点支持RDMA,启用rdma模块。
    • 调整Ceph参数
      ceph config set global rbd_default_features 3 # 启用对象特性
      ceph config set global osd_rdma_network true

监控与优化

  1. 健康状态检查

    • 查看集群状态
      ceph health detail
      # 常见状态说明:
      # HEALTH_OK:正常
      # HEALTH_WARN:轻微问题(如PG数量不均衡)
      # HEALTH_ERR:严重错误(如OSD宕机)
    • PG分布优化:通过ceph pg ls检查放置组分布,调整pg_numpgp_num参数。
  2. 性能调优参数
    | 参数 | 默认值 | 优化建议 | 适用场景 |
    |———————–|———|—————————|—————-|
    | osd_recovery_op_priority | 5 | 调整为10(提高恢复优先级) | 大规模数据恢复 |
    | filestore_xattr_use_omap | false | true(加速元数据操作) | 文件存储场景 |
    | bluestore_cache_size | 内存5% | 根据SSD容量扩大至10% | SSD作为OSD时 |

  3. 日志与审计

    • 集中日志收集:配置Elasticsearch+Kibana分析/var/log/ceph日志。
    • 审计追踪:启用ceph config set global audit_log true记录操作日志。

常见问题与解决方案

FAQs
Q1:如何扩展Ceph集群新增OSD?
A1:执行以下步骤:

  1. 在目标节点准备磁盘并分区;
  2. 运行ceph-deploy osd create --zap-disk <node>:<disk>
  3. 触发数据平衡:ceph osd reweight-by-utilization

Q2:OSD宕机后如何恢复?
A2:

  1. 标记OSD为outceph osd out <osd.id>
  2. 修复硬件问题后,重新上线:ceph osd in <osd.id>
  3. 手动触发数据恢复:`ceph osd reweight-by-
0