Ceph 分布式文件系统 搭建及使用

一、Ceph 介绍

在当今数据爆炸式增长的时代,企业对于可靠、可扩展的存储解决方案的需求日益迫切。Ceph 作为一种开源的、可伸缩的分布式存储解决方案,正逐渐成为企业级存储领域的热门选择。Ceph是一种由Radicalbit公司开发的开源分布式存储系统,它通过将数据分布在一个或多个存储节点上,实现了高可靠性、高性能和高扩展性。

Ceph环境的核心组件包括:Ceph OSDCeph MonitorCeph MDSCEPH MGR

  • Ceph OSDs (Object Storage Daemons):OSDCeph集群中负责存储实际数据的守护进程。每个OSD守护进程负责管理一个存储设备(如硬盘或分区)。OSD负责处理数据复制、恢复、再平衡和数据的分发。在Ceph集群中,通常会有大量的OSD,它们分布在不同的服务器上,以确保高可用性和数据冗余。

  • Ceph Monitors (MONs):Monitor维护集群的状态信息,包括映射信息(如数据在哪些OSD上)、OSD状态、归置组(Placement Group, PG)状态等。Monitor负责在发生故障时,确保集群能够自动恢复。为了高可用性,通常会有多个Monitor实例,它们之间通过Paxos算法保持状态一致。

  • Ceph Metadata Server (MDS):MDS仅用于Ceph文件系统(CephFS)。它负责存储文件系统的元数据,如目录树、文件权限等信息。MDS能够提高文件系统的性能和可扩展性。在CephFS集群中,可以有一个或多个MDS实例,以支持大规模的并行文件系统访问。

  • Ceph Manager (MGR):Manager是一个相对较新的组件,它在Ceph Luminous版本(即12.0版本)中首次被引入。Manager提供了一个集中的服务,用于管理和监控Ceph集群的各个方面。它收集和存储集群的监控数据,提供报警和通知,管理服务,执行集群管理任务,生成集群报告,并提供一个REST API

Ceph支持多种存储类型,以满足不同应用场景的需求。主要包括:对象存储、块存储、文件系统存储

  • 对象存储Ceph提供了一个名为RADOSGWRADOS Gateway)的组件,它实现了符合Amazon S3Swift API的接口,允许用户通过HTTP/HTTPS协议存储和检索对象数据。对象存储适合于需要高可用性和可扩展性的应用,如备份、归档和多媒体内容分发。
  • 块存储Ceph的块存储服务称为RBDRADOS Block Device),它提供了一个高性能、可扩展的块存储解决方案。RBD可以在物理服务器或虚拟机中作为磁盘使用,支持快照、克隆和 thin-provisioning 等功能。块存储适用于需要持久化存储的应用,如虚拟机镜像和数据库。
  • 文件系统存储Ceph提供了一个名为CephFSPOSIX-compliant文件系统。CephFS允许用户将Ceph集群作为传统的网络文件系统挂载到服务器上,支持文件层次结构和权限管理。文件系统存储适用于需要共享文件存储的应用,如企业文件共享和协同工作环境。

下面开始在 3 台机器上,实验搭建 ceph 环境。

二、Ceph 集群环境搭建

部署规划:

ip 别名 角色
11.0.1.133 node1 osd、mds、mon、mgr、ceph-deploy
11.0.1.134 node2 osd、mds
11.0.1.135 node3 osd、mds

1. 修改 /etc/hosts 增加映射(3台机器)

shell 复制代码
vi /etc/hosts
shell 复制代码
11.0.1.133   node1
11.0.1.134   node2
11.0.1.135   node3

2. 关闭防火墙(3台机器)

shell 复制代码
 #关闭防火墙
systemctl stop firewalld.service  
#禁止防火墙开启自启
systemctl disable firewalld.service 

3. 配置ssh免密登录(node1)

shell 复制代码
#4个回车 生成公钥、私钥
ssh-keygen 
# 将公钥给三台主机
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3

4. 集群时间同步(3台机器)

shell 复制代码
yum -y install ntpdate
ntpdate ntp4.aliyun.com

5. 添加 Ceph 阿里源(3台机器)

shell 复制代码
vi /etc/yum.repos.d/ceph.repo
shell 复制代码
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/
enabled=1
gpgcheck=0
priority=1

[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=0
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=0
priority=1

清除 yum 缓存

shell 复制代码
yum clean all

6. 安装 ceph-deploy 组件(node1)

shell 复制代码
yum -y install ceph-deploy

7. 初始化 ceph 集群信息(node1)

安装所需依赖:

shell 复制代码
yum install -y python-setuptools

创建配置目录

shell 复制代码
mkdir /etc/ceph	&& cd /etc/ceph

初始化

shell 复制代码
ceph-deploy new node1

修改 ceph.conf ,默认 osd 最少3个节点,这里可以改成2个,在 [global] 下新增如下配置:

shell 复制代码
osd_pool_default_size = 2

8. 在所有节点安装 ceph(node1)

该操作会自动使用 ssh 连接,需要确保配置好了免密登录。

shell 复制代码
ceph-deploy install node1 node2 node3

验证安装,查看 ceph 版本

shell 复制代码
ceph -v

9. 创建 mon 监控节点(node1)

shell 复制代码
ceph-deploy mon create-initial

将配置文件信息同步到所有节点

shell 复制代码
ceph-deploy admin node1 node2 node3

查看集群状态:

shell 复制代码
ceph -s

已经有一个 mon 了。

11. 部署 mgr(node1)

shell 复制代码
ceph-deploy mgr create node1

查看集群状态:

shell 复制代码
ceph -s

10. 部署osd服务(node1)

查看磁盘:

shell 复制代码
lsblk  

我这里使用未挂载的 /dev/sdb 磁盘

创建 osd

shell 复制代码
ceph-deploy osd create node1 --data /dev/sdb

再次查看磁盘:

已经被 ceph 使用。

同样,将 node2、node3 的磁盘创建 osd :

shell 复制代码
ceph-deploy osd create node2 --data /dev/sdb
shell 复制代码
ceph-deploy osd create node3 --data /dev/sdb

查看集群状态:

shell 复制代码
ceph -s

11. 部署 mds (node1)

shell 复制代码
ceph-deploy mds create node1 node2 node3

到此 Ceph 的集群就基本搭建完毕。

三、CephFS 创建 及 客户端挂载

1. 创建存储池

创建数据池 cephfs_data ,用户存储数据

shell 复制代码
ceph osd pool create cephfs_data 128

创建 cephfs_metadata ,用于存储元数据:

shell 复制代码
ceph osd pool create ceph_metadata 60

2. 创建 FS

shell 复制代码
ceph fs new cephfs cephfs_data ceph_metadata 

查看集群状态:

shell 复制代码
ceph -s

3 客户端挂载

首先在 node1 查看客户端的秘钥:

shell 复制代码
cat ceph.client.admin.keyring

下面在客户端安装依赖

shell 复制代码
yum -y install epel-release
yum -y install ceph-fuse
yum -y  install ceph-common

创建配置目录:

shell 复制代码
mkdir /etc/ceph && cd /etc/ceph

将上面查出来的 key 写入 admin.key 文件中:

shell 复制代码
echo 'AQDRNR5mkX0LCBAArZ4TgYuB19g1EfXK+aiktg==' >>admin.key

创建挂载目录:

shell 复制代码
mkdir /cephfs_data

挂载:

shell 复制代码
mount -t ceph node1:6789:/ /cephfs_data -o name=admin,secretfile=/etc/ceph/admin.key

查看挂载:

shell 复制代码
df -hT
相关推荐
斯普信专业组2 天前
CephFS管理秘籍:全面掌握文件系统与MDS守护程序命令
ceph·cephfs
45° 微笑5 天前
k8s集群 ceph rbd 存储动态扩容
ceph·容器·kubernetes·rbd
查士丁尼·绵5 天前
ceph补充介绍
ceph
Hello.Reader7 天前
Ceph 存储系统全解
分布式·ceph
Clarence_Ls10 天前
<十六>Ceph mon 运维
运维·ceph
手持钩笼引天下10 天前
踩坑:关于使用ceph pg repair引发的业务阻塞
运维·ceph
Clarence_Ls10 天前
<十七>Ceph 块存储理论与实践
ceph
知本知至13 天前
ceph rgw使用sts Security Token Service
linux·网络·ceph
一名路过的小码农13 天前
ubantu 编译安装ceph 18.2.4
linux·c++·ceph
大新新大浩浩14 天前
ceph 删除rbd 锁的命令
ceph·1024程序员节