背景:
ceph是一个分布式存储系统,基于rados存储集群,可以对外提供块存储,对象存储以及文件系统。并且ceph的客户端也已经继承在linux
2.6.34及以后的版本中。ceph已经越来越多的使用在各种项目中,在openstack中,已经支持使用ceph作为存储后端。
ceph架构:
ceph的介绍非常多了,这里仅仅简单介绍下ceph的架构。搭建一个系统时,如果对其架构本身有一个大致的了解,会带来很大的好处。ceph中的节点分3中,mon(监控节点),osd(存储节点),mds(元数据节点)。其中mon,osd节点在ceph组建时是必须的,mds节点则是在使用文件系统服务时才需要的。
mon:负责监控集群的信息,维护整个集群的视图,以及协调osd节点pg的生成。
osd:管理存储业务,以及osd之间维护的心跳,给mon节点上报集群的状态变化。
mds:元数据管理,保存了全部集群中各个文件的信息,供给linux上cephfs使用。
搭建的准备:
首先需要准备centos6.4系统,然后需要配置ceph的yum源。将下面的地址写入/etc/yum.repo.d/ceph.repo中
[ceph-extras] name=Ceph Extras Packages baseurl=http://ceph.com/packages/ceph-extras/rpm/{distro}/$basearch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc [ceph-extras-noarch] name=Ceph Extras noarch baseurl=http://ceph.com/packages/ceph-extras/rpm/{distro}/noarch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc [ceph-extras-source] name=Ceph Extras Sources baseurl=http://ceph.com/packages/ceph-extras/rpm/{distro}/SRPMS enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
yum install ceph -y 就可以了 。
安装mon:
ceph的服务需要经过mon节点来提供,所以优先安装mon节点。在/etc/ceph/ceph.conf中写入下面的配置信息
[global] fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993 mon initial members = {node1} auth cluster required = cephx auth service required = cephx auth client required = cephx osd journal size = 1024 filestore xattr use omap = true osd pool default size = 2 osd pool default min size = 1 osd pool default pg num = 333 osd pool default pgp num = 333 osd crush chooseleaf type = 1 [mon.{node1}] host = {node1} mon addr = {192.168.0.1}:6789
简单介绍下内容
集群的信息
fsid :集群uuid
mon initial members:初始化的节点主机名
osd pool default size:存储节点复制的副本数量
auth cluster required:集群需要的验证,这里使用cephx来验证。
现在开始执行命令:
生成mon的秘钥
ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'给admin用户生成秘钥
ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'将用户秘钥放入mon秘钥文件中
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring生成mon的map文件
monmaptool --create --add node1 192.168.0.1 --fsid a7f64266-0894-4f1e-a635-d0aeaca0e993 /tmp/monmap给mon建立一个文件夹
mkdir /var/lib/ceph/mon/ceph-{node1}初始化mon的信息
ceph-mon --mkfs -i node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring现在已经安装完成了执行命令启动mon
/etc/init.d/ceph start mon.node1
输入 ceph -s 查看集群状态。可以看见集群在ERR状态,原因是只有mon没有osd节点集群并不能提供服务。
cluster a7f64266-0894-4f1e-a635-d0aeaca0e993 health HEALTH_ERR 192 pgs stuck inactive; 192 pgs stuck unclean; no osds monmap e1: 1 mons at {node1=192.168.0.1:6789/0}, election epoch 1, quorum 0 node1 osdmap e1: 0 osds: 0 up, 0 in pgmap v2: 192 pgs, 3 pools, 0 bytes data, 0 objects 0 kB used, 0 kB / 0 kB avail 192 creating
安装osd:
在osd节点上,需要先把mon节点上/etc/ceph/ceph.conf, 以及/etc/ceph/ceph.client.admin.keyring 复制到相应的目录。
这样在osd节点上 ,也可以使用ceph -s 来查看系统情况。
创建一个osd节点,会有返回值,从0开始依次增加,需要记住这个值,这是osd-number。这里就以osd-number的名字0为例
ceph osd create创建osd的数据目录
mkdir /var/lib/ceph/osd/ceph-{0}如果想使用单独的磁盘来做osd的存储,就需要将磁盘先格式化文件系统,目前ceph只支持ext4,xfs,brtfs这3个系统。然后将磁盘mount到ceph的数据目录下。
sudo mkfs -t {ext4} /dev/{hdd} sudo mount -o user_xattr /dev/{hdd} /var/lib/ceph/osd/ceph-{0}ceph的日志可以使用文件,也可以使用一个块设备,如ssd。
现在需要在/etc/ceph/ceph.conf文件中增加下面的配置
[osd.0] osd journal = /dev/sde 或者 文件的地址 /var/lib/ceph/osd/ceph-{0}/journal然后开始初始化ceph的信息
ceph-osd -i {0} --mkfs --mkkey --mkjournal现在osd已经安装完成,然后需要对osd进行配置,使其加入到mon的集群中。
往mon注册osd.{0}用户
ceph auth add osd.{0} osd 'allow *' mon 'allow rwx' -i /var/lib/ceph/osd/ceph-{0}/keyring好了 可以启动ceph了
/etc/init.d/ceph start osd.{0}
现在可以看见ceph集群搭建完成了。
ceph的简单使用:
来简单的使用ceph创建个卷验证下集群。
ceph的客户端命令 rbd
创建一个100k的卷
rbd create --size 100 test
查看该卷
rbd list