ceph文件系統安裝配置

ceph文件系統安裝配置

 

1     前言

Ceph是一種爲優秀的性能、可靠性和可擴展性而設計的統一的、分佈式文件系統。

l  Ceph OSDs: Ceph OSD 守護進程( Ceph OSD )的功能是存儲數據,處理數據的複製、恢復、回填、再均衡,並通過檢查其他OSD 守護進程的心跳來向 Ceph Monitors 提供一些監控信息。當 Ceph 存儲集羣設定爲有2個副本時,至少需要2個 OSD 守護進程,集羣才能達到active+clean 狀態( Ceph 默認有3個副本,但你可以調整副本數)。

l  Monitors: Ceph Monitor維護着展示集羣狀態的各種圖表,包括監視器圖、OSD 圖、歸置組( PG )圖、和 CRUSH 圖。 Ceph 保存着發生在Monitors 、 OSD 和 PG上的每一次狀態變更的歷史信息(稱爲 epoch )。

l  MDSs: Ceph 元數據服務器( MDS )爲 Ceph 文件系統存儲元數據(也就是說,Ceph 塊設備和 Ceph 對象存儲不使用MDS )。元數據服務器使得 POSIX 文件系統的用戶們,可以在不對 Ceph 存儲集羣造成負擔的前提下,執行諸如 ls、find 等基本命令。

2     安裝配置

2.1  實驗環境

操作系統:Centos 7 x64

IP

主機名

應用

192.168.8.10

ceph-deploy

控制檯

192.168.8.11

ceph-mon1

監控1

192.168.8.12

ceph-mon2

監控2

192.168.8.13

ceph-mon3

監控3

192.168.8.14

ceph-osd0

數據0

192.168.8.15

ceph-osd1

數據1

192.168.8.16

ceph-osd2

數據2

192.168.8.17

ceph-mds

元數據

192.168.8.18

cephfs

客戶端

2.2  安裝配置ceph

192.168.8.10操作

2.2.1     yum環境

yuminstall -y yum-utils && yum-config-manager --add-repohttps://dl.fedoraproject.org/pub/epel/7/x86_64/ &&  yum install --nogpgcheck -y epel-release&&  rpm --import/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && rm /etc/yum.repos.d/dl.fedoraproject.org*

 

編輯yum源:

vim/etc/yum.repos.d/ceph.repo

[Ceph]

name=Ceph  packages for $basearch

baseurl=http://download.ceph.com/rpm-jewel/el7/$basearch

enabled=1

gpgcheck=1

type=rpm-md

gpgkey=https://download.ceph.com/keys/release.asc

priority=1

 

[Ceph-noarch]

name=Ceph  noarch packages

baseurl=http://download.ceph.com/rpm-jewel/el7/noarch

enabled=1

gpgcheck=1

type=rpm-md

gpgkey=https://download.ceph.com/keys/release.asc

priority=1

 

[ceph-source]

name=Ceph  source packages

baseurl=http://download.ceph.com/rpm-jewel/el7/SRPMS

enabled=1

gpgcheck=1

type=rpm-md

gpgkey=https://download.ceph.com/keys/release.asc

priority=1

 

安裝ceph-deploy

yuminstall ceph-deploy

 

安裝ntp

yuminstall ntp ntpdate ntp-doc

 

2.2.2     hosts文件

vi/etc/hosts

添加

192.168.8.10   ceph-deploy

192.168.8.11   ceph-mon1

192.168.8.12   ceph-mon2

192.168.8.13   ceph-mon3

192.168.8.14   ceph-node0

192.168.8.15   ceph-node1

192.168.8.16   ceph-node2

192.168.8.17   ceph-mds

192.168.8.18   cephfs

 

2.2.3     無密鑰登錄

ssh-keygen   一直回車

 

把公鑰拷貝到各 Ceph 節點

ssh-copy-idroot@ceph-deploy

ssh-copy-idroot@ceph-mon1

ssh-copy-idroot@ceph-mon2

ssh-copy-idroot@ceph-mon3

ssh-copy-idroot@ceph-node0

ssh-copy-idroot@ceph-node1

ssh-copy-idroot@ceph-node2

ssh-copy-idroot@ceph-mds

ssh-copy-idroot@cephfs

2.2.4     創建集羣

先在管理節點上創建一個目錄,用於保存 ceph-deploy 生成的配置文件和密鑰對。

mkdirmy-cluster

cdmy-cluster

ceph-deploy 會把文件輸出到當前目錄,所以請確保在此目錄下執行後面的 ceph-deploy 相關命令

 

2.2.5     安裝mon

在管理節點上,進入剛創建的放置配置文件的目錄,用 ceph-deploy 執行如下步驟。

ceph-deploynew ceph-mon1 ceph-mon2 ceph-mon3

在當前目錄下用 ls 和 cat 檢查ceph-deploy 的輸出,應該有一個 Ceph 配置文件、一個 monitor 密鑰環和一個日誌文件。

 

2.2.6     安裝ceph

ceph-deployinstall ceph-deploy ceph-mon1 ceph-mon2 ceph-mon3 ceph-node0 ceph-node1ceph-node2 ceph-mds cephfs

ceph-deploy將在各節點安裝Ceph 。 注:如果你執行過 ceph-deploy purge ,你必須重新執行這一步來安裝 Ceph 。

 

2.2.7     初始化mon

配置初始 monitor(s)、並收集所有密鑰:

ceph-deploymon create-initial

2.2.8     添加osd

添加OSD 。這次我們是把目錄而非整個硬盤用於 OSD 守護進程(存儲數據)。

ssh ceph-node0

mkdir/var/local/osd0

exit

 

sshceph-node1

mkdir/var/local/osd1

exit

 

sshceph-node2

mkdir/var/local/osd2

exit

 

然後,從管理節點執行 ceph-deploy 來準備 OSD 。

ceph-deployosd prepare ceph-node0:/var/local/osd0 ceph-node1:/var/local/osd1ceph-node2:/var/local/osd2

ceph-deployosd activate ceph-node0:/var/local/osd0 ceph-node1:/var/local/osd1ceph-node2:/var/local/osd2

 

用 ceph-deploy 把配置文件和 admin 密鑰拷貝到管理節點和 Ceph 節點

ceph-deployadmin ceph-deploy ceph-mon1 ceph-mon2 ceph-mon3 ceph-node0 ceph-node1ceph-node2 ceph-mds cephfs

 

檢查集羣的健康狀況

cephstatus

 

等 peering 完成後,集羣應該達到 active + clean 狀態。

 

2.2.9     添加元數據

至少需要一個元數據服務器才能使用 CephFS文件系統 ,執行下列命令創建元數據服務器:

ceph-deploymds create ceph-mds

當前生產環境下的 Ceph 只能運行一個元數據服務器。你可以配置多個,但多個目前還不穩定。

 

2.2.10   添加存儲池

用此命令創建存儲池時:

cephosd pool create {pool-name} pg_num

確定 pg_num 取值是強制性的,因爲不能自動計算。下面是幾個常用的值:

少於 5 個 OSD 時可把 pg_num 設置爲 128

OSD 數量在 5 到 10 個時,可把 pg_num 設置爲512

OSD 數量在 10 到 50 個時,可把 pg_num 設置爲4096

OSD 數量大於 50 時,你得理解權衡方法、以及如何自己計算 pg_num 取值

自己計算 pg_num 取值時可藉助 pgcalc 工具:http://ceph.com/pgcalc/

 

一個 Ceph 文件系統需要至少兩個 RADOS 存儲池,一個用於數據、一個用於元數據。配置這些存儲池時需考慮:

爲元數據存儲池設置較高的副本水平,因爲此存儲池丟失任何數據都會導致整個文件系統失效。

爲元數據存儲池分配低延時存儲器(像 SSD ),因爲它會直接影響到客戶端的操作延時。

 

cephosd pool create cephfs_metadata 128 128

cephosd pool create cephfs_data 512 512

 

2.2.11   創建文件系統

創建好存儲池後,你就可以用 fs new 命令創建文件系統了:

cephfs new cephfs cephfs_metadata cephfs_data

查看文件系統:

cephfs ls

文件系統創建完畢後, MDS 服務器就能達到 active 狀態了,比如在一個單 MDS 系統中:

cephmds stat

 

2.2.12   掛載文件系統

查看密鑰:

cat/etc/ceph/ceph.client.admin.keyring

[client.admin]

        key = AQA1nLhZBEVaDBAAtHOx5OEdOjKSpvHN3JVJeA==

        caps mds = "allow *"

        caps mon = "allow *"

        caps osd = "allow *"

 

將紅色部分導入一個新文件

echo“AQA1nLhZBEVaDBAAtHOx5OEdOjKSpvHN3JVJeA==”> /etc/ceph/admin.secret

chmod600 /etc/ceph/admin.secret

 

掛載文件系統

mount-t ceph 192.168.8.11,192.168.8.12,192.168.8.13:6789:/ /mnt/mycephfs -oname=admin,secretfile=/etc/ceph/admin.secret

 

查看cephfs容量

cephdf

 

2.2.13   fstab配置

要用內核驅動掛載 Ceph FS ,按下列格式添加到 /etc/fstab :

{ipaddress}:{port}:/{mount}/{mountpoint} {filesystem-name}    [name=username,secret=secretkey|secretfile=/path/to/secretfile],[{mount.options}]

 

192.168.8.11,192.168.8.12,192.168.8.13:6789:/  /mnt/mycephfs ceph  name=admin, secretfile=/etc/ceph/admin.secret,noatime  0  0

 

2.3  擴容ceph

2.3.1     新增osd

如增加ceph-osd3 IP爲192.168.8.19

管理節點增加主機名解析:

vi/etc/hosts

192.168.8.19  ceph-osd3

 

增加無密鑰登錄

ssh-copy-idroot@ceph-osd3

 

ssh ceph-osd3

sudomkdir /var/local/osd3

exit

 

然後,從管理節點執行 ceph-deploy 來準備 OSD 。

ceph-deployosd prepare ceph-node3:/var/local/osd3

 

激活 OSD

ceph-deployosd activate ceph-node3:/var/local/osd3

 

2.3.2     刪除osd

如刪除ceph-osd3 IP爲192.168.8.19

刪除 OSD 前,它通常是 up 且 in 的,要先把它踢出集羣,以使 Ceph 啓動重新均衡、把數據拷貝到其他 OSD 。

先查看osd對應數字

cpehosd tree

然後進行踢出

cephosd out 3

 

觀察數據遷移

一旦把 OSD 踢出( out )集羣,Ceph 就會開始重新均衡集羣、把歸置組遷出將刪除的 OSD 。你可以用 ceph 工具觀察此過程。

ceph –w

 

你會看到歸置組狀態從 active+clean 變爲 active, some degradedobjects 、遷移完成後最終回到 active+clean 狀態。

 

注意:有時候,(通常是隻有幾臺主機的“小”集羣,比如小型測試集羣)拿出( out )某個 OSD 可能會使CRUSH 進入臨界狀態,這時某些 PG 一直卡在active+remapped 狀態。如果遇到了這種情況,你應該把此 OSD 標記爲 in ,用這個命令:

cephosd in 3

等回到最初的狀態後,把它的權重設置爲 0 ,而不是標記爲 out ,用此命令:

ceph osdcrush reweight osd.3 0

執行後,你可以觀察數據遷移過程,應該可以正常結束。把某一 OSD 標記爲 out 和權重改爲 0的區別在於,前者,包含此 OSD 的桶、其權重沒變;而後一種情況下,桶的權重變了(降低了此 OSD 的權重)。某些情況下, reweight 命令更適合“小”集羣。

 

停止 OSD

把 OSD 踢出集羣后,它可能仍在運行,就是說其狀態爲 up 且 out 。刪除前要先停止 OSD 進程。

ssh ceph-osd3

systemctlstop [email protected]

exit

 

停止 OSD 後,狀態變爲 down 。

cephosd tree

 

刪除 CRUSH 圖的對應 OSD 條目,它就不再接收數據了。

cephosd crush remove osd.3

cephosd crush remove ceph-node3

 

刪除 OSD 認證密鑰:

cephauth del osd.3

 

刪除 OSD

cephosd rm 3

 

從 ceph.conf 配置文件裏刪除對應條目。

ssh ceph-deploy

cd/etc/ceph

vimceph.conf

[osd.3]

        host = {hostname}

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章