环境:ubuntu-server 16.04,两台arm服务器 分别为node1和node2,node1和node2分别安装monitor和3个osd,在node1上部署MDS,cephnode
systemctl stop ufw #禁用防火墙bootstrap
systemctl disable ufw #禁止防火墙开机启动ubuntu
vim /etc/hosts #修改主机名字(每台服务器都要修改)个人node2节点的文件以下:vim
root@node2:/var/lib/ceph/osd# cat /etc/hosts
127.0.0.1 localhost
10.33.0.37 node2
10.33.0.13 node1服务器
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersoop
vim /etc/hostname #修改主机名字ui
.......略spa
一、uuidgen #生成惟一的uuid.net
二、vim /etc/ceph/ceph.conf #建立ceph.conf文件,个人配置文件以下:命令行
root@bogon:~# cat /etc/ceph/ceph.conf
[global]
fsid = c37ee56f-e925-4c9b-80ba-c4b0625fde93
mon initial members = node1
mon host = 10.33.0.13
public network = 10.33.0.0/16
cluster network = 192.168.3.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd pool default size = 2 #两个副本
三、ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *' #为监控节点建立管理密钥
四、ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow' #为ceph amin用户建立管理集群的密钥并赋予访问权限
五、ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring #添加client.admin key到 ceph.mon.keyring
六、 mkdir -p /var/lib/ceph/mon/ceph-node1 #为node1节点上的mon建立数据目录
七、在node1节点上初始化mon节点,执行下面的命令
ceph-mon --mkfs -i node1 --keyring /tmp/ceph.mon.keyring
八、为了防止从新被安装建立一个空的done文件
touch /var/lib/ceph/mon/ceph-node1/done
九、建立一个空的初始化文件
touch /var/lib/ceph/mon/ceph-node1/upstart
十、启动ceph进程
(1)ceph-mon -i node1 #用命令方式启动,也能够用脚本方式启动,目前我还没实现脚本方式启动,后续会更新。
(2)脚本方式启动
systemctl enable ceph-mon.target #使能mon的target
cd /etc/systemd/system/multi-user.target.wants
ln -s /lib/systemd/system/ceph-mon@.service ./ceph-mon@node1.service #创建启动配置文件
systemctl start ceph-mon@node1.service #启动node1节点上的mon进程
vim /etc/ceph/ceph.conf #修改ceph的配置文件添加osd_crush_update_on_start = false选项
vim /lib/systemd/system/ceph-mon@.service #修改启动配置文件把setusr 修改为想用的用户名
十一、 mkdir -p /var/lib/ceph/bootstrap-osd/
ceph auth get-or-create client.bootstrap-osd mon 'allow profile bootstrap-osd'
ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring # 在node1建立一个boot引导启动osd的key
一、复制node1节点的/etc/ceph目录到node2
scp /etc/ceph/* node2:/etc/ceph/
二、在node2节点上新建一个/var/lib/ceph/bootstrap-osd/目录
mkdir /var/lib/ceph/bootstrap-osd/
三、复制node1节点上的/var/lib/ceph/bootstrap-osd/ceph.keyring文件到node2
scp /var/lib/ceph/bootstrap-osd/ceph.keyring node2:/var/lib/ceph/bootstrap-osd/
四、复制node1节点上的/tmp/ceph.mon.keyring
scp /tmp/ceph.mon.keyring node2:/tmp/
五、在node2节点上创建一个/var/lib/ceph/mon/ceph-node2目录
mkdir -p /var/lib/ceph/mon/ceph-node2
六、在node2节点上初始化mon节点,执行下面的命令
ceph-mon --mkfs -i node2 --keyring /tmp/ceph.mon.keyring
七、为了防止从新被安装建立一个空的done文件
touch /var/lib/ceph/mon/ceph-node2/done
八、建立一个空的初始化文件
touch /var/lib/ceph/mon/ceph-node2/upstart
九、启动ceph进程
ceph-mon -i node2
十、查看集群状态
ceph -s #如今因为没有osd集群状态是不可用的
在node1节点添加3个osd,在node2节点添加3个osd
一、建立一个OSD,生成一个osd number
ceph osd create
输出0
二、为osd节点建立一个osd目录
mkdir -p /var/lib/ceph/osd/ceph-0
三、格式化已准备好的osd硬盘(格式化为xfs格式)
mkfs.xfs -f /dev/sdb
四、挂在目录
mount -o user_xattr /dev/sdb /var/lib/ceph/osd/ceph-0
把挂载信息写入分区表
五、初始化osd数据目录
ceph-osd -i 0 --mkfs --mkkey
六、注册osd的认证密钥
ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-0/keyring
七、为此osd节点建立一个crush map
ceph osd crush add-bucket node1 host
八、把node1 bucket 移到 root bucket下
ceph osd crush move node1 root=default
九、给node1 bucket 增长一个设备
ceph osd crush add osd.0 1.0 host=node1
十、在node1节点中建立启动文件
touch /var/lib/ceph/osd/ceph-0/upstart
十一、启动osd进程
(1)命令行方式启动
ceph-osd -i 0 #命令方式启动
(2)脚本方式启动
systemctl enable ceph-osd.target #使能ceph-osd.target
cd /etc/systemd/system/multi-user.target.wants
ln -s /lib/systemd/system/ceph-osd@.service ./ceph-osd@0.service #建立启动配置文件
systemctl start ceph-osd@0.service #启动osd.0进程
vim /etc/ceph/ceph.conf #修改ceph的配置文件添加osd_crush_update_on_start = false选项
vim /lib/systemd/system/ceph-mon@.service #修改启动配置文件把setusr 修改为想用的用户名
十一、在node1节点上依次执行上面的启动另外两个osd进程
note:因为在node1节点上建立第一个osd进程的时候,已经在crushmap中建立了node1 bucket 并移到了root bucket下因此在建立另外两个osd进程的时候不须要执行七、8步骤。
一、在node2节点已经有ceph.conf和ceph.client.admin.keyring 文件因此不须要从node1节点拷贝。
二、建立一个OSD,生成一个osd number
ceph osd create
输出 1
三、为osd节点建立一个osd目录
mkdir -p /var/lib/ceph/osd/ceph-1
四、格式化已准备好的osd硬盘(格式化为xfs格式 )
mkfs.xfs -f /dev/sdb
五、 挂在目录
mount -o user_xattr /dev/sdb /var/lib/ceph/osd/ceph-1
把上面的挂载信息写入分区表
六、 初始化osd数据目录
ceph-osd -i 1 --mkfs --mkkey
七、 注册osd的认证密钥
ceph auth add osd.1 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-1/keyring
八、为此osd节点建立一个crush map
ceph osd crush add-bucket node2 host
九、把node2 bucket 移到root bucket下
ceph osd crush move node2 root=default
十、在node2 bucket下添加osd设备
ceph osd crush add osd.1 1.0 host=node2
十一、 建立一个初始化目录
touch /var/lib/ceph/osd/ceph-1/upstart
十二、 启动osd进程
ceph-osd -i 1
1三、在node2节点按照以上方法启动其他两个osd进程。
note:参照node1节点上的操做
目前官网推荐jewel版的ceph集群中只部署一个active mds进程,如下只部署一个mds进程
一、为mds元数据服务器建立一个目录
mkdir -p /var/lib/ceph/mds/ceph-node1
二、 为bootstrap-mds客户端建立一个密钥
mkdir -p /var/lib/ceph/mds/bootstrap-mds
ceph-authtool --create-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring --gen-key -n client.bootstrap-mds
三、 在ceph auth库中建立bootstrap-mds客户端,赋予权限添加以前建立的密钥
ceph auth add client.bootstrap-mds mon 'allow profile bootstrap-mds' -i /var/lib/ceph/bootstrap-mds/ceph.keyring
四、在root家目录里建立ceph.bootstrap-mds.keyring文件
touch /root/ceph.bootstrap-mds.keyring
五、把keyring /var/lib/ceph/bootstrap-mds/ceph.keyring里的密钥导入家目录下的ceph.bootstrap-mds.keyring文件里
ceph-authtool --import-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring /root/ceph.bootstrap-mds.keyring
六、在ceph auth库中建立mds.node1用户,并赋予权限和建立密钥,密钥保存在/var/lib/ceph/mds/ceph-node1/keyring文件里
ceph --cluster ceph --name client.bootstrap-mds --keyring /var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.node1 osd 'allow rwx' mds 'allow' mon 'allow profile mds' -o /var/lib/ceph/mds/ceph-node1/keyring
七、为mds建立一个初始化文件用于启动使用(此文件为空文件)
touch /var/lib/ceph/mds/ceph-node1/upstart
八、为了防止从新被安装建立一个空的done文件
touch /var/lib/ceph/mds/ceph-node1/done
九、启动mds进程
ceph-mds -i node1 #命令方式启动mds进程
10.查找cephfs中文件所在的位置
stat -c %i {filepath} #查询文件的inode
rados -p {data-pool} ls | grep {hex-inode} #查询属于该文件的有那些对象
ceph osd map {data-pool} {object-num} #查询该对象所在的osd
至此ceph一个简单的ceph集群部署完成
参考:http://boris05.blog.51cto.com/1073705/1439874