跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Enterprise Storage 7 文件 / 操作和管理指南 / 在叢集中儲存資料 / 管理儲存池
適用範圍 SUSE Enterprise Storage 7

18 管理儲存池

Ceph 將資料儲存在池中。池是用於儲存物件的邏輯群組。如果您先部署叢集而不建立池,Ceph 會使用預設池來儲存資料。下面著重指出與 Ceph 池有關的重要特性:

  • 復原能力:Ceph 池透過複製或編碼其中包含的資料來提供復原能力。可將每個池設定為 replicatederasure coding。對於複本池,您可以進一步設定池中每個資料物件將擁有的複本數。可遺失的複本數 (OSD、CRUSH 桶/葉) 比複本數少一個。您可以使用糾刪碼設定 km 的值,其中 k 表示資料區塊的數量,m 表示編碼區塊的數量。對於糾刪碼池,編碼區塊的數量決定了在不遺失資料的情況下可遺失的 OSD (CRUSH 桶/葉) 數量。

  • 放置群組:您可以設定池的放置群組數。一般的組態為每個 OSD 使用約 100 個放置群組,以提供最佳平衡而又不會耗費太多運算資源。設定多個池時,請務必將池和叢集做為整體進行考量,以確保設定合理的放置群組數。

  • CRUSH 規則:在池中儲存資料時,系統會依據對應至該池的 CRUSH 規則集來放置物件及其複本或區塊 (如果是糾刪碼池)。您可以為池建立自訂 CRUSH 規則。

  • 快照:使用 ceph osd pool mksnap 建立快照時,可高效建立特定池的快照。

若要將資料組織到池中,您可以列出、建立和移除池。您還可以檢視每個池的使用量統計資料。

18.1 建立池

可以建立 replicated (用於保留物件的多個複本,以便從遺失的 OSD 復原) 或 erasure (用於獲得通用 RAID 5 或 6 功能) 類型的池。複本池所需的原始儲存空間較多,而糾刪碼池所需的原始儲存空間較少。預設設定為 replicated。如需糾刪碼池的詳細資訊,請參閱第 19 章 「糾刪碼池

若要建立副本池,請執行以下指令:

cephuser@adm > ceph osd pool create POOL_NAME
注意
注意

自動調整器負責處理剩餘的選擇性引數。有關更詳細的資訊,請參閱第 17.4.12 節 「啟用 PG 自動調整器」

若要建立糾刪碼池,請執行以下指令:

cephuser@adm > ceph osd pool create POOL_NAME erasure CRUSH_RULESET_NAME \
EXPECTED_NUM_OBJECTS

如果超出了每個 OSD 的放置群組限制,則 ceph osd pool create 指令可能會失敗。使用 mon_max_pg_per_osd 選項可設定該限制。

POOL_NAME

池的名稱,必須是唯一的。必須指定此選項。

POOL_TYPE

池類型,可以是 replicated (用於保留物件的多個副本,以便從失敗的 OSD 復原) 或 erasure (用於獲得某種通用 RAID5 功能)。副本池需要的原始儲存較多,但可實作所有 Ceph 操作。糾刪碼池需要的原始儲存較少,但僅實作部分可用的操作。預設 POOL_TYPE 設定為 replicated

CRUSH_RULESET_NAME

此池的 CRUSH 規則集名稱。如果所指定的規則集不存在,則建立複本池的操作將會失敗,並顯示 -ENOENT。對於複本池,它是由 osd pool default CRUSH replicated ruleset 組態變數指定的規則集。此規則集必須存在。對於糾刪碼池,如果使用預設糾刪碼設定檔,則規則集為「erasure-code」,否則為 POOL_NAME。如果此規則集尚不存在,系統將隱式建立該規則集。

erasure_code_profile=profile

僅適用於糾刪碼池。使用糾刪碼設定檔。該設定檔必須是 osd erasure-code-profile set 所定義的現有設定檔。

注意
注意

如果出於任何原因停用了池上的自動調整器 (pg_autoscale_mode 設定為 off),您可以手動計算和設定 PG 數量。如需計算池的適當放置群組數的詳細資料,請參閱第 17.4 節 「放置群組」

EXPECTED_NUM_OBJECTS

此池的預期物件數。如果設定此值 (與一個為負數的 filestore merge threshold 值),系統在建立池時會分割 PG 資料夾。這可避免因執行時期資料夾拆分導致的延遲影響。

18.2 列出池

若要列出叢集的池,請執行以下指令:

cephuser@adm > ceph osd pool ls

18.3 重新命名池

若要重新命名池,請執行以下指令:

cephuser@adm > ceph osd pool rename CURRENT_POOL_NAME NEW_POOL_NAME

如果重新命名了某個池,且為經過驗證的使用者使用了依池能力,則必須用新的池名稱更新使用者的能力。

18.4 刪除池

警告
警告:刪除池的操作不可逆

池中可能包含重要資料。刪除池會導致池中的所有資料消失,且無法復原。

不小心刪除池十分危險,因此 Ceph 實作了兩個機制來防止刪除池。若要刪除池,必須先停用這兩個機制。

第一個機制是 NODELETE 旗標。每個池都有這個旗標,其預設值為「false」。若要確定某個池的此旗標值,請執行以下指令:

cephuser@adm > ceph osd pool get pool_name nodelete

如果指令輸出 nodelete: true,則只有在使用以下指令變更該旗標後,才能刪除池:

cephuser@adm > ceph osd pool set pool_name nodelete false

第二個機制是叢集範圍的組態參數 mon allow pool delete,其預設值為「false」。這表示預設不能刪除池。顯示的錯誤訊息是:

Error EPERM: pool deletion is disabled; you must first set the
mon_allow_pool_delete config option to true before you can destroy a pool

若要規避此安全設定以刪除池,可以暫時將 mon allow pool delete 設定為「true」,刪除池,然後將該參數恢復為「false」:

cephuser@adm > ceph tell mon.* injectargs --mon-allow-pool-delete=true
cephuser@adm > ceph osd pool delete pool_name pool_name --yes-i-really-really-mean-it
cephuser@adm > ceph tell mon.* injectargs --mon-allow-pool-delete=false

injectargs 指令會顯示以下訊息:

injectargs:mon_allow_pool_delete = 'true' (not observed, change may require restart)

這主要用於確認該指令已成功執行。它不是錯誤。

如果為您建立的池建立了自己的規則集和規則,則應該考慮在不再需要該池時移除規則集和規則。

18.5 其他操作

18.5.1 將池與應用程式關聯

在使用池之前,需要將它們與應用程式關聯。將與 CephFS 搭配使用或由物件閘道自動建立的池會自動相關聯。

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

cephuser@adm > ceph osd pool application enable POOL_NAME APPLICATION_NAME
提示
提示:預設應用程式名稱

CephFS 使用應用程式名稱 cephfs,RADOS 區塊裝置使用 rbd,物件閘道使用 rgw

一個池可以與多個應用程式關聯,而每個應用程式都可具有自己的中繼資料。若要列出與池關聯的一個 (或多個) 應用程式,請發出以下指令:

cephuser@adm > ceph osd pool application get pool_name

18.5.2 設定池定額

您可以設定池定額,限定每個池的最大位元組數和/或最大物件數。

cephuser@adm > ceph osd pool set-quota POOL_NAME MAX_OBJECTS OBJ_COUNT MAX_BYTES BYTES

例如:

cephuser@adm > ceph osd pool set-quota data max_objects 10000

若要移除定額,請將其值設定為 0。

18.5.3 顯示池統計資料

若要顯示池的使用量統計資料,請執行以下指令:

cephuser@adm > rados df
 POOL_NAME                    USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED  RD_OPS      RD  WR_OPS      WR USED COMPR UNDER COMPR
 .rgw.root                 768 KiB       4      0     12                  0       0        0      44  44 KiB       4   4 KiB        0 B         0 B
 cephfs_data               960 KiB       5      0     15                  0       0        0    5502 2.1 MiB      14  11 KiB        0 B         0 B
 cephfs_metadata           1.5 MiB      22      0     66                  0       0        0      26  78 KiB     176 147 KiB        0 B         0 B
 default.rgw.buckets.index     0 B       1      0      3                  0       0        0       4   4 KiB       1     0 B        0 B         0 B
 default.rgw.control           0 B       8      0     24                  0       0        0       0     0 B       0     0 B        0 B         0 B
 default.rgw.log               0 B     207      0    621                  0       0        0 5372132 5.1 GiB 3579618     0 B        0 B         0 B
 default.rgw.meta          961 KiB       6      0     18                  0       0        0     155 140 KiB      14   7 KiB        0 B         0 B
 example_rbd_pool          2.1 MiB      18      0     54                  0       0        0 3350841 2.7 GiB     118  98 KiB        0 B         0 B
 iscsi-images              769 KiB       8      0     24                  0       0        0 1559261 1.3 GiB      61  42 KiB        0 B         0 B
 mirrored-pool             1.1 MiB      10      0     30                  0       0        0  475724 395 MiB      54  48 KiB        0 B         0 B
 pool2                         0 B       0      0      0                  0       0        0       0     0 B       0     0 B        0 B         0 B
 pool3                     333 MiB      37      0    111                  0       0        0 3169308 2.5 GiB   14847 118 MiB        0 B         0 B
 pool4                     1.1 MiB      13      0     39                  0       0        0 1379568 1.1 GiB   16840  16 MiB        0 B         0 B

各欄的描述如下:

USED

池使用的位元組數。

OBJECTS

池中儲存的物件數。

CLONES

池中儲存的克隆數。如果在建立快照時某個用戶端向物件寫入資料,系統將會建立原始物件的克隆,而不是對該物件進行修改,這樣便不會修改已建立快照的原始物件內容。

COPIES

物件複本的數量。例如,如果某個複製因數為 3 的複本池有「x」個物件,它通常將會有 3 * x 個複本。

MISSING_ON_PRIMARY

當主 OSD 上的複本缺失時,處於降級狀態 (不是所有複本都存在) 的物件的數量。

UNFOUND

未找到的物件數。

DEGRADED

已降級的物件數。

RD_OPS

針對此池要求的讀取操作總數。

RD

從此池讀取的位元組總數。

WR_OPS

針對此池要求的寫入操作總數。

WR

寫入池的位元組總數。請注意,該數值與池的使用率不同,因為您可能會多次寫入同一物件。如此一來,池的使用率雖然不變,但寫入池的位元組數會增長。

USED COMPR

為壓縮資料配置的位元組數。

UNDER COMPR

壓縮資料在未壓縮時佔用的位元組數。

18.5.4 獲取池值

若要從池中獲取值,請執行以下 get 指令:

cephuser@adm > ceph osd pool get POOL_NAME KEY

您可以獲取第 18.5.5 節 「設定池值」中所列鍵以及下列鍵的值:

PG_NUM

池的放置群組數。

PGP_NUM

計算資料放置時要使用的放置群組的有效數量。有效範圍等於或小於 PG_NUM

提示
提示:池的所有值

若要列出與特定池相關的所有值,請執行以下指令:

 cephuser@adm > ceph osd pool get POOL_NAME all

18.5.5 設定池值

若要設定池的值,請執行以下指令:

cephuser@adm > ceph osd pool set POOL_NAME KEY VALUE

以下是依據池類型排序的池值清單:

通用池值
crash_replay_interval

允許用戶端重送已確認但未提交的要求的秒數。

pg_num

池的放置群組數。如果您將新 OSD 新增至叢集,請確認所有池上專用於新 OSD 的放置群組的值。

pgp_num

計算資料放置時要使用的放置群組的有效數量。

crush_ruleset

用於在叢集中對應物件放置的規則集。

hashpspool

為給定池設定 (1) 或取消設定 (0) HASHPSPOOL 旗標。啟用此旗標會變更演算法,以採用更佳的方式將 PG 分佈到 OSD 之間。對之前 HASHPSPOOL 旗標設為預設值 0 的池啟用此旗標後,叢集會開始回填,以使所有 PG 恢復正確的放置狀態。請注意,此操作可能會在叢集上產生大量 I/O 負載,因此請勿對負載較高的生產叢集啟用該旗標 (由 0 變更為 1)。

nodelete

防止移除池。

nopgchange

防止變更池的 pg_numpgp_num

noscrub、nodeep-scrub

停用 (深層) 整理特定池的資料,以解決暫時性的高 I/O 負載問題。

write_fadvise_dontneed

在給定池的讀取/寫入要求上設定或取消設定 WRITE_FADVISE_DONTNEED 旗標,以繞過將資料放入快取。預設值為 false。適用於複本池和 EC 池。

scrub_min_interval

叢集負載低時整理池的最小間隔 (以秒計)。預設值 0 表示使用來自 Ceph 組態檔案的 osd_scrub_min_interval 值。

scrub_max_interval

無論叢集負載如何都整理池的最大間隔 (以秒計)。預設值 0 表示使用來自 Ceph 組態檔案的 osd_scrub_max_interval 值。

deep_scrub_interval

深層整理池的間隔 (以秒計)。預設值 0 表示使用來自 Ceph 組態檔案的 osd_deep_scrub 值。

複本池值
size

設定池中物件的複本數。如需更多詳細資料,請參閱第 18.5.6 節 「設定物件複本數」。僅限副本池。

min_size

設定 I/O 所需的最小複本數。如需更多詳細資料,請參閱第 18.5.6 節 「設定物件複本數」。僅限副本池。

nosizechange

防止變更池的大小。建立池時,預設值取自 osd_pool_default_flag_nosizechange 參數的值,預設設定為 false。僅適用於複本池,因為無法變更 EC 池的大小。

hit_set_type

對快取池啟用命中集追蹤。請參閱布隆過濾器以瞭解更多資訊。此選項可用的值如下:bloomexplicit_hashexplicit_object。預設值為 bloom,其他值僅用於測試。

hit_set_count

要為快取池儲存的命中集數。該數值越高,ceph-osd 精靈耗用的 RAM 越多。預設值為 0

hit_set_period

快取池的命中集期間的時長 (以秒計)。該數值越高,ceph-osd 精靈耗用的 RAM 越多。建立池時,預設值取自 osd_tier_default_cache_hit_set_period 參數的值,預設設定為 1200。僅適用於複本池,因為 EC 池不能做為快取層使用。

hit_set_fpp

布隆命中集類型的誤報率。請參閱布隆過濾器以瞭解更多資訊。有效範圍是 0.0 - 1.0,預設值為 0.05

use_gmt_hitset

為快取分層建立命中集時,強制 OSD 使用 GMT (格林威治標準時間) 時戳。這可確保在不同時區中的節點傳回相同的結果。預設值為 1。不應該變更此值。

cache_target_dirty_ratio

在快取分層代理程式將已修改 (髒) 物件衝洗到後備儲存池之前,包含此類物件的快取池百分比。預設值為 0.4

cache_target_dirty_high_ratio

在快取分層代理程式將已修改 (髒) 物件衝洗到速度更快的後備儲存池之前,包含此類物件的快取池百分比。預設值為 0.6

cache_target_full_ratio

在快取分層代理程式將未修改 (乾淨) 物件從快取池逐出之前,包含此類物件的快取池百分比。預設值為 0.8

target_max_bytes

觸發 max_bytes 閾值後,Ceph 將會開始衝洗或逐出物件。

target_max_objects

觸發 max_objects 閾值後,Ceph 將會開始衝洗或逐出物件。

hit_set_grade_decay_rate

兩次連續的 hit_set 之間的溫度降低率。預設值為 20

hit_set_search_last_n

計算溫度時在 hit_set 中對出現的項最多計 N 次。預設值為 1

cache_min_flush_age

在快取分層代理程式將物件從快取池衝洗到儲存池之前的時間 (以秒計)。

cache_min_evict_age

在快取分層代理程式將物件從快取池中逐出之前的時間 (以秒計)。

糾刪碼池值
fast_read

如果對糾刪碼池啟用此旗標,則讀取要求會向所有分區發出子讀取指令,並一直等到接收到足夠解碼的分區,才會為用戶端提供服務。對於 jerasureisa 糾刪外掛程式,前 K 個複本傳回時,就會使用從這些複本解碼的資料立即處理用戶端的要求。採用此方法會產生較高的 CPU 負載,而磁碟/網路負載則較低。目前,此旗標僅支援用於糾刪碼池。預設值為 0

18.5.6 設定物件複本數

若要設定副本池上的物件複本數,請執行以下指令:

cephuser@adm > ceph osd pool set poolname size num-replicas

num-replicas 包括物件自身。例如,如果您想用物件和物件的兩個複本組成物件的三個例項,請指定 3。

警告
警告:設定的複本不能少於 3 個

如果將 num-replicas 設定為 2,資料將只有一個副本。例如,如果一個物件例項發生故障,則需要在復原期間確定自上次整理後,另一個複本沒有損毀 (如需詳細資料,請參閱第 17.6 節 「整理放置群組」)。

將池設定為具有一個複本意味著池中的資料物件只有一個例項。如果 OSD 發生故障,您將遺失資料。若要短時間儲存臨時資料,可能就會用到只有一個副本的池。

提示
提示:設定 3 個以上的複本

為池設定 4 個複本可將可靠性提高 25%。

如果有兩個資料中心,您至少需要為池設定 4 個複本,使每個資料中心都有兩個複本。如此,當其中一個資料中心發生故障時,仍有兩個複本存在,並且如果又有一個磁碟發生故障,您仍可確保不會遺失資料。

注意
注意

物件可接受降級模式下複本數量低於 pool size 的 I/O。若要設定 I/O 所需複本的最小數量,您應該使用 min_size 設定。例如:

cephuser@adm > ceph osd pool set data min_size 2

這可確保資料池中沒有物件會接收到複本數量低於 min_size 的 I/O。

提示
提示:獲取物件複本數

若要獲取物件複本數,請執行以下指令:

cephuser@adm > ceph osd dump | grep 'replicated size'

Ceph 將列出池,並反白顯示 replicated size 屬性。Ceph 預設會建立物件的兩個複本 (共三個副本,或者大小為 3)。

18.6 池移轉

建立池 (請參閱第 18.1 節 「建立池」) 時,您需要指定池的初始參數,例如池類型或放置群組數量。如果您稍後決定變更其中的任一參數 (例如將複本池轉換為糾刪碼池,或者減少放置群組數量),您需要將池資料移轉至參數適合您的部署的另一個池。

本節介紹兩種移轉方法:用於一般池資料移轉的快取層方法,以及使用 rbd migrate 子指令將 RBD 影像移轉至新池的方法。每種方法都包含特定設定和限制。

18.6.1 限制

  • 您可以使用快取層方法,從複本池移轉至 EC 池或另一個複本池。不支援從 EC 池移轉。

  • 您無法將 RBD 影像和 CephFS 輸出從複本池移轉至糾刪碼池。原因是 EC 池不支援 omap,而 RBD 和 CephFS 會使用 omap 來儲存其中繼資料。例如,系統將無法衝洗 RBD 的標題物件。但您可以將資料移轉至 EC 池,而將中繼資料保留在複本池中。

  • 使用 rbd migration 方法可確保在移轉影像時最大限度地減少用戶端停機時間。您只需在 prepare 步驟之前停止用戶端,在此之後再將其啟動。請注意,只有支援此功能的 librbd 用戶端 (Ceph Nautilus 或更新版本) 才能在 prepare 步驟之後開啟影像,而較舊的 librbd 用戶端或 krbd 用戶端在執行 commit 步驟之前將無法開啟影像。

18.6.2 使用快取層移轉

該方法的原理十分簡單,只需將需要移轉的池依相反的順序加入快取層中即可。下面是將名為「testpool」的複本池移轉至糾刪碼池的範例:

程序 18.1︰ 將複本池移轉至糾刪碼池
  1. 建立一個名為「newpool」的新糾刪碼池。如需池建立參數的詳細說明,請參閱第 18.1 節 「建立池」

     cephuser@adm > ceph osd pool create newpool erasure default

    確認使用的用戶端金鑰圈所提供的針對「newpool」的功能至少與針對「testpool」的相同。

    您現在有兩個池,即填滿資料的原始副本池「testpool」和新的空白糾刪碼池「newpool」:

    移轉前的池
    圖 18.1︰ 移轉前的池
  2. 設定快取層,並將複本池「testpool」設定為快取池。透過使用 -force-nonempty 選項,即使池已有資料,您也可以新增快取層:

    cephuser@adm > ceph tell mon.* injectargs \
     '--mon_debug_unsafe_allow_tier_with_nonempty_snaps=1'
    cephuser@adm > ceph osd tier add newpool testpool --force-nonempty
    cephuser@adm > ceph osd tier cache-mode testpool proxy
    快取層設定
    圖 18.2︰ 快取層設定
  3. 強制快取池將所有物件移到新池中:

    cephuser@adm > rados -p testpool cache-flush-evict-all
    資料衝洗
    圖 18.3︰ 資料衝洗
  4. 您需要指定一個重疊層,以便在舊池中搜尋物件,直到所有資料都已衝洗到新的糾刪碼池。

    cephuser@adm > ceph osd tier set-overlay newpool testpool

    有了重疊層,所有操作都會轉到舊的副本池「testpool」:

    設定重疊層
    圖 18.4︰ 設定重疊層

    現在,您可以將所有用戶端都切換為存取新池中的物件。

  5. 所有資料都移轉至糾刪碼池「newpool」後,移除重疊層和舊快取池「testpool」:

    cephuser@adm > ceph osd tier remove-overlay newpool
    cephuser@adm > ceph osd tier remove newpool testpool
    完成移轉
    圖 18.5︰ 完成移轉
  6. 執行

    cephuser@adm > ceph tell mon.* injectargs \
     '--mon_debug_unsafe_allow_tier_with_nonempty_snaps=0'

18.6.3 移轉 RBD 影像

建議採用如下方式將 RBD 影像從一個複本池移轉至另一個複本池。

  1. 禁止用戶端 (例如虛擬機器) 存取 RBD 影像。

  2. 在目標池中建立新影像,並將其父項設定為來源影像:

    cephuser@adm > rbd migration prepare SRC_POOL/IMAGE TARGET_POOL/IMAGE
    提示
    提示:僅將資料移轉至糾刪碼池

    如果您只需將影像資料移轉至新的 EC 池,而將中繼資料保留在原始複本池中,請改為執行以下指令:

    cephuser@adm > rbd migration prepare SRC_POOL/IMAGE \
     --data-pool TARGET_POOL/IMAGE
  3. 讓用戶端存取目標池中的影像。

  4. 將資料移轉至目標池:

    cephuser@adm > rbd migration execute SRC_POOL/IMAGE
  5. 移除舊影像:

    cephuser@adm > rbd migration commit SRC_POOL/IMAGE

18.7 池快照

池快照是整個 Ceph 池的狀態快照。透過池快照,您可以保留池狀態的歷程。建立池快照會佔用與池大小成正比的儲存空間。在建立池快照之前,請務必檢查相關儲存是否有足夠的磁碟空間。

18.7.1 建立池快照

若要建立池快照,請執行以下指令:

cephuser@adm > ceph osd pool mksnap POOL-NAME SNAP-NAME

例如:

cephuser@adm > ceph osd pool mksnap pool1 snap1
created pool pool1 snap snap1

18.7.2 列出池快照

若要列出池的現有快照,請執行以下指令:

cephuser@adm > rados lssnap -p POOL_NAME

例如:

cephuser@adm > rados lssnap -p pool1
1	snap1	2018.12.13 09:36:20
2	snap2	2018.12.13 09:46:03
2 snaps

18.7.3 移除池快照

若要移除池的某個快照,請執行以下指令:

cephuser@adm > ceph osd pool rmsnap POOL-NAME SNAP-NAME

18.8 資料壓縮

BlueStore (如需更多詳細資料,請參閱第 1.4 節 「BlueStore」) 提供即時資料壓縮,以節省磁碟空間。壓縮率取決於系統中儲存的資料。請注意,壓縮/解壓縮需要額外的 CPU 資源。

您可以全域設定資料壓縮 (請參閱第 18.8.3 節 「全域壓縮選項」),然後覆寫每個個別池的特定壓縮設定。

無論池是否包含資料,您都可以啟用或停用池資料壓縮,或者隨時變更壓縮演算法和模式。

啟用池壓縮之後,將不會向現有資料套用壓縮。

停用某個池的壓縮之後,將會解壓縮該池的所有資料。

18.8.1 啟用壓縮

若要對名為 POOL_NAME 的池啟用資料壓縮,請執行以下指令:

cephuser@adm > ceph osd pool set POOL_NAME compression_algorithm COMPRESSION_ALGORITHM
cephuser@adm > ceph osd pool set POOL_NAME compression_mode COMPRESSION_MODE
提示
提示:停用池壓縮

若要對池停用資料壓縮,請使用「none」壓縮演算法:

cephuser@adm > ceph osd pool set POOL_NAME compression_algorithm none

18.8.2 池壓縮選項

完整的壓縮設定清單:

compression_algorithm

可用的值有 nonezstdsnappy。預設值為 snappy

使用的壓縮演算法取決於特定使用案例。以下是一些相關的建議:

  • 只要您沒有充分的理由變更預設值 snappy,就請使用該值。

  • zstd 可提供較佳的壓縮率,但當壓縮少量資料時,會導致 CPU 負擔較高。

  • 針對實際資料的樣本執行這些演算法的基準測試,同時觀察叢集的 CPU 和記憶體使用率。

compression_mode

可用的值有 noneaggressivepassiveforce。預設值為 none

  • none:永不壓縮

  • passive:如果提示 COMPRESSIBLE,則壓縮

  • aggressive:除非提示 INCOMPRESSIBLE,才壓縮

  • force:永遠都壓縮

compression_required_ratio

值:雙精度浮點數,比率 = SIZE_COMPRESSED / SIZE_ORIGINAL。預設值為 0.875,這表示如果壓縮未將佔用空間至少減少 12.5%,將不會壓縮物件。

由於淨增益低,儲存高於此比率的物件時不會壓縮。

compression_max_blob_size

值:不帶正負號的整數,大小以位元組計。預設值:0

所壓縮物件的最大大小。

compression_min_blob_size

值:不帶正負號的整數,大小以位元組計。預設值:0

所壓縮物件的最小大小。

18.8.3 全域壓縮選項

可在 Ceph 組態中設定以下組態選項,並將其套用於所有 OSD 而不僅僅是單個池。第 18.8.2 節 「池壓縮選項」中列出的池特定組態優先。

bluestore_compression_algorithm

請參閱 compression_algorithm

bluestore_compression_mode

請參閱 compression_mode

bluestore_compression_required_ratio

請參閱 compression_required_ratio

bluestore_compression_min_blob_size

值:不帶正負號的整數,大小以位元組計。預設值:0

所壓縮物件的最小大小。系統預設會忽略該設定,並使用 bluestore_compression_min_blob_size_hddbluestore_compression_min_blob_size_ssd 的值。如果設定為非零值,則該設定優先。

bluestore_compression_max_blob_size

值:不帶正負號的整數,大小以位元組計。預設值:0

在將物件分割為更小的區塊之前,所壓縮物件的大小上限。系統預設會忽略該設定,並使用 bluestore_compression_max_blob_size_hddbluestore_compression_max_blob_size_ssd 的值。如果設定為非零值,則該設定優先。

bluestore_compression_min_blob_size_ssd

值:不帶正負號的整數,大小以位元組計。預設值:8K

壓縮並儲存在固態硬碟上的物件的最小大小。

bluestore_compression_max_blob_size_ssd

值:不帶正負號的整數,大小以位元組計。預設值:64K

在將物件分割為更小的區塊之前,在固態硬碟上壓縮並儲存的物件的大小上限。

bluestore_compression_min_blob_size_hdd

值:不帶正負號的整數,大小以位元組計。預設值:128K

壓縮並儲存在普通硬碟上的物件的最小大小。

bluestore_compression_max_blob_size_hdd

值:不帶正負號的整數,大小以位元組計。預設值:512K

在將物件分割為更小的區塊之前,在硬碟上壓縮並儲存的物件的大小上限。