首頁 > 軟體

Ceph分散式儲存叢集Pool資源池簡介及使用小結

2022-06-01 14:04:00

1.Pool資源池的概念

Pool資源池的官方檔案:https://docs.ceph.com/en/pacific/rados/operations/pools/

Pool資源池是Ceph儲存資料的邏輯分割區,起到Namespace名稱空間的作用,不同的使用者端可以去使用不同的Pool資源池儲存資料,Pool除了可以隔離資料之外,還可以針對不同的Pool資源池設定不同的優化策略,比如副本數、資料淨化次數、資料塊及物件大小等等。

在Pool資源池中會包含一定數量的PG,PG裡的物件會被儲存在不同的OSD中,Pool資源上也是分佈到整個叢集的

一個檔案將資料寫入到Pool資源池的過程:

首先使用者端會從Cluster Map中讀取到叢集各節點的資訊,要寫入儲存的檔案會被拆分成多個Object物件,這些Object物件都會被寫入到Pool資源池中,PG是建立在Pool資源池中的,一個Pool資源池中會有多個PG載體,Object物件檔案最終會被存放在Pool資源池的PG目錄中,最後再通過CRUSH Rule演演算法將資料檔案寫入到不同的OSD中。

Pool資源池與PG載體的關係:

在前面說到過Object物件檔案都是儲存在OSD中的PG目錄中,主要是為了故障遷移時,直接遷移目錄會非常方便。

在這裡提到了Pool資源池的概念,使用者端想要將資料寫入到Ceph儲存中,首先Ceph需要準備一個Pool資源池,為不同的使用者端提供不同的資源池,不同的資源池也可以設定不同的策略。

Pool資源池是建立在OSD之上的邏輯分割區,PG載體是建立在Pool資源池中的,一個Pool資源池中有幾十個甚至幾百個PG載體,還有PGP。

使用者端寫入的檔案被拆分成多個Object物件後,首先會儲存在PG載體中,而PG載體是在Pool資源池中,最後通過CRUSH演演算法寫入到OSD中。

File—>Objec—>PG—>Pool—>OSD

Pool資源池中PG與PGP的關係:

PG是用來存放Object物件的,PGP相當於是PG存放在OSD的一種排列組合。

例如叢集中有三個OSD,分別是OSD-1、OSD-2、OSD-3,如果Pool的副本數為2,PGP的數量為1,那麼所有的PG存放在OSD組合就只有一種情況,例如[OSD-1,OSD-2],此時所有的PG主從副本都會分別存放在OSD-1和OSD-2中,如果PGP的數量為2,那麼PG存放在OSD中的組合就會有兩種情況,例如[OSD-1,OSD-2]和[OSD-1,OSD-3]。

PG的數量要和PGP的數量保持一致。

2.Pool資源池的基本操作

2.1.建立一個Pool資源池

命令格式:ceph osd create pool ${pool-name} ${pg_num} ${pgp_num}

[root@ceph-node-1 ~]# ceph osd pool create ceph-pool-1 64 64
pool 'ceph-pool-1' created

在建立Pool資源池的時候一定要指定pg_num和pgp_num引數,因為Ceph叢集不能自動計算PG的數量。

官方建議的PG使用數量:

  • 叢集中小於5個OSD,則設定PG的數量為128。
  • 叢集有5-10個OSD時,設定PG的數量為512。
  • 叢集中有10-50個OSD時,設定PG的數量為1024.

當叢集中超過50個OSD時,需要權衡PG的數量,有一種公式:

​ (osd_number * 100)

pg_num = ------------------------------

​ pool size

例如叢集有90個OSD,Pool設定的副本數為3:(90*100)÷3=3000

PGP的數量要和PG的數量保持一致。

注意這個PG數量是叢集所能承擔的總PG數量,每個資源池分配多個PG,還需要通過總的PG數乘以資源池佔整個叢集資料比例,最終拿到一個資源池應該分配多少個PG的數量。

2.2.為資源池設定應用模式

其實就是為資源池設定一個分類,有rbd、rgw、cephfs三種。

命令格式:ceph osd pool application enable {pool_name} rbd

[root@ceph-node-1 ~]# ceph osd pool application enable ceph-pool-1 rbd
enabled application 'rbd' on pool 'ceph-pool-1'

2.3.檢視資源池設定的應用模式

[root@ceph-node-1 ~]# ceph osd pool application get ceph-rbd-data
{
    "rbd": {}
}

2.4.檢視OSD所有的資源池

[root@ceph-node-1 ~]# ceph osd lspools
1 ceph-pool-1

2.5.檢視資源池的PG數量和PGP數量

檢視Pool資源池屬性的命令格式;ceph osd pool get {poll_name} [parameter]

檢視pg的數量
[root@ceph-node-1 ~]# ceph osd pool get ceph-pool-1 pg_num
pg_num: 64
檢視pgp的數量
[root@ceph-node-1 ~]# ceph osd pool get ceph-pool-1 pgp_num
pgp_num: 64

2.6.檢視資源池的副本數量

副本數量預設為3個。

[root@ceph-node-1 ~]# ceph osd pool get ceph-pool-1 size
size: 3

2.7.檢視資源池的型別

預設型別為replicated_rule(複製型別)。

[root@ceph-node-1 ~]# ceph osd pool get ceph-pool-2 crush_rule
crush_rule: replicated_rule

2.8.設定資源池的PG數量以及PGP數量

修改Pool資源池屬性的命令格式;ceph osd pool set {poll_name} [parameter]

[root@ceph-node-1 ~]# ceph osd pool set ceph-pool-1 pg_num 128
set pool 1 pg_num to 128

[root@ceph-node-1 ~]# ceph osd pool set ceph-pool-1 pgp_num 128
set pool 1 pgp_num to 128

2.9.設定資源池的副本數量

[root@ceph-node-1 ~]# ceph osd pool set ceph-pool-1 size 2
set pool 1 size to 2

2.10.設定資源池的最大object物件數量

命令格式:ceph osd pool set-quota {pool_name} [max_objects {obj-count}] [max_bytes {bytes}]

[root@ceph-node-1 ~]# ceph osd pool set-quota ceph-pool-1 max_objects 10000
set-quota max_objects = 10000 for pool ceph-pool-1

2.11.重新命名資源池

命令格式:ceph osd pool rename {current-pool-name} {new-pool-name}

[root@ceph-node-1 ~]# ceph osd pool rename ceph-pool-1 ceph-pool-2
pool 'ceph-pool-1' renamed to 'ceph-pool-2'

2.12.檢視資源池的統計資訊

[root@ceph-node-1 ~]# ceph df
RAW STORAGE:
    CLASS     SIZE       AVAIL      USED       RAW USED     %RAW USED 
    hdd       30 GiB     27 GiB     10 MiB      3.0 GiB         10.04 
    TOTAL     30 GiB     27 GiB     10 MiB      3.0 GiB         10.04 
 
POOLS:
    POOL            ID     PGS     STORED     OBJECTS     USED     %USED     MAX AVAIL 
    ceph-pool-2      1     128        0 B           0      0 B         0        13 GiB 

2.13.檢視資源池的利用率

[root@ceph-node-1 ~]# rados df
POOL_NAME   USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED RD_OPS  RD WR_OPS  WR USED COMPR UNDER COMPR 
ceph-pool-2  0 B       0      0      0                  0       0        0      0 0 B      0 0 B        0 B         0 B 

total_objects    0
total_used       3.0 GiB
total_avail      27 GiB
total_space      30 GiB

2.14.刪除資源池

[root@ceph-node-1 ~]# ceph osd pool delete ceph-pool-2 --yes-i-really-really-mean-it

到此這篇關於Ceph分散式儲存叢集Pool資源池的概念以及使用的文章就介紹到這了,更多相關Ceph分散式儲存叢集內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com