Ceph是加州大学Santa Cruz分校的Sage Weil专为博士论文设计的分布式文件系统,支持对象存储、块存储和文件存储。从2004年新建第一个文件夹至今,经历了多次迭代,目前已是分布式存储的首选。
1.1 Ceph的功能组件
图1.1 Ceph功能组件的整体架构(1)Ceph核心组件
在Ceph存储中,包含了几个重要的核心组件,分别是Ceph OSD、Ceph Monitor和Ceph MDS。一个Ceph的存储集群至少需要一个Ceph Monitor和至少两个Ceph的OSD。运行Ceph文件系统的客户端时,Ceph的元数据服务器(MDS)是必不可少的。下面来详细介绍一下各个核心组件。
- Ceph OSD:全称是Object Storage Device,主要功能包括存储数据,处理数据的复制、恢 复、回补、平衡数据分布,并将一些相关数据提供给Ceph Monitor,例如Ceph OSD心跳等。一
个Ceph的存储集群,至少需要两个Ceph OSD来实现active+clean健康状态和有效的保存数据的双副本(默认情况下是双副本,可以调整)。注意:每一个Disk、分区都可以成为一个OSD。 - Ceph Monitor:Ceph的监控器,主要功能是维护整个集群健康状态,提供一致性的决策,包含了Monitor map、OSD map、PG(Placement Group)map和CRUSH map。
- Ceph MDS:全称是Ceph Metadata Server,主要保存的是Ceph文件系统(File System)的元数据(metadata)。温馨提示:Ceph的块存储和Ceph的对象存储都不需要Ceph MDS。Ceph MDS为基于POSIX文件系统的用户提供了一些基础命令,例如ls、find等命令。
(2)Ceph功能特性
Ceph可以同时提供对象存储RADOSGW(Reliable、Autonomic、Distributed、Object Storage Gateway)、块存储RBD(Rados Block Device)、文件系统存储Ceph FS(Ceph File System)3种功能,由此产生了对应的实际场景,本节简单介绍如下。
RADOSGW功能特性基于LIBRADOS之上,提供当前流行的RESTful协议的网关,并且兼容 S3和Swift接口,作为对象存储,可以对接网盘类应用以及HLS流媒体应用等。
RBD(Rados Block Device)功能特性也是基于LIBRADOS之上,通过LIBRBD创建一个块 设备,通过QEMU/KVM附加到VM上,作为传统的块设备来用。目前OpenStack、CloudStack等 都是采用这种方式来为VM提供块设备,同时也支持快照、COW(Copy On Write)等功能。
Ceph FS(Ceph File System)功能特性是基于RADOS来实现分布式的文件系统,引入了 MDS(Metadata Server),主要为兼容POSIX文件系统提供元数据。一般都是当做文件系统来
挂载。
1.2 CentOS7下的安装
1)配置yum源,安装ceph-deploy
本文档采用阿里源,也可用网易源。
在yum仓库新建ceph.repo。
vi /etc/yum.repos.d/ceph.repo
向ceph.repo中写入以下配置。
[norch]
name=norch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
enabled=1
gpgcheck=0
[x86_64]
name=x86 64
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
enabled=1
gpgcheck=0
更新源并安装ceph-deploy
sudo yum update && sudo yum install ceph-deploy
2)Ceph节点安装
在所有节点上安装NTP服务,以免因时钟漂移导致故障,可以把从机NTP配置文件中的服务器指向主机。
yum install ntp ntpdate ntp-doc
安装SSH服务,使得各个节点能够通过ssh访问
yum install openssh-server
配置host文件,在host文件中添加所有节点的ip地址
{ip_address} node-name
例如:192.168.0.1 node1
配置各个节点SSH免密登录
ssh-keygen
Generating public/private key pair.
Enter file in which to save the key (/ceph-admin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /ceph-admin/.ssh/id_rsa.
Your public key has been saved in /ceph-admin/.ssh/id_rsa.pub.
把公钥拷贝到各 Ceph 节点
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
开放所需端口,或者关闭防火墙
sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent
关闭SELINUX
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
创建ceph-deploy目录,今后所有的ceph-deploy操作都在该文件夹内执行
mkdir ceph-deploy
cd ceph-deploy
创建第一个节点,也是创建集群,同时部署monitor节点
ceph-deploy new {monitor-node}
安装Ceph到各个节点
ceph-deploy install {node-name}
3)安装OSD
获取密钥key
ceph-deploy mon create-initial
初始化磁盘,OSD需要安装在空白盘中
ceph-deploy disk zap {node-name:disk-name}
创建OSD
ceph-deploy osd create {node-name}:{disk-name}
分发key
ceph-deploy admin {admin-node} {node-name}
查看集群状态
ceph -s
网友评论