转载自 http://blog.csdn.net/yhao2014/article/details/51394815?locationNum=4&fps=1 node
centos6.8成功部署,感谢原做者,文章简洁明了,很是适合新手学习部署。
本文修改了一些失效的下载连接以及一些友情提示!linux
Ceph是加州大学Santa Cruz分校的Sage Weil(DreamHost的联合创始人)专为博士论文设计的新一代自由软件分布式文件系统。自2007年毕业以后,Sage开始全职投入到Ceph开 发之中,使其能适用于生产环境。Ceph的主要目标是设计成基于POSIX的没有单点故障的分布式文件系统,使数据能容错和无缝的复制。2010年3 月,Linus Torvalds将Ceph client合并到内 核2.6.34中。ubuntu
关于Ceph的详细介绍见:Ceph:一个 Linux PB 级分布式文件系统vim
本文是在Centos6.7上对Ceph的部署的详细指南。centos
首先对部署环境进行说明:ssh
IP | Hostname | ceph磁盘 | 备注 |
10.201.26.121 | ceph01 | 20g | adm, mon, osd0 |
10.201.26.122 | ceph02 | 20g | osd1 |
10.201.26.123 | ceph03 | 20g | osd2 |
10.201.26.121 | cephclient | 挂载点:/cephfs | ceph客户端 |
Ceph的文件系统做为一个目录挂载到客户端cephclient的/cephfs目录下,能够像操做普通目录同样对此目录进行操做。
curl
1. 安装前准备(root用户)
参考文档:http://docs.openfans.org/ceph/ceph4e2d658765876863/ceph-1/installation30105feb901f5b8988c53011/preflight3010988468c03011
分布式
1.1 在每台机添加hosts
修改文件/etc/hosts(或者/etc/sysconfig/network),添加如下内容:
10.201.26.121 ceph01
10.201.26.122 ceph02
10.201.26.123 ceph03 ide
1.2 每一个Ceph节点上建立一个用户
# adduser ceph
# passwd ceph
密码统一设为: ceph
1.3 在每一个Ceph节点中为用户增长 root 权限
# echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
# chmod 0440 /etc/sudoers.d/ceph
1.4 关闭防火墙等服务
# service iptables stop
# chkconfig iptables off //关闭开机启动防火墙
每台机器节点都须要修改/etc/selinux/config 文件
将SELINUX=enforcing改成SELINUX=disabled
2. CEPH部署设置(root用户操做)
增长Ceph资料库至 ceph-deploy 管理节点. 以后,安装 ceph-deploy
安装 EPEL 软件源(单台机操做便可):
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
学习
# yum update -y
安装ceph依赖
# rpm -Uvh http://download.ceph.com/rpm-hammer/el6/noarch/ceph-release-1-0.el6.noarch.rpm
# yum install ceph-deploy -y
不然会出现如下问题:
3. 数据节点磁盘挂载(root用户)
在ceph0一、ceph0二、ceph03上分别挂载了一块20g大小的磁盘做为ceph的数据存储测试使用。须要将它们分区,建立xfs文件系统。
3.1 分区(三台机),建立xfs文件系统
# parted /dev/sdb
(parted) mklabel gpt
(parted) mkpart primary xfs 0% 100%
(parted) quit
# mkfs.xfs /dev/sdb1
若是出现如下问题:
是由于xfs在默认的系统安装上是不被支持的,须要本身手动安装默认的包。
先修过yum的配置文件
# vim /etc/yum.repos.d/CentOS-Base.repo
[centosplus]
enabled=1 //把0改成1
# yum install -y xfsprogs kmod-xfs //安装软件包
而后再执行mkfs.xfs /dev/sdb1就能够了。
4. 存储集群搭建(ceph用户)
集群规模:1个管理节点,1个监控节点,3个数据节点。
4.0免密码登录(三台机)
在每台机上运行如下命令:
$ ssh-keygen -t rsa -P ''(回车)
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
下面从admin节点开始使用ceph-deploy
4.1 在admin上建立集群目录(ceph01)
$ mkdir ceph-cluster
$ cd ceph-cluster
友情提示:后面的步骤不要更改当前目录位置,在建立集群期间会在当前目录生成一系列配置文件相关,并不会立刻复制到/etc/ceph
负责会报找不到ceph.conf:
4.2 建立集群(ceph01)
$ ceph-deploy new ceph01
4.3 安装ceph(ceph01)
$ ceph-deploy install ceph01 ceph02 ceph03
此命令将会按顺序在3台机上安装ceph
若是报错:
RuntimeError: Failed to execute command: rpm -Uvh --replacepkgs http://download.ceph.com/rpm-hammer/el6/noarch/ceph-release-1-0.el6.noarch.rpm
执行如下命令再从新执行一遍:
$ rpm -e ceph-release
若是报错:
[INFO ] Running command: sudo rpm -Uvh --replacepkgs https://download.ceph.com/rpm-infernalis/el6/noarch/ceph-release-1-0.el6.noarch.rpm
[WARNIN] curl: (22) The requested URL returned error: 404 Not Found
[DEBUG ] Retrieving https://download.ceph.com/rpm-infernalis/el6/noarch/ceph-release-1-0.el6.noarch.rpm
[WARNIN] error: skipping https://download.ceph.com/rpm-infernalis/el6/noarch/ceph-release-1-0.el6.noarch.rpm - transfer failed
[ERROR ] RuntimeError: command returned non-zero exit status: 1
[ERROR ] RuntimeError: Failed to execute command: rpm -Uvh --replacepkgs https://download.ceph.com/rpm-infernalis/el6/noarch/ceph-release-1-0.el6.noarch.rpm
这是由于在centos6中,没有infernalis这个版本的rpm包
由于暂时没有找到在哪里修改这个版本信息,故采用手动安装(三台机都须要)
$ sudo yum install -y yum-plugin-priorities
$ sudo rpm -Uvh http://download.ceph.com/rpm-hammer/el6/noarch/ceph-release-1-0.el6.noarch.rpm
$ sudo yum -y install ceph
若是报错:
[DEBUG ] You could try running: rpm -Va --nofiles --nodigest
[ERROR ] RuntimeError: command returned non-zero exit status: 1
[ERROR ] RuntimeError: Failed to execute command: yum -y install ceph
执行一遍一下命令再从新执行一遍:
$ rpm -Va --nofiles –nodigest
4.4 建立并初始化监控节点(ceph01)
$ ceph-deploy mon create-initial
执行此命令后会初始化mon结点,而且在mon结点生成ceph.conf等文件,ceph.conf文件中声明了mon结点等信息
若是报错:
在mon节点(ceph01)上手动执行如下命令:
$ sudo yum install redhat-lsb
而后再执行ceph-deploy mon create-initial
查看一下 Ceph 存储节点的硬盘状况:
$ ceph-deploy disk list ceph01
$ ceph-deploy disk list ceph02
$ ceph-deploy disk list ceph03
若是报错:
[ERROR ] RuntimeError: remote connection got closed, ensure ``requiretty`` is disabled for ceph02
须要在mdsnode,osdnode1,osdnode2三个节点中使用leadorceph用户的身份执行sudo visudo命令,而后修改
Defaults requiretty 为Defaults:ceph !requiretty
4.5 添加数据节点(ceph01)
(为了快速安装,本例中为每一个Ceph OSD守护进程使用单个目录而非单个磁盘 。使用ceph-deply osd命令可查看在分离的磁盘/分区上建立OSD和日志的方法。登录Ceph节点, 并为每一个Ceph OSD守护进程建立单个目录。)
# ssh root@ceph01
# mkdir /data
# mkdir /data/osd0
# chmod -R 777 /data/
# exit
# ssh root@ceph02
# mkdir /data
# mkdir /data/osd1
# chmod -R 777 /data/
# exit
# ssh root@ceph03
# mkdir /data
# mkdir /data/osd2
# chmod -R 777 /data/
# exit
4.6 挂载磁盘(三台机)
将各个磁盘分别挂载到对应的目录(ceph0一、ceph0二、ceph03)
$ sudo mount /dev/sdb1 /data/osd0
(另外两个节点相似,不过是osd1,osd2)
4.7 在管理节点准备OSD(ceph01)
$ ceph-deploy osd prepare ceph01:/data/osd0 ceph02:/data/osd1 ceph03:/data/osd2
4.8 激活OSD(ceph01)
(注意若是osd的目录所在磁盘是ext4格式的文件系统会报错,须要进行额外的设置)
$ ceph-deploy osd activate ceph01:/data/osd0 ceph02:/data/osd1 ceph03:/data/osd2
若是报错:
是由于屡次卸载和安装ceph形成磁盘的id和cluster的uuid不一致,须要将 /data/osd0下的文件所有清空(3台机都要改)
4.9 开机挂载磁盘(三台机)
挂载好的新磁盘会在下一次重启或开机的时候失效,所以咱们须要在每台机上对新磁盘进行挂载,分别在每台机编辑/etc/fstab文件,在最后添加(以ceph01为例):
$ sudo vim /etc/fstab
/dev/sdb1 /osd0 xfs defaults 0 0
4.10 分发配置和密钥
使用ceph-deploy命令将配置文件和管理密钥复制到管理节点和你的Ceph节点。
# ceph-deploy admin ceph01 ceph02 ceph03
4.11 查看集群状态
# ceph health //当集群完成配对后,应返回active+clean状态
若是报错:
[ceph@ceph03 ceph-cluster]$ ceph health
2016-03-06 21:53:54.886552 7fdc5cf5a700 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
2016-03-06 21:53:54.886584 7fdc5cf5a700 0 librados: client.admin initialization error (2) No such file or directory
Error connecting to cluster: ObjectNotFound
是由于普通用户没法读取致使没法进行cephx认证,执行如下命令:
# sudo chmod +r /etc/ceph/ceph.client.admin.keyring
若是出现如下状况:
[ceph@ceph03 ceph-cluster]$ ceph health
HEALTH_WARN 64 pgs degraded; 64 pgs stuck degraded; 64 pgs stuck unclean; 64 pgs stuck undersized; 64 pgs undersized
是由于配置中默认osd=3,备份=2,与实际不符,更改配置文件ceph.conf,增长如下两行:
osd_pool_default_size = 2
osd_pool_default_min_size = 1
(不过没有生效,怀疑须要重启集群,待测试),或者添加一个osd节点(有些说法是要最少3个osd)
若是报错:
2016-04-21 15:21:05.597951 7fde9cb6b700 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
2016-04-21 15:21:05.597963 7fde9cb6b700 0 librados: client.admin initialization error (2) No such file or directory
是由于没有权限读取keyring
执行如下命令赋权限:
$ sudo chmod 777 /etc/ceph/*
已经成功!!(这里发现没有启动mds节点,须要手动启动,输入命令service ceph start mds.ceph01)
从新部署(注意!)
部署过程当中若是出现任何奇怪的问题没法解决,能够简单的删除一切从头再来:
# ceph-deploy purge ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd1 ceph-osd2
# ceph-deploy purgedata ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd1 ceph-osd2
# ceph-deploy forgetkeys
5. 建立文件系统
建立文件系统的步骤参考官网:http://docs.ceph.com/docs/master/cephfs/createfs/
对于一个刚建立的MDS服务,虽然服务是运行的,可是它的状态直到建立 pools 以及文件系统的时候才会变为Active.
尚未建立时候的状态
$ ceph mds stat
5.1 建立管理节点(ceph01)
$ ceph-deploy mds create ceph01
注意:若是不建立mds管理节点,client客户端将不能正常挂载到ceph集群!
5.2 查看pool
$ ceph osd lspools
新建立的ceph集群只有rdb一个pool。这时咱们须要建立一个新的pool
5.3 新建pool
参考官网:http://docs.ceph.com/docs/master/rados/operations/pools/
$ ceph osd pool create cephfs_data 10#用于数据的pool
$ ceph osd pool create cephfs_metadata 10#用于元数据的pool
$ ceph fs new myceph cephfs_metadata cephfs_data
5.4 检验
查看mds状态
$ ceph mds stat
查看集群状态
$ ceph -s
附录1 —— ceph经常使用命令
1. 查看状态命令:
查看ceph集群状态:ceph -s
查看mon状态:ceph mon stat
查看msd状态:ceph msd stat
查看osd状态:ceph osd stat
查看osd目录树(能够查看每一个osd挂在哪台机,是否已启动):ceph osd tree
2. 启动节点命令:
须要在对应的节点进行启动(若是对应节点没有该服务,会进行提示)
启动mon进程:service ceph start mon.ceph01
启动msd进程:service ceph start msd.ceoh01(咱们集群没有msd节点)
启动osd进程:service ceph start osd.0(在ceph01上)
启动osd进程:service ceph start osd.1(在ceph02上)
启动osd进程:service ceph start osd.2(在ceph03上)
附录2——client挂载
Client挂载方式有两种:内核kernal方式和fuse方式。因为咱们使用的centos6.7内核版本过低,而升级内核时间太长,故直接采用fuse方式进行挂载。下面分别介绍centos6.7和ubuntu15.04挂载client的方法。
注:client挂载前须要在client节点安装ceph,方法参考上述文档
1. centos 6.7使用fuse挂载(client节点)
安装ceph源
参考官方文档:http://docs.ceph.com/docs/master/cephfs/fuse/
(其中的ceph.keyring须要改成ceph.client.admin.keyring )
若是不进行此步骤,不然会报“No package ceph-fuse available.”
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
安装ceph-fuse
# yum install -y ceph-fuse
建立挂载目录
# mkdir /cephfs
复制配置文件
将ceph配置文件ceph.conf从管理节点copy到client节点
# scp ceph@10.201.26.131:/etc/ceph/ceph.conf /etc/ceph/
复制密钥
将ceph的ceph.client.admin.keyring从管理节点copy到client节点
# scp ceph@10.201.26.131:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
查看ceph受权
# ceph auth list
挂载到指定目录
将ceph挂载到/cephfs
# ceph-fuse -m 10.201.26.131:6789 /cephfs
取消挂载
# umount/cephfs
2. ubuntu15.04 使用fuse挂载
安装ceph-fuse
# apt-get install -y ceph-fuse
或者手动安装,下载地址:http://mirrors.aliyun.com/ubuntu/pool/main/c/ceph/,下载包ceph-dbg_0.94.1-0ubuntu1_amd64.deb
# dpkg -i ceph-dbg_0.94.1-0ubuntu1_amd64.deb
建立挂载目录
# mkdir /cephfs
复制配置文件
将ceph配置文件ceph.conf从管理节点copy到client节点
# scp ceph@10.201.26.131:/etc/ceph/ceph.conf /etc/ceph/
复制密钥
将ceph的ceph.client.admin.keyring从管理节点copy到client节点
# scp ceph@10.201.26.131:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
查看ceph受权
# ceph auth list
挂载到指定目录
将ceph挂载到/cephfs
# ceph-fuse -m 10.201.26.131:6789 /cephfs
取消挂载
# umount/cephfs