CephFS在CentOS的部署

1.引言

为了测试CephFS系统的数据读写性能,搭建相关集群环境进行测试。
Ceph版本:0.94.3
操做系统版本:CentOS 6.5 

2.集群角色设置


2.1 角色说明
IP地址
角色
58.220.31.60
DeployNode,Client
58.220.31.61
MdsNode, MonNode
58.220.31.63
osdNode2
58.220.31.64
osdNode3
有人会问,osdNode1哪里了,这台机器被我整坏了,暂且不提。

2.2 基本配置

a. 关闭每一个节点防火墙
service iptables stop
b. 保证每一个节点能够联网
c. 源信息设置
   我以前因为默认的源没设好,耽误了好多时间。后添加阿里云的源信息,才正常工做。

d. SSH设置,保证deployNode能够顺利访问其余各节点
    我这篇博客有对SSH 无密码访问的详细设置 html

3. 系统安装

3.1 yum安装ceph

在/etc/yum.repos.d/目录下,建立ceph.repo文件,输入以下内容 node

name=Ceph packages for $basearch
gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
enabled=1
baseurl=http://ceph.com/rpm-hammer/el6/$basearch
priority=1
gpgcheck=1
type=rpm-md

[ceph-source]
name=Ceph source packages
gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
enabled=1
baseurl=http://ceph.com/rpm-hammer/el6/SRPMS
priority=1
gpgcheck=1
type=rpm-md

[Ceph-noarch]
name=Ceph noarch packages
gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
enabled=1
baseurl=http://ceph.com/rpm-hammer/el6/noarch
priority=1
gpgcheck=1
type=rpm-md
设置好后在每一个节点上安装ceph、ceph-deploy   0.94.3版本(速度较慢,请耐心等待)

3.2 监控节点配置

1. 配置/etc/ceph/ceph.conf git

[global]
fsid = 8587ec10-fe1a-41f5-9795-9d38ef20b493
mon_initial_members = mdsnode
mon_host = 58.220.31.61
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
osd_pool_default_size = 2
osd_pool_default_min_size = 1
osd_journal_size = 10000
osd_pool_default_pg_num = 366
osd_pool_default_pgp_num = 366
public_network=58.220.31.0/24
2.  为此集群建立密钥环、并生成监视器密钥

sudo ceph-authtool --create-keyring  /etc/ceph/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'


3  生成管理员密钥环,生成  client.admin  用户并加入密钥环 shell

sudo 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'


4.  把  client.admin  密钥加入  ceph.mon.keyring  
sudo ceph-authtool /etc/ceph/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring


5. 用规划好的主机名、对应 IP 地址、和 FSID 生成一个监视器图,并保存为 /etc/ceph/monmap  bootstrap

monmaptool --create --generate -c /etc/ceph/ceph.conf /etc/ceph/monmap


6. 用监视器图和密钥环组装守护进程所需的初始数据 服务器

sudo ceph-mon --mkfs -i mdsnode --monmap /etc/ceph/monmap  --keyring /etc/ceph/ceph.mon.keyring


7. 配置相关/etc/ceph/目录下keyring文件的读写权限,不然在启动监视器时会报以下错误: 性能

[ceph@mdsnode ceph]$ sudo /etc/init.d/ceph start mon.mdsnode
=== mon.mdsnode ===
Starting Ceph mon.mdsnode on mdsnode...already running
[ceph@mdsnode ceph]$ ceph -s
2015-08-31 11:32:17.378858 7f543b014700 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
2015-08-31 11:32:17.378864 7f543b014700  0 librados: client.admin initialization error (2) No such file or directory
Error connecting to cluster: ObjectNotFound

执行命令sudo chmod 777 /etc/ceph/* 后就OK 了 测试


8. 启动监视器
sudo /etc/init.d/ceph start mon.mdsnode

执行ceph -s命令后能够看到就只有一个监控节点,尚未其余节点加入。

3.3 OSD节点控制

OSD我这边作的比较简单,直接用文件目录,而不是用分区或者硬盘。
1. 目录准备

在osdnode2 节点下 准备/var/local/osd2 目录    sudo mkdir /var/local/osd2
在osdnode3 节点下 准备/var/local/osd3 目录    sudo mkdir /var/local/osd3 ui

2. keyring文件准备
将监控节点下/etc/ceph 里面的配置文件,keyring文件拷贝至osd节点的对应目录中 阿里云

3. 激活osd进程

ceph-deploy osd prepare osdnode2:/var/local/osd2  osdnode3:/var/local/osd3
ceph-deploy osd activate osdnode2:/var/local/osd2 osdnode3:/var/local/osd3

此处并无使用硬盘进行分区后使用,而是直接使用了文件目录。


3.4 元数据服务器安装

采用手工命令进行部署, 在元数据服务器相关节点执行以下命令建立元数据服务器







3.5 终端链接集群进行访问

1. 预先准备
安装 ceph-fuse
检查mds服务器是否已经启动,不然会报connection time out错误。
[ceph@deploynode mnt]$ sudo ceph-fuse -m 58.220.31.61:6789 /mnt/mycephfs/ 
ceph-fuse[30250]: starting ceph client
2015-09-01 14:33:50.695812 7f59778ce760 -1 init, newargv = 0x37fe9e0 newargc=11
ceph-fuse[30250]: ceph mount failed with (110) Connection timed out
ceph-fuse[30248]: mount failed: (110) Connection timed out
链接成功后以下所示:
[ceph@deploynode mycluster]$ sudo ceph-fuse -m 58.220.31.61:6789 /mnt/mycephfs
ceph-fuse[30854]: starting ceph client
2015-09-01 15:29:03.046430 7fc53c465760 -1 init, newargv = 0x33ada00 newargc=11
ceph-fuse[30854]: starting fuse
[ceph@deploynode mycluster]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       250G   15G  223G   7% /
tmpfs            32G   12K   32G   1% /dev/shm
/dev/sda1       9.8G   62M  9.2G   1% /boot
ceph-fuse       499G   72G  427G  15% /mnt/mycephfs

后面咱们就能够像读写本地文件同样读写cephfs了。我在写测试的过程当中经过ceph -w命令,看到以下信息:
2015-09-01 17:19:02.268177 mon.0 [INF] pgmap v3744: 192 pgs: 192 active+clean; 34189 MB data, 113 GB used, 359 GB / 498 GB avail; 15046 kB/s wr, 117 op/s
2015-09-01 17:19:03.313847 mon.0 [INF] pgmap v3745: 192 pgs: 192 active+clean; 34213 MB data, 114 GB used, 359 GB / 498 GB avail; 12841 kB/s wr, 152 op/s
2015-09-01 17:19:07.269050 mon.0 [INF] pgmap v3746: 192 pgs: 192 active+clean; 34249 MB data, 114 GB used, 359 GB / 498 GB avail; 12375 kB/s wr, 91 op/s

我测试的504K小文件,速度不是很快,14MB/S左右。

4. 附注

1. ceph 中文文档路径    http://mirrors.myccdn.info/ceph/doc/docs_zh/output/html/architecture/

2. 一键删除ceph相关配置文件脚本

service ceph -a stop
dirs=(/var/lib/ceph/bootstrap-mds/*  /var/lib/ceph/bootstrap-osd/* /var/lib/ceph/mds/* \
 /var/lib/ceph/mon/* /var/lib/ceph/tmp/* /var/lib/ceph/osd/* /var/run/ceph/*   /var/log/ceph/*  /var/lib/ceph/*)
 
for d in ${dirs[@]};
do
    sudo rm -rf $d
    echo $d  done    
done


3. 测试时有时候小文件过多时,直接用rm -rf *没法删除,可采用以下命令:

    其中/tmp/empty/ 为实现建立好的空文件夹

sudo rsync --delete-before -d /tmp/empty/ /mnt/mycephfs/
相关文章
相关标签/搜索