典型硬件資源配置建議:後端
組件 | CPU | 內存 | 網絡 | 存儲空間 |
---|---|---|---|---|
Monitor | 1vCore | 2GB | 1x 1GbE+ NICs | 單個Mon 10GB+ |
OSD | 1vCore | BlueStore後端,單個OSD 至少3 GB。裸容量每增長1 TB,則內存相應增長1 GB | 1x 1GbE+ NICs (建議10GbE+) | 一個OSD 對應一塊獨立的硬盤 |
對於採用的BlueStore的Ceph,將SSD 用在合適的地方通常能夠顯著提高性能:緩存
根據採用的硬件和集羣規模,應當對集羣有個大體的性能估算。集羣性能影響因素主要有:硬盤(單個硬盤的性能和硬盤總數)、網絡性能、內存和CPU。其中前兩個是估算集羣總體性能的主要因素,而根據場景,性能主要是IOPS和帶寬。
通常:性能優化
集羣讀取性能:W*n*μ,不管在FileStore仍是BlueStore下 其中, W: 單塊裸盤讀帶寬 n: OSD數量 μ: 損耗係數 通常爲0.7~0.8
集羣寫入性能:[(W*n)/WAF]*μ W: 單塊裸盤寫入帶寬 n: OSD數量 WAF: 寫放大係數 μ: 損耗係數 X: 寫入數據塊大小(KiB) N: 多副本Size大小 K: 糾刪碼K值 M: 糾刪碼M值 FileStore 5: 5KiB, FileStore中transaction元數據的數據量大小(推測值) BlueStore 5: 5KiB, BlueStore中RocksDB的WAL數據大小(推測值) BlueStore 20: 20KiB, BlueStore小文件寫入時產生的Zero-filled數據塊大小
通過對集羣的性能評估,結合主要的影響因素,試着找出性能瓶頸的大方向。網絡
排除硬件瓶頸的可能,則能夠從常見的幾項對照排查修改。性能
使用緩存分層,能夠根據需求在熱層和冷層之間自動遷移數據,從而提升羣集的性能。
採用的cache-tiering的前提是要搞清業務場景,由於cache-tiering 是工做負載相關的,不合適的場景匹配不合適的緩存模式(cache mode)反而會讓總體性能降低。優化
write-back
:Ceph 客戶端寫數據至cache tier,隨後會將數據遷移至storage tier。客戶端讀取數據也是直接讀取cache tier,若cache tier 沒有會從storage tier 中獲取並遷移至cache tier。客戶端的讀寫始終不直接跟storage tier 關聯。 這種模式適用於可變數據的存儲訪問。首先,除storage pool 外,須要建立一個全SSD 的cache pool(經過修改 crushmap)。
根據實際場景:操作系統
必要操做步驟:
1)關聯cache pool 和後端存儲池:ceph osd tier add代理
2)設置cache-mode:ceph osd tier cache-mode writeback日誌
3)將原storage pool的流量指向cache pool:ceph osd tier set-overlaycode
4)必要的緩存閾值設置,全部的請求在達到target_max_bytes 或target_max_objects 設定值時會被阻塞
ceph osd pool set target_max_bytes {#bytes} ceph osd pool set target_max_objects {#objects}
常見配置優化項及建議值,根據實際場景可再作調整。
默認應將RGW Cache 和RBD cache打開。
osd_scrub_begin_hour = 1 #根據業務實際設置在非業務時間scrub osd_scrub_end_hour = 5 osd_recovery_op_priority = 3 osd_client_op_priority = 63 osd_recovery_max_active = 10 osd_recovery_sleep = 0 osd_max_backfills = 10
rgw_cache_enabled = true # 開啓RGW cache rgw_thread_pool_size = 2000 rgw_cache_lru_size = 20000 rgw_num_rados_handles = 128
rbd_cache_enabled = true # 開啓RBD cache rbd_cache_size = 268435456 rbd_cache_max_dirty = 134217728 rbd_cache_max_dirty_age = 5