单机部署Ceph:最小化环境下的存储实践指南

一、单机部署Ceph的适用场景与价值

Ceph作为分布式存储系统,通常以多节点集群形式部署以实现高可用与横向扩展。但在开发测试、教育演示或资源受限的小型存储场景中,单机部署Ceph可提供轻量级解决方案。其核心价值包括:

  1. 开发验证:开发者可在本地环境模拟Ceph核心功能(如RADOS块存储、RGW对象存储),无需搭建多节点集群。
  2. 资源节约:单台物理机或虚拟机即可运行Ceph服务,适合预算有限的个人或小型团队。
  3. 快速部署:省略网络配置、多节点同步等复杂步骤,部署周期从数小时缩短至分钟级。
  4. 功能演示:用于教学或技术分享时,单机环境可直观展示Ceph的架构与API调用。

需注意,单机部署的Ceph不具备生产级高可用性,单点故障会导致数据不可用,仅推荐用于非关键业务场景。

二、环境准备与依赖安装

1. 硬件与系统要求

  • 操作系统:推荐Ubuntu 22.04 LTS或CentOS 8,内核版本≥5.4(支持RBD设备映射)。
  • 磁盘配置:至少1块SSD/HDD作为OSD存储(建议≥100GB),1块系统盘(≥40GB)。
  • 内存要求:≥4GB RAM(测试环境可放宽至2GB,但性能受限)。
  • 网络:单网卡即可,需关闭防火墙或放行Ceph默认端口(6789, 6800-7300)。

2. 依赖安装

以Ubuntu为例,执行以下命令安装基础依赖:

  1. sudo apt update
  2. sudo apt install -y ceph ceph-common ceph-mds ceph-mon ceph-osd radosgw

或通过Ceph官方仓库安装最新版本:

  1. wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
  2. echo "deb https://download.ceph.com/debian-$(lsb_release -sc)/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/ceph.list
  3. sudo apt update && sudo apt install -y ceph

三、单机部署Ceph的详细步骤

1. 初始化Monitor服务

Monitor(MON)负责集群元数据管理,单机环境下需配置伪分布式模式:

  1. # 创建MON数据目录
  2. sudo mkdir -p /var/lib/ceph/mon/ceph-localhost
  3. # 生成MON密钥环
  4. sudo ceph-authtool --create-keyring /var/lib/ceph/mon/ceph-localhost/keyring \
  5. --gen-key -n mon. --cap mon 'allow *'
  6. # 创建初始MON地图文件
  7. sudo ceph-mon --mkfs -i localhost --monmap /tmp/monmap --keyring /var/lib/ceph/mon/ceph-localhost/keyring
  8. # 启动MON服务
  9. sudo systemctl enable ceph-mon@localhost
  10. sudo systemctl start ceph-mon@localhost

2. 配置OSD存储

OSD(Object Storage Device)是实际存储数据的组件,单机部署时需手动指定磁盘:

  1. # 查看可用磁盘(避免使用系统盘)
  2. lsblk
  3. # 假设使用/dev/sdb作为OSD,先分区并创建文件系统(可选)
  4. sudo parted /dev/sdb mklabel gpt
  5. sudo parted /dev/sdb mkpart primary 1MiB 100%
  6. sudo mkfs.xfs /dev/sdb1
  7. # 激活OSD
  8. sudo ceph-volume lvm activate --osd-id 0 --no-systemd
  9. # 或直接使用文件作为存储(测试用)
  10. sudo mkdir -p /var/lib/ceph/osd/ceph-0
  11. sudo ceph-osd -i 0 --mkfs --osd-data /var/lib/ceph/osd/ceph-0
  12. sudo systemctl enable ceph-osd@0
  13. sudo systemctl start ceph-osd@0

3. 验证集群状态

执行以下命令检查集群健康状态:

  1. ceph -s
  2. # 正常输出应显示:
  3. # cluster:
  4. # id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  5. # health: HEALTH_OK
  6. # services:
  7. # mon: 1 daemons, quorum localhost
  8. # osd: 1 osds: 1 up, 1 in

四、配置优化与功能扩展

1. 启用RBD块存储

创建存储池并初始化RBD设备:

  1. ceph osd pool create rbd 128 128
  2. rbd pool init rbd
  3. # 创建并映射RBD设备
  4. rbd create test_image --size 10G --pool rbd
  5. sudo rbd map rbd/test_image --name client.admin
  6. # 查看映射的设备
  7. lsblk | grep rbd

2. 部署RGW对象存储(可选)

  1. # 创建RGW实例
  2. sudo ceph auth get client.rgw.localhost -o /etc/ceph/ceph.client.rgw.localhost.keyring
  3. sudo ceph-rgw -n client.rgw.localhost -k /etc/ceph/ceph.client.rgw.localhost.keyring --rgw-frontends="civetweb port=8080"
  4. # 测试对象存储
  5. curl -X PUT http://localhost:8080/testbucket -H "Content-Type: application/octet-stream" -d "test data"

五、故障排查与常见问题

  1. MON启动失败:检查/var/log/ceph/ceph-mon.localhost.log,确认密钥环与monmap路径正确。
  2. OSD无法加入集群:执行ceph osd tree查看OSD状态,若显示down,尝试重启服务:
    1. sudo systemctl restart ceph-osd@0
  3. 权限错误:确保所有Ceph服务以ceph用户运行,而非root
  4. 端口冲突:若RGW启动失败,检查8080端口是否被占用,修改--rgw-frontends参数中的端口。

六、总结与建议

单机部署Ceph为开发测试提供了高效路径,但需明确其局限性。建议:

  • 数据备份:定期备份/var/lib/ceph目录,防止单点故障导致数据丢失。
  • 性能调优:通过ceph tell osd.0 injectargs --osd_memory_target 2GB限制OSD内存使用。
  • 升级路径:若需扩展至集群,可保留单机数据,通过ceph-deploy添加新节点。

通过本文的步骤,读者可在30分钟内完成单机Ceph的部署与基础功能验证,为后续分布式集群实践奠定基础。