18 管理儲存池 #
Ceph 將資料儲存在池中。池是用於儲存物件的邏輯群組。如果您先部署叢集而不建立池,Ceph 會使用預設池來儲存資料。下面著重指出與 Ceph 池有關的重要特性:
復原能力:Ceph 池透過複製或編碼其中包含的資料來提供復原能力。可將每個池設定為
replicated
或erasure coding
。對於複本池,您可以進一步設定池中每個資料物件將擁有的複本數。可遺失的複本數 (OSD、CRUSH 桶/葉) 比複本數少一個。您可以使用糾刪碼設定k
和m
的值,其中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=truecephuser@adm >
ceph osd pool delete pool_name pool_name --yes-i-really-really-mean-itcephuser@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_num
和pgp_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
對快取池啟用命中集追蹤。請參閱布隆過濾器以瞭解更多資訊。此選項可用的值如下:
bloom
、explicit_hash
、explicit_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
如果對糾刪碼池啟用此旗標,則讀取要求會向所有分區發出子讀取指令,並一直等到接收到足夠解碼的分區,才會為用戶端提供服務。對於 jerasure 和 isa 糾刪外掛程式,前
K
個複本傳回時,就會使用從這些複本解碼的資料立即處理用戶端的要求。採用此方法會產生較高的 CPU 負載,而磁碟/網路負載則較低。目前,此旗標僅支援用於糾刪碼池。預設值為0
。
18.5.6 設定物件複本數 #
若要設定副本池上的物件複本數,請執行以下指令:
cephuser@adm >
ceph osd pool set poolname size num-replicas
num-replicas 包括物件自身。例如,如果您想用物件和物件的兩個複本組成物件的三個例項,請指定 3。
如果將 num-replicas 設定為 2,資料將只有一個副本。例如,如果一個物件例項發生故障,則需要在復原期間確定自上次整理後,另一個複本沒有損毀 (如需詳細資料,請參閱第 17.6 節 「整理放置群組」)。
將池設定為具有一個複本意味著池中的資料物件只有一個例項。如果 OSD 發生故障,您將遺失資料。若要短時間儲存臨時資料,可能就會用到只有一個副本的池。
為池設定 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」的複本池移轉至糾刪碼池的範例:
建立一個名為「newpool」的新糾刪碼池。如需池建立參數的詳細說明,請參閱第 18.1 節 「建立池」。
cephuser@adm >
ceph osd pool create newpool erasure default確認使用的用戶端金鑰圈所提供的針對「newpool」的功能至少與針對「testpool」的相同。
您現在有兩個池,即填滿資料的原始副本池「testpool」和新的空白糾刪碼池「newpool」:
圖 18.1︰ 移轉前的池 #設定快取層,並將複本池「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-nonemptycephuser@adm >
ceph osd tier cache-mode testpool proxy圖 18.2︰ 快取層設定 #強制快取池將所有物件移到新池中:
cephuser@adm >
rados -p testpool cache-flush-evict-all圖 18.3︰ 資料衝洗 #您需要指定一個重疊層,以便在舊池中搜尋物件,直到所有資料都已衝洗到新的糾刪碼池。
cephuser@adm >
ceph osd tier set-overlay newpool testpool有了重疊層,所有操作都會轉到舊的副本池「testpool」:
圖 18.4︰ 設定重疊層 #現在,您可以將所有用戶端都切換為存取新池中的物件。
所有資料都移轉至糾刪碼池「newpool」後,移除重疊層和舊快取池「testpool」:
cephuser@adm >
ceph osd tier remove-overlay newpoolcephuser@adm >
ceph osd tier remove newpool testpool圖 18.5︰ 完成移轉 #執行
cephuser@adm >
ceph tell mon.* injectargs \ '--mon_debug_unsafe_allow_tier_with_nonempty_snaps=0'
18.6.3 移轉 RBD 影像 #
建議採用如下方式將 RBD 影像從一個複本池移轉至另一個複本池。
禁止用戶端 (例如虛擬機器) 存取 RBD 影像。
在目標池中建立新影像,並將其父項設定為來源影像:
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讓用戶端存取目標池中的影像。
將資料移轉至目標池:
cephuser@adm >
rbd migration execute SRC_POOL/IMAGE移除舊影像:
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_ALGORITHMcephuser@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
可用的值有
none
、zstd
、snappy
。預設值為snappy
。使用的壓縮演算法取決於特定使用案例。以下是一些相關的建議:
只要您沒有充分的理由變更預設值
snappy
,就請使用該值。zstd
可提供較佳的壓縮率,但當壓縮少量資料時,會導致 CPU 負擔較高。針對實際資料的樣本執行這些演算法的基準測試,同時觀察叢集的 CPU 和記憶體使用率。
- compression_mode
可用的值有
none
、aggressive
、passive
、force
。預設值為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
- bluestore_compression_mode
請參閱 compression_mode
- bluestore_compression_required_ratio
- bluestore_compression_min_blob_size
值:不帶正負號的整數,大小以位元組計。預設值:
0
所壓縮物件的最小大小。系統預設會忽略該設定,並使用
bluestore_compression_min_blob_size_hdd
和bluestore_compression_min_blob_size_ssd
的值。如果設定為非零值,則該設定優先。- bluestore_compression_max_blob_size
值:不帶正負號的整數,大小以位元組計。預設值:
0
在將物件分割為更小的區塊之前,所壓縮物件的大小上限。系統預設會忽略該設定,並使用
bluestore_compression_max_blob_size_hdd
和bluestore_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
在將物件分割為更小的區塊之前,在硬碟上壓縮並儲存的物件的大小上限。