1. 程式人生 > 實用技巧 >Ceph叢集的使用和操作記錄

Ceph叢集的使用和操作記錄

這裡我們還是基於之前ceph-deploy部署的環境進行測試。直接的部署參考連結:https://www.cnblogs.com/qingbaizhinian/p/14011475.html#_label1_3

之前機器環境參考下面的截圖

1.儲存池的介紹

之前在介紹ceph資源劃分和儲存過程描述的時候,沒有介紹儲存池的概念,這邊我們來介紹一下

1.關於儲存池的概念

Ceph 儲存系統支援“池”概念,它是儲存物件的邏輯分割槽。

Ceph 客戶端從監視器獲取一張叢集執行圖(叢集內的所有監視器、 OSD 、和元資料伺服器節點分佈情況),並把物件寫入儲存池poll。儲存池的 size 或副本數、 CRUSH 規則集和歸置組數量決定著 Ceph 如何放置資料。

儲存池至少可設定以下引數:

  • 物件的所有權/訪問許可權;
  • 歸置組數量;以及,
  • 使用的 CRUSH 規則集。

如果你開始部署叢集時沒有建立儲存池, Ceph 會用預設儲存池存資料。儲存池提供的功能:

  • 自恢復力: 你可以設定在不丟資料的前提下允許多少 OSD 失效,對多副本儲存池來說,此值是一物件應達到的副本數。典型配置儲存一個物件和它的一個副本(即 size = 2 ),但你可以更改副本數;對糾刪編碼的儲存池來說,此值是編碼塊數(即糾刪碼配置裡的 m=2 )。
  • 歸置組: 你可以設定一個儲存池的歸置組數量。典型配置給每個 OSD 分配大約 100 個歸置組,這樣,不用過多計算資源就能得到較優的均衡。配置了多個儲存池時,要考慮到這些儲存池和整個叢集的歸置組數量要合理。
  • CRUSH 規則: 當你在儲存池裡存資料的時候,與此儲存池相關聯的 CRUSH 規則集可控制 CRUSH 演算法,並以此操縱叢集內物件及其副本的複製(或糾刪碼編碼的儲存池裡的資料塊)。你可以自定義儲存池的 CRUSH 規則。
  • 快照:ceph osd pool mksnap 建立快照的時候,實際上建立了某一特定儲存池的快照。
  • 設定所有者: 你可以設定一個使用者 ID 為一個儲存池的所有者。

要把資料組織到儲存池裡,你可以列出、建立、刪除儲存池,也可以檢視每個儲存池的利用率。

2.儲存池儲存資料過程和建議

PG 對映到 OSD

每個儲存池都有很多歸置組, CRUSH 動態的把它們對映到 OSD 。 Ceph 客戶端要存物件時, CRUSH 將把各物件對映到某個歸置組。

把物件對映到歸置組在 OSD 和客戶端間建立了一個間接層。由於 Ceph 叢集必須能增大或縮小、並動態地重均衡。如果讓客戶端“知道”哪個 OSD 有哪個物件,就會導致客戶端和 OSD 緊耦合;相反, CRUSH 演算法把物件對映到歸置組、然後再把各歸置組對映到一或多個 OSD ,這一間接層可以讓 Ceph 在 OSD 守護程序和底層裝置上線時動態地重均衡。下列圖表描述了 CRUSH 如何將物件對映到歸置組、再把歸置組對映到 OSD 。

有了叢集執行圖副本和 CRUSH 演算法,客戶端就能精確地計算出到哪個 OSD 讀、寫某特定物件。

在生產中,一個Pool裡設定的PG數量是預先設定的,PG的數量不是隨意設定,需要根據OSD的個數及副本策略來確定,線上儘量不要更改PG的數量,PG的數量的變更將導致整個叢集動起來(各個OSD之間copy資料),大量資料均衡期間讀寫效能下降嚴重;

預先規劃Pool的規模,設定PG數量;一旦設定之後就不再變更;後續需要擴容就以 Pool 為維度為擴容,通過新增Pool來實現(Pool通過 crushmap實現故障域隔離);

3.儲存池相關命令介紹

#列出叢集中的儲存池,在新安裝好的叢集上,只有一個 rbd 儲存池。但是ceph-deploy安裝的沒有建立建立儲存池
[root@ceph-deploy ~]# ceph osd lspools

  • PG是指定儲存池儲存物件的目錄有多少個,PGP是儲存池PG的OSD分佈組合個數
  • PG的增加會引起PG內的資料進行分裂,分裂到相同的OSD上新生成的PG當中
  • PGP的增加會引起部分PG的分佈進行變化,但是不會引起PG內物件的變動
  • 簡單理解就是我們把PG的值理解成一個口袋,然後口袋裡面裝的是物件資料,然後OSD就相當於一個箱子。物件資料裝入口袋,口袋裝入箱子。
  • 現在物件資料的量是固定的,如果PG設為1個,也就是物件資料都會放在一個口袋裡,然後放在箱子裡,如果

2.塊裝置的快速入門

1.安裝ceph客戶端

Ceph塊裝置,以前稱為RADOS塊裝置,為客戶機提供可靠的、分散式的和高效能的塊儲存磁碟。RADOS塊裝置利用librbd庫並以順序的形式在Ceph叢集中的多個osd上儲存資料塊。RBD是由Ceph的RADOS層支援的,因此每個塊裝置都分佈在多個Ceph節點上,提供了高效能和優異的可靠性。RBD有Linux核心的本地支援,這意味著RBD驅動程式從過去幾年就與Linux核心整合得很好。除了可靠性和效能之外,RBD還提供了企業特性,例如完整和增量快照、瘦配置、寫時複製克隆、動態調整大小等等。RBD還支援記憶體快取,這大大提高了其效能:

任何普通的Linux主機(RHEL或基於debian的)都可以充當Ceph客戶機。客戶端通過網路與Ceph儲存叢集互動以儲存或檢索使用者資料。CephRBD支援已經新增到Linux主線核心中,從2.6.34和以後的版本開始