ceph文件系統安裝配置node
Ceph是一種爲優秀的性能、可靠性和可擴展性而設計的統一的、分佈式文件系統。vim
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 )。app
l MDSs: Ceph 元數據服務器( MDS )爲 Ceph 文件系統存儲元數據(也就是說,Ceph 塊設備和 Ceph 對象存儲不使用MDS )。元數據服務器使得 POSIX 文件系統的用戶們,能夠在不對 Ceph 存儲集羣形成負擔的前提下,執行諸如 ls、find 等基本命令。dom
操做系統:Centos 7 x64ssh
IP分佈式 |
主機名ide |
應用工具 |
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 |
客戶端 |
192.168.8.10操做
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
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 |
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
先在管理節點上建立一個目錄,用於保存 ceph-deploy 生成的配置文件和密鑰對。
mkdirmy-cluster
cdmy-cluster
ceph-deploy 會把文件輸出到當前目錄,因此請確保在此目錄下執行後面的 ceph-deploy 相關命令
在管理節點上,進入剛建立的放置配置文件的目錄,用 ceph-deploy 執行以下步驟。
ceph-deploynew ceph-mon1 ceph-mon2 ceph-mon3
在當前目錄下用 ls 和 cat 檢查ceph-deploy 的輸出,應該有一個 Ceph 配置文件、一個 monitor 密鑰環和一個日誌文件。
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 。
配置初始 monitor(s)、並收集全部密鑰:
ceph-deploymon create-initial
添加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 狀態。
至少須要一個元數據服務器才能使用 CephFS文件系統 ,執行下列命令建立元數據服務器:
ceph-deploymds create ceph-mds
當前生產環境下的 Ceph 只能運行一個元數據服務器。你能夠配置多個,但多個目前還不穩定。
用此命令建立存儲池時:
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
建立好存儲池後,你就能夠用 fs new 命令建立文件系統了:
cephfs new cephfs cephfs_metadata cephfs_data
查看文件系統:
cephfs ls
文件系統建立完畢後, MDS 服務器就能達到 active 狀態了,好比在一個單 MDS 系統中:
cephmds stat
查看密鑰:
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
要用內核驅動掛載 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
如增長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
如刪除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 ceph-osd@3.service
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}