轉載自 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