如何在Linux中利用Ceph进行分布式存储管理

来源:Android社区作者:狼行天下头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何在Linux中利用Ceph进行分布式存储管理》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux中利用Ceph进行分布式存储管理》有用,将其分享出去将是对创作者最好的鼓励。

Ceph是一款开源的分布式存储系统,支持对象存储、块存储和文件存储三种接口,能够在普通x86服务器上构建高可用、可扩展的存储集群,在Linux环境中应用十分广泛。其核心技术是CRUSH算法,能够自动计算数据存储位置,无需中心元数据服务器,大幅提升了集群的可靠性和扩展性。

如何在Linux中利用Ceph进行分布式存储管理

Ceph核心组件介绍

在Linux中管理Ceph分布式存储,首先需要了解其核心组件的作用:

  • OSD(Object Storage Daemon):负责存储实际数据,处理数据复制、恢复、回填等操作,每个磁盘通常对应一个OSD进程。
  • MON(Monitor):维护集群的状态映射,包括OSD映射、MON映射、PG映射等,保证集群状态的一致性,通常需要部署奇数个MON节点实现高可用。
  • MDS(Metadata Server):仅为CephFS文件存储提供元数据服务,如果使用对象存储或块存储可以不部署该组件。
  • RADOS Gateway(RGW):提供对象存储接口,兼容S3和Swift协议,用于对外提供对象存储服务。

Linux环境准备

在部署Ceph集群前,需要完成以下Linux环境配置:

节点规划

建议至少准备3个Linux节点(CentOS 7及以上或Ubuntu 18.04及以上版本),分别作为MON节点和OSD节点,节点之间网络互通,并且配置静态IP。以下是示例节点规划:

节点名称IP地址部署组件
ceph-node1192.168.0.10MON, OSD
ceph-node2192.168.0.11MON, OSD
ceph-node3192.168.0.12MON, OSD

基础配置

所有节点执行以下操作:

  • 关闭防火墙和SELinux:
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  • 配置主机名解析,在所有节点的/etc/hosts文件中添加节点信息:
192.168.0.10 ceph-node1
192.168.0.11 ceph-node2
192.168.0.12 ceph-node3
  • 配置节点间SSH免密登录,方便后续集群管理操作。

Ceph集群部署流程

这里使用Ceph官方推荐的ceph-deploy工具进行集群部署,操作在管理节点(可以是任意一个集群节点)执行。

安装ceph-deploy工具

首先配置Ceph的yum源,然后安装ceph-deploy

# 添加Ceph源,以CentOS 7为例,nautilus版本
cat > /etc/yum.repos.d/ceph.repo << EOF
[ceph]
name=Ceph packages for x86_64
baseurl=https://download.ceph.com/rpm-nautilus/el7/x86_64
enabled=1
gpgcheck=0
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=0
EOF
# 安装ceph-deploy
yum install -y ceph-deploy

初始化集群

创建集群配置目录,初始化MON节点:

# 创建目录
mkdir ceph-cluster
cd ceph-cluster
# 初始化MON节点,指定MON节点主机名
ceph-deploy new ceph-node1 ceph-node2 ceph-node3

初始化完成后会生成ceph.conf配置文件和ceph.mon.keyring密钥环文件,可根据需要修改ceph.conf中的配置,比如设置公共网络和集群网络。

安装Ceph软件包

在所有节点上安装Ceph软件包:

ceph-deploy install ceph-node1 ceph-node2 ceph-node3

部署MON节点

初始化并启动MON服务:

ceph-deploy mon create-initial

执行完成后,当前目录会生成多个密钥文件,包括client.admin.keyring等,将这些密钥同步到所有节点的/etc/ceph/目录下:

ceph-deploy admin ceph-node1 ceph-node2 ceph-node3

部署OSD节点

为每个节点上的磁盘创建OSD,假设每个节点有一个空闲磁盘/dev/sdb

# 擦除磁盘
ceph-deploy disk zap ceph-node1 /dev/sdb
ceph-deploy disk zap ceph-node2 /dev/sdb
ceph-deploy disk zap ceph-node3 /dev/sdb
# 创建OSD
ceph-deploy osd create ceph-node1 --data /dev/sdb
ceph-deploy osd create ceph-node2 --data /dev/sdb
ceph-deploy osd create ceph-node3 --data /dev/sdb

验证集群状态

执行以下命令查看集群状态:

ceph -s

如果输出中health字段为HEALTH_OK,说明集群部署成功。

Ceph存储管理常用操作

存储池管理

存储池是Ceph存储的逻辑划分,创建存储池的命令如下:

# 创建名为test_pool的存储池,pg_num设置为128
ceph osd pool create test_pool 128
# 查看所有存储池
ceph osd pool ls
# 删除存储池,需要先开启允许删除配置
ceph osd pool set test_pool nodelete false
ceph osd pool delete test_pool test_pool --yes-i-really-really-mean-it

块存储管理

Ceph块存储可以映射为Linux系统的块设备使用,操作步骤如下:

# 创建块设备镜像,大小10G
rbd create test_image --size 10240 --pool test_pool
# 映射到本地块设备
rbd map test_image --pool test_pool
# 查看映射的块设备
rbd showmapped
# 格式化块设备并挂载
mkfs.ext4 /dev/rbd0
mkdir /mnt/rbd
mount /dev/rbd0 /mnt/rbd

文件存储管理

如果需要使用CephFS文件存储,需要先部署MDS组件:

# 部署MDS
ceph-deploy mds create ceph-node1 ceph-node2 ceph-node3
# 创建CephFS,需要两个存储池,一个存数据一个存元数据
ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 64
ceph fs new cephfs cephfs_metadata cephfs_data
# 客户端挂载CephFS
mkdir /mnt/cephfs
mount -t ceph 192.168.0.10:6789,192.168.0.11:6789,192.168.0.12:6789:/ /mnt/cephfs -o name=admin,secret=AQXXXXXXXXX==(替换为client.admin的密钥)

日常运维注意事项

  • 定期执行ceph -s查看集群健康状态,出现HEALTH_WARNHEALTH_ERR时及时处理。
  • OSD节点磁盘使用率建议不超过85%,避免数据写入失败。
  • MON节点需要保持奇数个,新增或移除MON节点时需要同步更新集群配置。
  • 数据迁移或恢复期间避免进行大规模配置变更,防止集群状态异常。
Ceph的CRUSH算法会根据集群拓扑自动分配数据,因此新增OSD节点后,集群会自动进行数据均衡,无需手动干预。

CephLinux分布式存储存储管理修改时间:2026-07-05 22:30:36

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。