Ceph Pools(存儲池)


池是用於存儲對象的邏輯分區。

當您首次部署集群而不創建池時,Ceph 使用默認池來存儲數據。池為您提供:

  • 彈性:您可以設置允許多少 OSD 失敗而不會丟失數據。對於復制池,它是對象的所需副本/副本數。典型配置存儲一個對象和一個附加副本(即size = 2),但您可以確定副本/副本的數量。對於糾刪碼池,它是編碼塊的數量(即在糾刪碼配置文件中m=2)

  • Placement Groups:您可以為池設置歸置組的數量。典型的配置為每個 OSD 使用大約 100 個歸置組來提供最佳平衡,而不會占用太多計算資源。設置多個池時,請注意確保為池和整個集群設置合理數量的歸置組。

  • CRUSH 規則:當您將數據存儲在池中時,對象及其副本(或用於糾刪碼池的塊)在集群中的放置由 CRUSH 規則控制。如果默認規則不適合您的用例,您可以為您的池創建自定義 CRUSH 規則。

  • 快照:當您使用 ceph osd pool mksnap 創建快照時,您可以有效地拍攝特定池的快照。

要將數據組織到池中,您可以列出、創建和刪除池。您還可以查看每個池的利用率統計信息。

列出池

要列出集群的池,請執行:

ceph osd lspools

創建一個池

在創建池之前,請參閱Pool、PG 和 CRUSH 配置參考。理想情況下,您應該覆蓋 Ceph 配置文件中歸置組數量的默認值,因為默認值並不理想。有關歸置組編號的詳細信息,請參閱設置歸置組編號

筆記: 從 Luminous 開始,所有池都需要與使用該池的應用程序相關聯。有關更多信息,請參閱下面的將池關聯到應用程序。

例如:

osd pool default pg num = 100
osd pool default pgp num = 100

要創建池,請執行:

ceph osd pool create {pool-name} [{pg-num} [{pgp-num}]] [replicated] \
     [crush-rule-name] [expected-num-objects]
ceph osd pool create {pool-name} [{pg-num} [{pgp-num}]] erasure \
     [erasure-code-profile] [crush-rule-name] [expected_num_objects] [--autoscale-mode=<on,off,warn>]

在哪里:

描述:池的名稱。它必須是獨一無二的。
類型:String
必需:是的。

描述:池的歸置組總數。 有關計算合適數量的詳細信息,請參閱歸置組。默認值8不適用於大多數系統。
類型:整數
必需:是的。
默認:8

描述:用於放置目的的放置組總數。這 應該等於歸置組的總數,除了歸置組拆分場景。
類型:整數
必需:是的。如果未指定,則獲取默認值或 Ceph 配置值。
默認:8

描述:池類型可以被復制以通過保留對象的多個副本從丟失的 OSD 中恢復,也可以通過擦除來獲得一種通用的 RAID5功能。復制池需要更多的原始存儲,但會實現所有 Ceph 操作。擦除池需要較少的原始存儲,但只實現可用操作的子集。
類型:字符串
必需:否
默認:replicated

  • [crush-rule-name]

描述:用於此池的 CRUSH 規則的名稱。指定的規則必須存在。
類型:字符串
必需:否
默認:對於復制池,它是配置變量osd pool default crush rule指定的規則。這條規則必須存在。對於糾刪池,是否使用糾刪碼配置文件。如果此規則尚不存在,則將隱式創建此規則。

  • [erasure-code-profile=profile]

描述:僅適用於擦除池。使用糾刪碼配置文件。它必須是osd erasure-code-profile set定義的現有配置 文件。
類型:字符串
必需:否

  • --autoscale-mode=<on,off,warn>

描述:自動縮放模式
類型:字符串
必需:否
默認:默認行為由 osd pool default pg autoscale mode 選項控制。

如果您將自動縮放模式設置為on或warn,您可以讓系統自動調整或根據實際使用情況建議更改池中的歸置組數量。如果您不使用它,那么您應該參考歸置組以獲取更多信息。

  • [expected-num-objects]

描述:此池的預期對象數。通過設置此值(連同負文件存儲合並閾值),PG 文件夾拆分將在池創建時發生,以避免執行運行時文件夾拆分的延遲影響。
類型:整數
必需:否
默認:0,在創建池時不拆分。

將池關聯到應用程序

池需要在使用前與應用程序關聯。將與 CephFS 一起使用的池或由 RGW 自動創建的池會自動關聯。應使用該rbd工具初始化旨在與 RBD 一起使用的池(有關更多信息,請參閱塊設備命令)。

對於其他情況,您可以手動將自由格式的應用程序名稱關聯到池。:

ceph osd pool application enable {pool-name} {application-name}

筆記: CephFS 使用應用程序名稱cephfs,RBD 使用應用程序名稱rbd,RGW 使用應用程序名稱rgw。

設置池配額

您可以為每個池的最大字節數和/或最大對象數設置池配額。

ceph osd pool set-quota {pool-name} [max_objects {obj-count}] [max_bytes {bytes}]

例如:

ceph osd pool set-quota data max_objects 10000

要刪除配額,請將其值設置為0。

刪除池

要刪除池,請執行:

ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it]

要刪除池,mon_allow_pool_delete 標志必須在 Monitor 的配置中設置為 true。否則他們將拒絕移除池。

有關詳細信息,請參閱監視器配置。

如果您為創建的池創建了自己的規則,則應考慮在不再需要池時刪除它們:

ceph osd pool get {pool-name} crush_rule

例如,如果規則是“123”,您可以像這樣檢查其他池:

ceph osd dump | grep "^pool" | grep "crush_rule 123"

如果沒有其他池使用該自定義規則,則可以安全地從集群中刪除該規則。

如果您為不再存在的池創建了具有嚴格權限的用戶,您也應該考慮刪除這些用戶:

ceph auth ls | grep -C 5 {pool-name}
ceph auth del {user}

重命名池

要重命名池,請執行:

ceph osd pool rename {current-pool-name} {new-pool-name}

如果您重命名了一個池並且您對經過身份驗證的用戶具有每個池的功能,則必須使用新的池名稱更新用戶的功能(即caps)。

顯示池統計

要顯示池的利用率統計信息,請執行:

rados df

此外,要獲取特定池或所有池的 I/O 信息,請執行:

ceph osd pool stats [{pool-name}]

制作池的快照

要創建池的快照,請執行:

ceph osd pool mksnap {pool-name} {snap-name}

刪除池的快照

要刪除池的快照,請執行:

ceph osd pool rmsnap {pool-name} {snap-name}

設置池值

要將值設置為池,請執行以下命令:

ceph osd pool set {pool-name} {key} {value}

您可以為以下鍵設置值:

  • compression_algorithm

描述:設置用於底層 BlueStore 的內聯壓縮算法。此設置覆蓋 bluestore compression algorithm 的全局設置。
類型:字符串
有效設置:lz4, snappy, zlib,zstd

  • compression_mode

描述:為底層 BlueStore 設置內聯壓縮算法的策略。此設置覆蓋 bluestore compression mode 的全局設置。
類型:字符串
有效設置:none, passive, aggressive,force

  • compression_min_blob_size

描述:比這更小的塊永遠不會被壓縮。此設置覆蓋 bluestore compression min blob * 的全局設置。
類型:無符號整數

  • compression_max_blob_size

描述:compression_max_blob_size比這更大的塊在被壓縮之前被分成更小的塊大小 。
類型:無符號整數

  • size

描述:設置池中對象的副本數。有關詳細信息,請參閱設置對象副本數。僅限復制池。
類型:整數

  • min_size

描述:設置 I/O 所需的最小副本數。有關詳細信息,請參閱設置對象副本數。在糾刪碼池的情況下,這應該設置為大於“k”的值,因為如果我們允許 IO 為“k”值,則沒有冗余,並且在永久 OSD 故障的情況下數據將丟失。有關更多信息,請參閱糾刪碼
類型:整數
版本:0.54以上

  • pg_num

描述:計算數據放置時使用的有效放置組數。
類型:整數
有效范圍:優於pg_num當前值。

  • pgp_num

描述:計算數據放置時要使用的放置組的有效數量。
類型:整數
有效范圍:等於或小於pg_num。

  • crush_rule

描述:用於在集群中映射對象放置的規則。
類型:字符串

  • allow_ec_overwrites

描述:寫入糾刪碼池是否可以更新對象的一部分,因此 cephfs 和 rbd 可以使用它。有關更多詳細信息,請參閱帶有覆蓋的擦除編碼。
類型:布爾值
版本:12.2.0以上

  • hashpspool

描述:在給定池上設置/取消設置 HASHPSPOOL 標志。
類型:整數
有效范圍:1 設置標志,0 取消設置標志

  • nodelete

描述:在給定池上設置/取消設置 NODELETE 標志。
類型:整數
有效范圍:1 設置標志,0 取消設置標志
版本:版本FIXME

  • nopgchange

描述:在給定池上設置/取消設置 NOPGCHANGE 標志。
類型:整數
有效范圍:1 設置標志,0 取消設置標志
版本:版本FIXME

  • nosizechange

描述:在給定池上設置/取消設置 NOSIZECHANE 標志。
類型:整數
有效范圍:1 設置標志,0 取消設置標志
版本:版本FIXME

  • bulk

描述:在給定池上設置/取消設置批量標志。
類型:布爾值
有效范圍:true/1 設置標志,false/0 取消設置標志

  • write_fadvise_dontneed

描述:在給定池上設置/取消設置 WRITE_FADVISE_DONTNEED 標志。
類型:整數
有效范圍:1 設置標志,0 取消設置標志

  • noscrub

描述:在給定池上設置/取消設置 NOSCRUB 標志。
類型:整數
有效范圍:1 設置標志,0 取消設置標志

  • nodeep-scrub

描述:在給定池上設置/取消設置 NODEEP_SCRUB 標志。
類型:整數
有效范圍:1 設置標志,0 取消設置標志

  • hit_set_type

描述:啟用緩存池的命中集跟蹤。有關其他信息,請參閱布隆過濾器。
類型:字符串
有效設置:bloom, explicit_hash,explicit_object
默認:bloom. 其他值用於測試。

  • hit_set_count

描述:為緩存池存儲的命中集數。ceph-osd數字越大,守護程序消耗的 RAM 越多。
類型:整數
有效范圍:1. 代理尚未處理 > 1。

  • hit_set_period

描述:緩存池的命中集持續時間(以秒為單位)。ceph-osd數字越大,守護程序消耗的 RAM 越多 。
類型:整數
例子:3600 1hr

  • hit_set_fpp

描述:bloom命中集類型的誤報概率。有關其他信息,請參閱布隆過濾器。
類型:Double
有效范圍:0.0 - 1.0
默認:0.05

  • cache_target_dirty_ratio

描述:在緩存分層代理將它們刷新到后備存儲池之前,緩存池中包含修改(臟)對象的百分比。
類型:Double
默認:.4

  • cache_target_dirty_high_ratio

描述:在緩存分層代理之前緩存池中包含修改(臟)對象的百分比將以更高的速度將它們刷新到后備存儲池。
類型:Double
默認:.6

  • cache_target_full_ratio

描述:在緩存分層代理將它們從緩存池中逐出之前,緩存池中包含未修改(干凈)對象的百分比。
類型:Double
默認:.8

  • target_max_bytes

描述:Ceph 將在觸發 max_bytes 閾值時開始刷新或驅逐對象 。
類型:整數
例子:1000000000000 #1-TB

  • target_max_objects

描述:Ceph 將在觸發max_objects閾值時開始刷新或驅逐對象 。
類型:整數
例子:1000000 #1M 對象

  • hit_set_grade_decay_rate

描述:兩個連續命中集之間的熱度衰減率
類型:整數
有效范圍:0 - 100
默認:20

  • hit_set_search_last_n

描述:在 hit_sets 中最多計數 N 次出現以進行熱度計算
類型:整數
有效范圍:0 - hit_set_count
默認:1

  • cache_min_flush_age

描述:緩存分層代理將對象從緩存池刷新到存儲池之前的時間(以秒為單位)。
類型:整數
例子:600 10min

  • cache_min_evict_age

描述:緩存分層代理從緩存池中逐出對象之前的時間(以秒為單位)。
類型:整數
例子:1800 30min

  • fast_read

描述:在糾刪碼池上,如果打開此標志,讀取請求將向所有分片發出子讀取,並等待直到它收到足夠的分片來解碼以服務客戶端。在 jerasure 和 isa 擦除插件的情況下,一旦第一個 K 回復返回,客戶端的請求將立即使用從這些回復中解碼的數據提供服務。這有助於權衡一些資源以獲得更好的性能。目前此標志僅支持糾刪碼池。
類型:布爾值
默認值:0

  • scrub_min_interval

描述:負載低時池清理的最小時間間隔(以秒為單位)。如果為 0,則使用 config 中的值 osd_scrub_min_interval。
類型:Double
默認:0

  • scrub_max_interval

描述:池清理的最大間隔(以秒為單位),與集群負載無關。如果為 0,則使用 config 中的值 osd_scrub_max_interval。
類型:Double
默認:0

  • deep_scrub_interval

描述:池“深度”清理的時間間隔(以秒為單位)。如果為 0,則使用 config 中的值 osd_deep_scrub_interval。
類型:Double
默認:0

  • recovery_priority

描述:當設置一個值時,它將增加或減少計算的預留優先級。此值必須在 -10 到 10 的范圍內。對不太重要的池使用負優先級,以便它們的優先級低於任何新池。
類型:整數
默認:0

  • recovery_op_priority

描述:指定此池的恢復操作優先級而不是osd_recovery_op_priority。
類型:整數
默認:0

獲取池值

要從池中獲取值,請執行以下命令:

ceph osd pool get {pool-name} {key}

您可能會獲得以下鍵的值:

  • size

描述:看size
類型:整數

  • min_size

描述:見min_size
類型:整數
版本:0.54以上

  • pg_num

描述:見pg_num
類型:整數

  • pgp_num

描述:見pgp_num
類型:整數
有效范圍:等於或小於pg_num。

  • crush_rule

描述:見crush_rule

  • hit_set_type

描述:見hit_set_type
類型:字符串
有效設置:bloom, explicit_hash,explicit_object

  • hit_set_count

描述:見hit_set_count
類型:整數

  • hit_set_period

描述:見hit_set_period
類型:整數

  • hit_set_fpp

描述:見hit_set_fpp
類型:Double

  • cache_target_dirty_ratio

描述:見cache_target_dirty_ratio
類型:Double

  • cache_target_dirty_high_ratio

描述:見cache_target_dirty_high_ratio
類型:Double

  • cache_target_full_ratio

描述:見cache_target_full_ratio
類型:Double

  • target_max_bytes

描述:見target_max_bytes
類型:整數

  • target_max_objects

描述:見target_max_objects
類型:整數

  • cache_min_flush_age

描述:見cache_min_flush_age
類型:整數

  • cache_min_evict_age

描述:見cache_min_evict_age
類型:整數

  • fast_read

描述:見fast_read
類型:布爾值

  • scrub_min_interval

描述:見scrub_min_interval
類型:Double

  • scrub_max_interval

描述:見scrub_max_interval
類型:Double

  • deep_scrub_interval

描述:見deep_scrub_interval
類型:Double

  • allow_ec_overwrites

描述:見allow_ec_overwrites
類型:布爾值

  • recovery_priority

描述:見recovery_priority
類型:整數

  • recovery_op_priority

描述:見recovery_op_priority
類型:整數

設置對象副本的數量

要設置復制池上的對象副本數,請執行以下命令:

ceph osd pool set {poolname} size {num-replicas}

** 重要: 包括{num-replicas}對象本身。如果您希望對象和對象的兩個副本總共三個對象實例,請指定3.**

例如:

ceph osd pool set data size 3

您可以為每個池執行此命令。** 注意:對象可能會在低於pool size 副本的降級模式下接受 I/O。要設置 I/O 所需的最小副本數,您應該使用該min_size設置。**例如:

ceph osd pool set data min_size 2

這確保了數據池中的任何對象都不會收到少於 min_size副本的 I/O。

獲取對象副本的數量

要獲取對象副本的數量,請執行以下操作:

ceph osd dump | grep 'replicated size'

Ceph 將列出池,並突出顯示 replicated size 屬性。默認情況下,ceph 會為一個對象創建兩個副本(總共三個副本,或者大小為 3)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM