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
相关推荐
一名路过的小码农1 天前
ceph 18.2.4二次开发,docker镜像制作
ceph·docker·容器
墨水\\4 天前
分布式----Ceph应用(下)
分布式·ceph
大G哥5 天前
基于K8S1.28.2实验rook部署ceph
java·ceph·云原生·容器·kubernetes
石兴稳6 天前
Ceph PG(归置组)的状态说明
ceph
石兴稳6 天前
Ceph层次架构分析
ceph
活老鬼6 天前
Ceph分布式存储
linux·运维·服务器·分布式·ceph
石兴稳8 天前
Ceph client 写入osd 数据的两种方式librbd 和kernel rbd
linux·ceph
石兴稳8 天前
Ceph的pool有两种类型
ceph
运维小文8 天前
ceph的集群管理
ceph·对象存储·存储·ceph集群管理·ceph节点管理
石兴稳9 天前
iSCSI 和SCSI的概述
ceph