分布式存储之ceph部署搭建
- 行业动态
- 2025-05-17
- 2
分布式存储之Ceph部署搭建
Ceph是一种开源的分布式存储系统,提供对象存储、块存储和文件存储三种存储接口,具有高可靠性、高扩展性和高性能的特点,本文将详细介绍Ceph集群的部署与搭建流程,涵盖环境准备、节点配置、集群初始化、存储池创建及客户端接入等关键环节。
环境准备
Ceph集群的部署需要至少3个节点(包括Monitor节点、OSD节点和管理节点),建议采用千兆及以上网络环境,以下是硬件与软件要求:
组件 | 最低要求 |
---|---|
节点数量 | ≥3个物理节点(可合并角色) |
CPU | 2核以上(推荐4核+) |
内存 | ≥4GB(推荐8GB+) |
磁盘 | ≥100GB机械硬盘或SSD(OSD节点需多块磁盘) |
操作系统 | CentOS 7.6+/Ubuntu 18.04+/Rocky Linux 8.x(需支持LVM和XFS/EXT4文件系统) |
网络 | 低延迟网络(建议RDMA或10GbE),所有节点需互通 |
软件依赖 | NTP服务、SSH免密登录、Firewalld关闭或开放必要端口(6789/6800-7300) |
部署前配置
系统初始化
- 关闭防火墙或开放Ceph相关端口(默认集群通信端口6789,对象存储端口为RADOSGW的80/443)。
- 配置所有节点的主机名解析(
/etc/hosts
)并启用SSH免密登录。 - 同步时间:安装
chrony
或ntp
服务,确保所有节点时间一致。
创建Ceph用户
创建一个专用用户(如ceph
)用于运行Ceph服务,并设置密码:useradd ceph -s /sbin/nologin echo "ceph:yourpassword" | chpasswd
部署工具选择
- 方式1:ceph-deploy(推荐新手)
通过脚本自动化部署集群,适合小规模测试。 - 方式2:手动编译安装
适合定制化需求,需从源码编译Ceph并手动配置。
- 方式1:ceph-deploy(推荐新手)
Ceph集群部署步骤
以下以ceph-deploy
工具为例,假设3个节点分别为mon1
、mon2
、mon3
(Monitor节点),osd1
、osd2
(OSD节点),client
(客户端)。
安装Ceph软件包
在所有节点安装Ceph:
# 添加Ceph仓库(以CentOS为例) cat > /etc/yum.repos.d/ceph.repo <<EOF [ceph-noarch] name=Ceph Repository baseurl=https://download.ceph.com/rpm-octopus/el7/noarch enabled=1 gpgcheck=0 EOF # 安装ceph-deploy和Ceph基础包 yum install -y ceph-deploy python3-argcomplete ceph-common ceph-mds ceph-mgr ceph-osd ceph-mon ceph-radosgw
初始化Monitor节点
在任意节点(如
mon1
)生成集群初始化配置:ceph-deploy new mon1 mon2 mon3
此命令会在
mon1
生成密钥环(ceph.client.admin.keyring
)和配置文件(ceph.conf
)。分发配置到所有Monitor节点:
ceph-deploy --overwrite-conf mon1 mon2 mon3
启动Monitor服务:
ceph-deploy mon create-initial
部署OSD节点
为每个OSD节点准备磁盘(例如
/dev/vdb
),创建物理卷并激活LVM:pvcreate /dev/vdb vgcreate ceph-osd /dev/vdb lvcreate -n osd-data -L 10G ceph-osd mkfs.xfs -i size=16k /dev/ceph-osd/osd-data
部署OSD并关联到集群:
ceph-deploy osd create osd1 --monitors mon1:6789,mon2:6789,mon3:6789
配置Management Node
在管理节点(如client
)安装Ceph客户端工具:
yum install -y ceph-common ceph-fuse
通过ceph -s
检查集群状态,确认所有OSD和Monitor均显示为active
。
存储池与权限管理
创建存储池
Ceph默认提供三种存储池类型:rbd
(块存储)rgw
(对象存储,需额外部署Rados Gateway)cephfs
(文件存储)
示例:创建块存储池并设置副本数为3:
ceph osd pool create rbd_pool 128 128 erasure 3
分配权限
为客户端生成密钥并绑定存储池:ceph auth get-or-create client.bob mon 'allow r' osd 'allow rwx' -o /etc/ceph/ceph.client.bob.keyring
客户端接入与验证
挂载块存储(RBD)
在客户端安装rbd-fuse
工具并挂载:yum install -y ceph-common ceph-fuse mount.rbd -p rbd_pool /dev/rbd/foo /mnt
验证集群健康状态
执行以下命令检查集群状态:ceph -s # 输出类似:HEALTH_OK ceph osd tree # 查看OSD拓扑 ceph osd pool ls # 列出存储池
高可用性优化
Monitor冗余
确保至少有3个Monitor节点,避免单点故障,修改quorum_size
为2
:ceph mon set-quorum-size 2
CRUSH地图调优
编辑/etc/ceph/ceph.conf
,启用crush_location
以优化数据分布:[global] crush_location_bucket = host
网络优化
- 开启RDMA支持(需InfiniBand网卡)。
- 调整
tcp_congestion_control
为dctc
或bbr
。
FAQs
Q1: 集群状态显示HEALTH_WARN,部分OSD未激活怎么办?
A1: 检查OSD日志(/var/log/ceph/osd.<id>.log
),常见原因包括磁盘损坏、LVM配置错误或网络分区,可通过ceph osd tree
查看OSD状态,使用ceph osd repair <osd_id>
修复。
Q2: 如何扩展Ceph集群?
A2: 新增节点需执行以下步骤:
- 安装Ceph软件包并配置
ceph.conf
; - 使用
ceph-deploy osd create <new_osd>
添加OSD; - 运行`ceph osd crush reweight-by