原理:利用ceph-deploy工具,通过管理节点admin-node,利用ssh通道,以达到控制各分布式节点存储的共享功能。

 


前提:admin-node 需提前安装好ceph-deploy;各分布节点需与admin-node时间同步,配置ssh彼此互信并拥有sudo权限;防火墙什么的先关掉再说。

注:线上ssh端口一般都会改,而ceph-deploy工具默认是用22端口去连接的。于是,怎么更改ceph连接的ssh端口呢。找了篇文章:http://blog.fenghe.org/archives/1695 发现也不对,后来一想:ssh不就是通过本机(ceph-mds)来操作的吗!!于是直接更改/etc/ssh/ssh_config配置。已然生效。。

主要步骤:

需新建目录,mkdir myceph  && cd myceph,以下操作均在admin-node操作,我们命名为:ceph-mds,ceph-osd1,ceph-osd2,ceph-client;如在之前已有ceph环境下的目录操作,可能会影响ceph环境。

ceph目录下一般有这几个文件:

ceph.bootstrap-mds.keyring  ceph.bootstrap-osd.keyring  ceph.bootstrap-rgw.keyring  ceph.client.admin.keyring  ceph.conf  ceph.log  ceph.mon.keyring  release.asc

1、start over:ceph-deploy purgedata {ceph-node} [{ceph-node}]  ##清空数据

ceph-deploy forgetkeys                ##删除之前生成的密钥

ceph-deploy purge {ceph-node} [{ceph-node}]     ##卸载ceph软件

If you execute purge, you must re-install Ceph.

2、start up:1、Create the cluster.  ---->ceph-deploy new {initial-monitor-node(s)}

2、Change the default number of replicas in the Ceph configuration file from 3 to 2 so that Ceph can achieve an active + clean state with just two Ceph OSDs.Add the following line under the [global] section:---> osd pool default size = 2

3、If you have more than one network interface, add the public network setting under the [global] section of your Ceph configuration file. See the Network Configuration Reference for details. ----->public network = {ip-address}/{netmask}

4、Install Ceph. ----> ceph-deploy install {ceph-node}[{ceph-node} ...]

5、Add the initial monitor(s) and gather the keys: ----> ceph-deploy mon create-initial/stat/remove/Once you complete the process, your local directory should have the following keyrings:

{cluster-name}.client.admin.keyring

{cluster-name}.bootstrap-osd.keyring

{cluster-name}.bootstrap-mds.keyring

{cluster-name}.bootstrap-rgw.keyring

3、ADD/REMOVE OSDS:1、LIST DISKS :

To list the disks on a node,execute the following command: --->ceph-deploy disk list {node-name [node-name]...}

2、ZAP DISKS:

To zap a disk(delete its partition table)in preparation for use with Ceph,execute the following:

ceph-deploy disk zap {osd-server-name}:{disk-name}

ceph-deploy disk zap osdserver1:sda

3、PREPARE OSDS:

ceph-deploy osd prepare ceph-osd1:/dev/sda ceph-osd1:/dev/sdb

4、activate the OSDs:

ceph-deploy osd activate ceph-osd1:/dev/sda1 ceph-osd1:/dev/sdb1

5、Use ceph-deploy to copy the configuration file and admin key to your admin node and your Ceph Nodes

so that you can use the ceph CLI without having to specify the monitor address and ceph.client.admin.keyring

each time you execute a command.  ----->ceph-deploy admin {admin-node} {ceph-node}

6、Ensure that you have the correct permissions for the ceph.client.admin.keyring.   sudo chmod +r /etc/ceph/ceph.client.admin.keyring

7、Check your cluster’s health.

ceph health/status

应为能看到:

root@ceph-mds:/home/ceph/myceph# ceph status

cluster 3734cac3-4553-4c39-89ce-e64accd5a043

health HEALTH_WARN

clock skew detected on mon.ceph-osd28pgs degraded8pgs stuck degraded72pgs stuck unclean8pgs stuck undersized8pgs undersized

recovery1004/1506 objects degraded (66.667%)

recovery1/1506 objects misplaced (0.066%)

too few PGs per OSD (6 < min 30)

Monitor clock skew detected

monmap e1:2 mons at {ceph-osd1=192.168.2.242:6789/0,ceph-osd2=192.168.2.243:6789/0}

election epoch8, quorum 0,1 ceph-osd1,ceph-osd2

osdmap e135:24 osds: 24 up, 24 in; 64remapped pgs

flags sortbitwise

pgmap v771:72 pgs, 2 pools, 1742 MB data, 502objects4405 MB used, 89256 GB / 89260GB avail1004/1506 objects degraded (66.667%)1/1506 objects misplaced (0.066%)64 active+remapped8 active+undersized+degradedroot@ceph-mds:/home/ceph/myceph# ceph health

HEALTH_WARN clock skew detected on mon.ceph-osd2; 8 pgs degraded; 8 pgs stuck degraded; 72 pgs stuck unclean; 8 pgs stuck undersized; 8 pgs undersized; recovery 1004/1506 objects degraded (66.667%); recovery 1/1506 objects misplaced (0.066%); too few PGs per OSD (6 

4、验证命令:ceph osd tree   查看状态

ceph osd dump   查看osd配置信息

ceph osd rm     删除节点 remove osd(s)  [...]

ceph osd crush rm osd.0   在集群中删除一个osd 硬盘 crush map

ceph osd crush rm node1   在集群中删除一个osd的host节点

ceph -w / -s

ceph mds stat  查看状态

ceph mds dump  查看状态

5、client端挂载磁盘

ceph-deploy install ceph-client   ##安装ceph客户端

ceph-deploy admin ceph-client  ##把秘钥及配置文件拷贝到客户端

rbs方式:在客户端上应用ceph块存储

新建一个ceph pool

[root@ceph-client ceph]# rados mkpool test

在pool中新建一个镜像

[root@ceph-client ceph]# rbd create test-1 --size 4096 -p test -m 10.240.240.211 -k /etc/ceph/ceph.client.admin.keyring   (“-m 10.240.240.211 -k /etc/ceph/ceph.client.admin.keyring”可以不用加)

把镜像映射到pool块设备中

[root@ceph-client ceph]#  rbd map test-1 -p test --name client.admin  -m 10.240.240.211 -k /etc/ceph/ceph.client.admin.keyring  (“-m 10.240.240.211 -k /etc/ceph/ceph.client.admin.keyring”可以不用加)

查看rbd的映射关系

[root@ceph-client ~]# rbd showmapped

id pool    p_w_picpath       snap device

0  rbd     foo         -    /dev/rbd0

1  test    test-1      -    /dev/rbd1

2  jiayuan jiayuan-img -    /dev/rbd2

3  jiayuan zhanguo     -    /dev/rbd3

4  jiayuan zhanguo-5G  -    /dev/rbd4

把新建的镜像ceph块进行格式化

[root@ceph-client dev]# mkfs.ext4 -m0 /dev/rbd1

新建一个挂载目录

[root@ceph-client dev]# mkdir /mnt/ceph-rbd-test-1把新建的镜像ceph块挂载到挂载目录

[root@ceph-client dev]# mount /dev/rbd1 /mnt/ceph-rbd-test-1/查看挂载情况

[root@ceph-client dev]# df -h

Filesystem            Size  Used Avail Use% Mounted on/dev/sda2              19G  2.5G   15G  15% /tmpfs                 116M   72K  116M   1% /dev/shm/dev/sda1             283M   52M  213M  20% /boot/dev/rbd1             3.9G  8.0M  3.8G   1% /mnt/ceph-rbd-test-1完成上面的步骤就可以向新建的ceph文件系统中存数据了。

如果报错:root@ceph-client:/home/ceph# rbd create mypool/myp_w_picpath --size 1024002016-01-28 09:56:40.605656 7f56cb67f7c0  0 librados: client.admin authentication error (1) Operation not permitted

rbd: couldn't connect to the cluster!

查看日志:2016-01-27 22:44:17.755764 7ffb8a1fa8c0  0 mon.ceph-client does not exist in monmap, will attempt to join an existing cluster2016-01-27 22:44:17.756031 7ffb8a1fa8c0 -1 no public_addr or public_network specified, and mon.ceph-client not present in monmap or ceph.conf

需在mds端更改ceph.conf配置:

[global]

fsid = 3734cac3-4553-4c39-89ce-e64accd5a043

mon_initial_members = ceph-osd1, ceph-osd2

mon_host = 192.168.2.242,192.168.2.243

auth_cluster_required = cephx

auth_service_required = cephx

auth_client_required = cephx

filestore_xattr_use_omap = true

osd pool default size = 2

public network = 192.168.2.0/24

然后下发配置及密钥: ceph-deploy  --overwrite-conf  ceph-osd1 ceph-osd2 ceph-client。

删除rbd镜像:rbd unmap -p test test-1 ——> rbd -p test rm test-1

注:client端重启后如果不及时rbd unmap,关机的时候系统会hung在umount此rbd设备上。所以需要配置rbdmap:$ sudo wget https://raw.github.com/ceph/ceph/a4ddf704868832e119d7949e96fe35ab1920f06a/src/init-rbdmap -O /etc/init.d/rbdmap

$ sudo chmod +x /etc/init.d/rbdmap

$ sudo update-rc.d rbdmap defaults

修改/etc/init.d/rbdmap,将其中的/etc/rbdmap修改为你的rbdmap的实际路径;然后将挂载信息写入/etc/ceph/rbdmap(我的rbdmap路径):root@ceph-client:/home/client# cat /etc/ceph/rbdmap

# RbdDeviceParameters

#poolname/p_w_picpathnameid=client,keyring=/etc/ceph/ceph.client.keyring

test/test-1

test/test-2

因为我禁用了cephx,所以不必配置keyring了。

这样就可以手动控制、并且开关机可以自动卸载rbd块设备了。

如何自动挂载rbd块设备:写脚本,开机启动/etc/rc.local

cephFS文件系统方式:在客户端上建立cephFS文件系统

[root@ceph-client ~]# mkdir /mnt/mycephfs

[root@ceph-client ~]# mount  -t ceph 10.240.240.211:6789:/ /mnt/mycephfs -v -o name=admin,secret=AQDT9pNTSFD6NRAAoZkAgx21uGQ+DM/k0rzxow==

10.240.240.211:6789:/ on /mnt/mycephfs type ceph (rw,name=admin,secret=AQDT9pNTSFD6NRAAoZkAgx21uGQ+DM/k0rzxow==)

#上述命令中的name和secret参数值来自monitor的/etc/ceph/keyring文件:

[root@node1 ~]# cat /etc/ceph/ceph.client.admin.keyring

[client.admin]

key = AQDT9pNTSFD6NRAAoZkAgx21uGQ+DM/k0rzxow==