一、Ceph 介绍
在当今数据爆炸式增长的时代,企业对于可靠、可扩展的存储解决方案的需求日益迫切。Ceph
作为一种开源的、可伸缩的分布式存储解决方案,正逐渐成为企业级存储领域的热门选择。Ceph
是一种由Radicalbit
公司开发的开源分布式存储系统,它通过将数据分布在一个或多个存储节点上,实现了高可靠性、高性能和高扩展性。
Ceph
环境的核心组件包括:Ceph OSD
、Ceph Monitor
、Ceph MDS
、CEPH MGR
。
-
Ceph OSDs (
Object Storage Daemons
):OSD
是Ceph
集群中负责存储实际数据的守护进程。每个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
提供了一个名为RADOSGW
(RADOS Gateway
)的组件,它实现了符合Amazon S3
和Swift API
的接口,允许用户通过HTTP/HTTPS
协议存储和检索对象数据。对象存储适合于需要高可用性和可扩展性的应用,如备份、归档和多媒体内容分发。 - 块存储:
Ceph
的块存储服务称为RBD
(RADOS Block Device
),它提供了一个高性能、可扩展的块存储解决方案。RBD
可以在物理服务器或虚拟机中作为磁盘使用,支持快照、克隆和thin-provisioning
等功能。块存储适用于需要持久化存储的应用,如虚拟机镜像和数据库。 - 文件系统存储:
Ceph
提供了一个名为CephFS
的POSIX-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台机器)
vi /etc/hosts
11.0.1.133 node1
11.0.1.134 node2
11.0.1.135 node3
2. 关闭防火墙(3台机器)
#关闭防火墙
systemctl stop firewalld.service
#禁止防火墙开启自启
systemctl disable firewalld.service
3. 配置ssh免密登录(node1)
#4个回车 生成公钥、私钥
ssh-keygen
# 将公钥给三台主机
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
4. 集群时间同步(3台机器)
yum -y install ntpdate
ntpdate ntp4.aliyun.com
5. 添加 Ceph
阿里源(3台机器)
vi /etc/yum.repos.d/ceph.repo
[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
缓存
yum clean all
6. 安装 ceph-deploy
组件(node1)
yum -y install ceph-deploy
7. 初始化 ceph
集群信息(node1)
安装所需依赖:
yum install -y python-setuptools
创建配置目录
mkdir /etc/ceph && cd /etc/ceph
初始化
ceph-deploy new node1
修改 ceph.conf ,默认 osd 最少3个节点,这里可以改成2个,在 [global] 下新增如下配置:
osd_pool_default_size = 2
8. 在所有节点安装 ceph(node1)
该操作会自动使用 ssh
连接,需要确保配置好了免密登录。
ceph-deploy install node1 node2 node3
验证安装,查看 ceph
版本
ceph -v
9. 创建 mon
监控节点(node1)
ceph-deploy mon create-initial
将配置文件信息同步到所有节点
ceph-deploy admin node1 node2 node3
查看集群状态:
ceph -s
已经有一个 mon
了。
11. 部署 mgr(node1)
ceph-deploy mgr create node1
查看集群状态:
ceph -s
10. 部署osd服务(node1)
查看磁盘:
lsblk
我这里使用未挂载的 /dev/sdb
磁盘
创建 osd
ceph-deploy osd create node1 --data /dev/sdb
再次查看磁盘:
已经被 ceph 使用。
同样,将 node2、node3 的磁盘创建 osd :
ceph-deploy osd create node2 --data /dev/sdb
ceph-deploy osd create node3 --data /dev/sdb
查看集群状态:
ceph -s
11. 部署 mds (node1)
ceph-deploy mds create node1 node2 node3
到此 Ceph
的集群就基本搭建完毕。
三、CephFS 创建 及 客户端挂载
1. 创建存储池
创建数据池 cephfs_data
,用户存储数据
ceph osd pool create cephfs_data 128
创建 cephfs_metadata
,用于存储元数据:
ceph osd pool create ceph_metadata 60
2. 创建 FS
ceph fs new cephfs cephfs_data ceph_metadata
查看集群状态:
ceph -s
3 客户端挂载
首先在 node1
查看客户端的秘钥:
cat ceph.client.admin.keyring
下面在客户端安装依赖
yum -y install epel-release
yum -y install ceph-fuse
yum -y install ceph-common
创建配置目录:
mkdir /etc/ceph && cd /etc/ceph
将上面查出来的 key 写入 admin.key 文件中:
echo 'AQDRNR5mkX0LCBAArZ4TgYuB19g1EfXK+aiktg==' >>admin.key
创建挂载目录:
mkdir /cephfs_data
挂载:
mount -t ceph node1:6789:/ /cephfs_data -o name=admin,secretfile=/etc/ceph/admin.key
查看挂载:
df -hT