数据备份是数据库在硬件或软件损坏时保证数据不丢失的重要手段,CEPH作为一种分布式带冗余的存储系统,有着重要地位,以下是ceph的安装过程。

ceph有四大组件: Monitors: Ceph监视器(ceph-mon)负责维护集群状态的映射,包括监视器映射,管理器映射,OSD映射和CRUSH映射。这些映射是Ceph守护进程相互协调所需的关键集群状态。监视器还负责管理守护进程和客户端之间的身份验证。冗余和高可用性通常至少需要三个监视器。 Managers: Ceph Manager守护程序(ceph-mgr)负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率,当前性能指标和系统负载。 Ceph Manager守护进程还托管基于python的插件来管理和公开Ceph集群信息,包括基于Web的Ceph Manager Dashboard和REST API。高可用性通常至少需要两名经理。 Ceph OSDs: Ceph OSD(对象存储守护进程,ceph-osd)存储数据,负责处理数据复制,恢复,重新平衡,并通过检查其他Ceph OSD守护进程来获取心跳,为Ceph监视器和管理器提供一些监视信息。冗余和高可用性通常至少需要3个Ceph OSD。 MDSs: Ceph元数据服务器(MDS,ceph-mds)维护Ceph文件系统的存储元数据(Ceph块设备和Ceph对象存储不使用MDS)。 Ceph元数据服务器允许POSIX文件系统用户执行基本命令(如ls,find等),而不会给Ceph存储集群带来巨大负担。

IP配置列表:

IP 主机名 OSD MON MGR MDS
10.100.16.6 ceph01 X
10.100.16.15 ceph02
10.100.16.16 ceph03
10.100.16.17 ceph04
安装的ceph必须是ceph源里的安装包,保证和ceph-deploy版本匹配

1.
安装好epel源和ceph源
cat << EOM > /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
EOM
cat << EOM > /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-mimic/el7/x86_64/
enabled=1
gpgcheck=0
type=rpm-md
EOM
2.
安装时间服务器同步各节点时间
systemctl start chrony
systemctl enable chronyd
3.
建立安装ceph用普通用户
sudo useradd -d /home/lzceph -m lzceph
sudo passwd lzceph
echo "lzceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/lzceph
sudo chmod 0440 /etc/sudoers.d/lzceph
4.
建立lzceph用户的ssh key,免密登录个节点

以下操作都是在管理节点的lzceph用户下操作
在安装有误的情况下清空所有变更
清除所有ceph安装文件
ceph-deploy purgedata ceph01 ceph02 ceph03 ceph04
ceph-deploy purge ceph01 ceph02 ceph03 ceph04
ceph-deploy forgetkeys
rm ceph.*
6.
在安装节点上安装
yum -y install ceph-deploy
7.
建立cluster
mkdir my-cluster
cd my-cluster
ceph-deploy new ceph01 ceph02 ceph03 ceph04
echo "osd pool default size = 2" >>ceph.conf
8.
部署各节点软件
安装ceph软件,加上 --no-adjust-repos参数可以避免程序再安装ceph源
ceph-deploy install --repo-url http://download.ceph.com/rpm-mimic/el7/ ceph01 ceph02 ceph03 ceph04
9.
部署admin节点,方便在各节点都有执行ceph命令,这步实际上就是复制 ceph.conf ceph.client.admin.keyring到各节点,可以只部署一个。
ceph-deploy admin ceph01 ceph02 ceph03 ceph04
10.
在01上部署mgr
ceph-deploy mgr create ceph01
查看当前ceph节点信息
sudo ceph -s
11.
在02,03,04上部署OSD(会自动格式化磁盘并激活)
ceph-deploy osd create --data /dev/sdb ceph02
ceph-deploy osd create --data /dev/sdb ceph03
ceph-deploy osd create --data /dev/sdb ceph04
查看当前OSD信息
sudo ceph osd status
12.
在01上部署MDS
ceph-deploy mds create ceph01
查看当前mds信息
sudo ceph mgr metadata

13.
在01上创建pool,这里创建名称为rbd的pool,这样后面所有命令可以省略pool name.
sudo ceph osd pool create rbd 8
sudo ceph osd pool ls
在pool里创建image名称为foo
sudo rbd create --pool rbd foo --size 4096 --image-feature layering
sudo rbd ls --pool rbd
映射镜像到系统device /dev/rbd0
sudo rbd device map --pool rbd foo
# /dev/rbd0
rbd device ls
#id pool image snap device
#0 rbd foo - /dev/rbd0
格式化 device,,并使用(格式化为xfs格式的容易扩展)
mkfs.xfs /dev/rbd0
在01上挂载device
mount /dev/rbd0 /mnt
#删除pool里的image
sudo rbd rm --pool rbd foo2
#删除pool,连续两遍pool名字
sudo ceph osd pool rm rbd rbd --yes-i-really-really-mean-it
#查看当前状态
sudo ceph df
14.
安装结束

CEPH管理:
#镜像扩容
#Ceph:RBD在线扩容容量(针对xfs文件系统)
rbd ls
rbd info foo
rbd showmapped
rbd resize foo --size 40960
# df mnt
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/rbd0 5109760 1564416 3545344 31% /mnt
xfs_growfs -d /mnt/
ceph df

增加MDS: ADD A METADATA SERVER
ceph-deploy mds create ceph02 ceph03 ceph04

增加MON: ADDING MONITORS
ceph-deploy mon add ceph02 ceph03 ceph04

增加MGR: ADDING MANAGERS
ceph-deploy mgr create ceph02 ceph03 ceph04

常用命令:
# ceph status
cluster:
id: 4493dc07-6252-43f5-a179-e7b648ce0dd1
health: HEALTH_WARN
too few PGs per OSD (5 < min 30)
services:
mon: 4 daemons, quorum ceph01,ceph02,ceph03,ceph04
mgr: ceph01(active)
osd: 3 osds: 3 up, 3 in
data:
pools: 1 pools, 8 pgs
objects: 45.87 k objects, 147 GiB
usage: 297 GiB used, 8.7 TiB / 9.0 TiB avail
pgs: 8 active+clean
io:
client: 5.0 KiB/s rd, 110 MiB/s wr, 1 op/s rd, 110 op/s wr

#获取副本数量
ceph osd pool get rbd size

#获取pg_num
ceph osd pool get rbd pg_num
pg_num: 32

#pgs为32,因为是2副本的配置,所以当有3个osd的时候,每个osd上均分了32/3 *2=22个pgs,也就是出现了如上的错误 小于最小配置30个
设置pool参数
ceph osd pool set rbd pg_num 64
ceph osd pool set rbd pgp_num 64