目錄
一、存儲池介紹
http://docs.ceph.org.cn/rados/operations/pools/
如果你開始部署集群時沒有創建存儲池, Ceph 會用默認存儲池 rbd
存數據。存儲池提供的功能:
- 自恢復力: 你可以設置在不丟數據的前提下允許多少 OSD 失效,對多副本存儲池來說,此值是一對象應達到的副本數。典型配置存儲一個對象和它的一個副本(即 size = 2 ),但你可以更改副本數;對糾刪編碼的存儲池來說,此值是編碼塊數(即糾刪碼配置里的 m=2 )。
- 歸置組: 你可以設置一個存儲池的歸置組數量。典型配置給每個 OSD 分配大約 100 個歸置組,這樣,不用過多計算資源就能得到較優的均衡。配置了多個存儲池時,要考慮到這些存儲池和整個集群的歸置組數量要合理。
- CRUSH 規則: 當你在存儲池里存數據的時候,與此存儲池相關聯的 CRUSH 規則集可控制 CRUSH 算法,並以此操縱集群內對象及其副本的復制(或糾刪碼編碼的存儲池里的數據塊)。你可以自定義存儲池的 CRUSH 規則。
- 快照: 用 ceph osd pool mksnap 創建快照的時候,實際上創建了某一特定存儲池的快照。
- 設置所有者: 你可以設置一個用戶 ID 為一個存儲池的所有者。
要把數據組織到存儲池里,你可以列出、創建、刪除存儲池,也可以查看每個存儲池的利用率。
二、存儲池命令
1. 列出存儲池
$ rados lspools
rbd
libvirt-pool
$ ceph osd lspools
0 rbd,2 libvirt-pool
在新安裝好的集群上,只有一個 rbd 存儲池。
2. 創建存儲池
ceph osd pool create {pool-name} {pg-num}
pool-name : 存儲池名稱,必須唯一。
pg-num : 存儲池擁有的歸置組總數。
- 少於 5 個 OSD 時可把 pg_num 設置為 128
- OSD 數量在 5 到 10 個時,可把 pg_num 設置為 512
- OSD 數量在 10 到 50 個時,可把 pg_num 設置為 4096
3. 設置存儲池配額
ceph osd pool set-quota {pool-name} [max_objects {obj-count}] [max_bytes {bytes}]
要取消配額,設置為 0 。
4. 刪除存儲池
ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it]
5. 重命名存儲池
ceph osd pool rename {current-pool-name} {new-pool-name}
6. 查看存儲池統計信息
rados df
7. 生成存儲池快照
ceph osd pool mksnap {pool-name} {snap-name}
8. 刪除存儲池快照
ceph osd pool rmsnap {pool-name} {snap-name}
9. 調整存儲池選項值
ceph osd pool set {pool-name} {key} {value}
10. 獲取存儲池選項值
ceph osd pool get {pool-name} {key}
11. 設置對象副本數
設置多副本存儲池的對象副本數:
ceph osd pool set {poolname} size {num-replicas}
Important:{num-replicas} 包括對象自身,如果你想要對象自身及其兩份拷貝共計三份,指定 3 。
確保數據存儲池里任何副本數小於 min_size 的對象都不會收到 I/O :
ceph osd pool set data min_size 2
12. 獲取對象副本數
ceph osd dump | grep 'replicated size'
Ceph 會列出存儲池,且高亮 replicated size 屬性。默認情況下, Ceph 會創建一對象的兩個副本(一共三個副本,或 size 值為 3 )。