Linux叢集儲存——day4——Ceph分散式儲存搭建、OSD塊儲存、COW快照、RBD儲存映象
Ceph的專有名詞 | |
OSDs | 儲存裝置 |
Monitors | 叢集監控元件 |
MDSs | 存放檔案系統的元資料 |
部署Ceph分散式儲存
Ceph叢集中一般是一個管理伺服器(control)多個儲存伺服器(node),所以下面所有關於儲存伺服器的操作都需要對每個儲存器進行操作(主機名為node1的操作需要在每個儲存伺服器上進行一次)
0. 部署前準備工作:
0.1 我們進行配置操作前,要先將所有伺服器配置好yum網路等基本配置
0.2 讓管理伺服器可以免密登陸其他所有的儲存伺服器
0.3 在管理伺服器上安裝 ceph-deploy(管理Ceph的軟體)
0.4 在管理伺服器上建立一個ceph的工作目錄(我設定的名字叫ceph-path)
0.5 讓所有裝置都繫結一個NTP時間同步伺服器,並且所有裝置的chronyd服務都配好了,具體檢視…………………………………………
1. 部署叢集:
1.1 建立Ceph叢集: (必須前往控制服務中建立用於ceph工作的目錄中)
[[email protected] ceph-path]# ceph-deploy new 儲存裝置的IP1 儲存裝置的IP2 ………………
1.2 然後給叢集中伺服器裝包:ceph-osd ceph-mds ceph-mon ceph-radosgw
不過我們不是一個一個到儲存伺服器上進行yum安裝,可以直接在Ceph管理伺服器上進行控制:
[[email protected] ceph-path]# ceph-deploy install 儲存裝置的IP1 儲存裝置的IP2 ………………
1.3 初始化所有節點的mon服務(不需要再次指定儲存伺服器的IP,因為他預設的IP是建立的Ceph叢集中的所有IP)
[[email protected] ceph-path]# ceph-deploy mon create-initial
2. 部署每個儲存伺服器的OSD
2.1 準備磁碟 ,將其中一個磁碟作為日誌儲存盤(journal盤),根據每個儲存裝置中除了日誌儲存盤還有其他幾個盤來分,有幾個盤就把日誌儲存盤平均分成幾部分,日誌儲存盤一個分割槽對應一個數據儲存磁碟
(例子是儲存盤一共有4個盤,1個作為日誌儲存盤,3個作為儲存盤,所以日誌盤分成3份)
[[email protected] ~]# parted 選定的日誌儲存盤 mklabel gpt
[[email protected] ~]# parted 選定的日誌儲存盤 mkpart primary 1M 33%
[[email protected] ~]# parted 選定的日誌儲存盤 mkpart primary 33% 66%
[[email protected] ~]# parted 選定的日誌儲存盤 mkpart primary 66% 100%
2.2 把日誌儲存盤及其分割槽的所有者和所屬組改為ceph,讓ceph使用者擁有對磁碟的讀寫許可權,到時候寫磁碟的時候軟體就是用ceph使用者的身份進行操作
[[email protected] ~]# chown ceph:ceph /dev/vdb* ; \
echo 'chown ceph:ceph /dev/vdb*' >> /etc/rc.local ; \
chmod +x /etc/rc.local
2.3 初始化清空磁碟資料
[[email protected] ceph-path]# for i in 儲存裝置的IP1 儲存裝置的IP2 ……
do
ceph-deploy disk zap $i:資料儲存磁碟名1 $i:資料儲存磁碟名2 ……
done
2.4 建立OSD儲存空間
[[email protected] ceph-path]# for i in 儲存裝置的IP1 儲存裝置的IP2 ……
do
ceph-deploy osd create $i:儲存磁碟名1:/dev/日誌儲存盤中對應的分割槽 $i:儲存磁碟名2:/dev/日誌儲存盤中對應的分割槽 ……
done
# 如果出問題了,可以使用下面命令修復,然後再嘗試建立
# [[email protected] ceph-path]# ceph-deploy gatherkeys 儲存裝置的IP1 儲存裝置的IP2 ……
2.5 檢查OSD儲存空間
[[email protected] ceph-path]# ceph -s
# 如果出現 health HEALTH_OK 那麼就是成功的,就不需要其他的操作了,否則就有問題,需要做修復和查錯!
# 如果出現 HEALTH_WARN \n clock skew detected on 那就說明NTP時間同步有問題
# 如果只出現了 HEALTH_WARN 那麼就嘗試重啟服務
# [[email protected] ceph-path]# systemctl restart ceph\*.service ceph\*.target
2.6 檢視各個伺服器的ceph服務情況(ceph開頭的server、target結尾的服務都是)
[[email protected] ~]# systemctl status ceph\*.service ceph\*.target
# 也可以過濾一下,看看有沒有沒起來的服務
# [[email protected] ~]# systemctl status ceph\*.service ceph\*.target | grep 'inactive'
2.7 排錯的時候,可以檢視管理伺服器的ceph日誌,檢視裡面有哪些錯誤
[[email protected] ceph-path]# cat -n ceph-deploy-ceph.log | grep ERROR
3. 建立塊儲存
塊儲存可以理解為一種儲存裝置,塊儲存分為單機塊儲存(光碟、磁碟)和分散式塊儲存(Ceph)。
而Ceph塊儲存可以理解為,他是把零散的多個伺服器的一個個OSD塊儲存結合成一個大的儲存裝置,這個大的裝置就叫儲存池(rbd池)
每個Ceph塊裝置都有儲存池,預設就有一個,然後在儲存池裡有多個映象。
在使用塊裝置的時候,我們也要進行“分割槽”——建立映象,並不是真的分割槽,但可以理解為磁碟分割槽,他就是把儲存池的儲存空間進行分割,然後每個映象在進行具體的其他的操作,所以,我們真正使用的時候用的是映象
在部署映象的時候,如果其所在儲存池就是預設儲存池rbd,則可以不寫儲存池名
對於映象的基本操作: 在任意一個伺服器(管理或者儲存)進行操作都可以,並且會相互同步
檢視儲存池
[[email protected] ~]# ceph osd lspools
建立儲存池
[[email protected] ~]# ceph osd pool create 儲存池名 建立多少個目錄用來儲存裝置(128個)
刪除儲存池(儲存池名字要一模一樣的寫兩次)
[[email protected] ~]# ceph osd pool delete 儲存池名 儲存池名 --yes-i-really-really-mean-it
檢視映象
[[email protected] ~]# rbd info 儲存池名/映象名
建立映象
[[email protected] ~]# rbd create 儲存池名/映象名 --image-feature layering(映象樣式) --size 大小
修改映象大小
[[email protected] ~]# rbd resize --size 修改到的映象大小(M/G) 儲存池名/映象名 --allow-shrink
把映象裝置對映到本機
[[email protected] ~]# rbd map 儲存池名/映象名
# 然後介面會返回一個磁碟位置,然後我們就可以對這個裝置進行分割槽掛載格式化等操作
刪除映象(如果映象有快照必須先刪除快照檔案)
[[email protected] ~]# rbd rm 儲存池名/映象名
3.1 建立一個映象
3.2 配置客戶端使用Ceph儲存連線映象(client主機為客戶端)
3.2.1 安裝軟體包 ceph-common
3.2.2 拷貝Ceph儲存叢集的配置檔案:
把管理伺服器中的ceph配置檔案和連結金鑰拷貝到本機/etc/ceph上
其中 ceph.conf 是用來確定叢集的資訊,讓客戶端知道叢集在哪裡
其中 ceph.client.admin.keyring 是用來確定連結,使客戶端有許可權連線ceph叢集
[[email protected] ~]# scp 管理伺服器的IP:/etc/ceph/ceph.conf 管理伺服器的IP:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
3.2.3 把Ceph叢集映象對映為本地磁碟(和伺服器把映象裝置對映到本機一樣的操作)
[[email protected] ~]# rbd map 儲存池名/映象名
3.2.4 檢視Ceph叢集的掛載情況
[[email protected] ~]# rbd showmapped
3.3 然後使用者就可以像操作本機磁碟一樣對Ceph磁碟進行使用。
4. 利用COW技術給ceph儲存叢集做快照備份
COW -- Copy Online Writ 寫時複製
其操作原理就是,建立快照後,當客戶端對磁碟映象進行寫操作的時候,就儲存修改前的檔案到快照中,也就是說,剛剛建立的新快照是不佔用任何儲存空間的,只有資料發生變更了,才會把舊資料儲存到快照中。
而做快照是為了恢復資料,所以,只有資料發生了變更,快照才會記錄,一開始可能分配了和磁碟映象一樣的空間,單實際上並沒有使用那麼多。
什麼操作算寫操作呢?刪除、修改、新增任何資料,那麼只要有前面的任意一個操作,快照就會工作進行記錄。
4.0 檢視Ceph塊儲存映象的快照資訊:
[[email protected] ~]# rbd snap ls 儲存池名/映象名
4.1 如何在需要儲存資料的時候在伺服器上建立快照
[[email protected] ~]# rbd snap create 儲存池名/映象名 --snap 快照名
4.2 如何建立將磁碟資料還原到快照的狀態
4.2.1 客戶端解除掛載
[[email protected] ~]# umount 映象掛載的位置
4.2.2 服務端解還原快照
[[email protected] ~]# rbd snap rollback 儲存池名/映象名 --snap 快照名
4.2.3 客戶端重新掛載
[[email protected] ~]# mount 映象所在的系統位置(rbd map 命令查到的結果) 映象掛載的位置
注:
1. 還原的時候,其順序可以有改變,但是,最好不要改變,否則會有一些問題出現,如果伺服器的時間不一致,則資料還原會失敗
2. 還原的時候如果出現客戶端不能掛載,那就就在管理伺服器上重新還原一下快照即可
4.3 刪除快照
[[email protected] ~]# rbd snap rm 儲存池名/映象名 --snap 快照名
5. 快照克隆
根據快照製作一個映象的克隆出來,這個克隆可以當作一個映象進行使用,只不過這裡面有原映象拍攝快照的時候的所有資料資訊,包括檔案格式化的資訊等,所以快照克隆可以理解為以快照拍攝時期的映象為模板,克隆出一個和當時一模一樣的映象出來。
但是是克隆的映象資料大多來源於快照鏈,也就是他不能脫離原映象獨立使用,如果要獨立使用要做其他的操作,不過消耗時間會多不少,下面會具體講述。
檢視集體克隆的資訊:(其實克隆就是一個映象,所以其基本操作和不同映象一樣)
[[email protected] ~]# rbd info 克隆名
刪除克隆:
[[email protected] ~]# rbd rm 克隆名
5.1 必須先把要克隆的快照保護起來(使其不能被刪除或者修改)
[[email protected] ~]# rbd snap protect 映象名 --snap 快照名
5.2 建立快照的克隆
# 沒有快照可以現在製作,然後繼續操作,製作快照的方法在上面
[[email protected] ~]# rbd clone 映象名 --snap 快照名 克隆名字 --image-feature layering(映象樣式)
# 如果希望克隆的映象可以獨立使用,不與原映象和快照有關係就要把整個原映象進行拷貝
# [[email protected] ~]# rbd flatten 克隆名字
5.3 解除保護
[[email protected] ~]# rbd snap unprotect 映象名 --snap 快照名
5.4 配置客戶端連線映象進行操作(和對待普通映象一樣的操作)
總結:
快照克隆出來的就是一個映象,可以當作一個映象進行操作。
檢視命令: | |
ceph -s | 檢查Ceph儲存的管理伺服器部署是否成功 |
rbd info 映象名 | 檢視映象資訊 |
rbd snap ls 映象名 | 檢視映象快照資訊 |
配置Ceph服務基本思路 | ||
環境 | 搭建幾個儲存伺服器裡面配置至少2個用於儲存的磁碟(至少要一個日誌儲存一個數據儲存) | |
搭建一個控制伺服器可以免密登陸所有的儲存伺服器,安裝管理軟體ceph-deploy,建立個儲存服務配置的目錄(所有操作都在這裡面進行) | ||
幾個伺服器都繫結一個NTP伺服器,開啟chronyd服務,保證時間同步 | ||
建叢集 | 建立 | ceph-deploy new 儲存裝置…… |
裝包 | ceph-deploy install 儲存裝置…… | |
初始化 | ceph-deploy mon create-initial | |
建OSD | 配置磁碟 | 到各個磁碟把預定的日誌儲存盤分成等同資料儲存個數的區 |
賦予許可權 | 給日誌儲存盤所有分割槽ceph使用者都有讀寫許可權 | |
清空磁碟 | ceph-deploy disk zap 儲存裝置:資料儲存磁碟…… | |
建立OSD | ceph-deploy osd create 儲存裝置:資料儲存磁碟:/dev/日誌儲存盤中對應的分割槽…… | |
建塊儲存 | 建立映象 | rbd create 映象名 --image-feature layering(映象樣式) --size 大小 |
配置客戶端 | 裝包ceph-common、拷貝配置檔案ceph.conf和ceph.client.admin.keyring | |
對映映象 | rbd map 映象名 | |
做備份 | 建立快照 | rbd snap create 映象名 --snap 快照名 |
還原 | 解掛 、 還原rbd snap rollback 映象名 --snap 快照名 、 掛載 | |
克隆伺服器 | 保護快照 | rbd snap protect 映象名 --snap 快照名 |
建立克隆 | bd clone 映象名 --snap 快照名 克隆名字 --image-feature layering(映象樣式) | |
解除保護 | rbd snap unprotect 映象名 --snap 快照名 |