全 NVMe 閃存下的 Ceph 集群性能優(yōu)化萬字完整指南
介紹
當(dāng)前,使用全 NVMe 存儲(chǔ)的需求,徹底改變了 Ceph 的存儲(chǔ)能力及其競(jìng)爭(zhēng)領(lǐng)域。多年來,Ceph 憑借能夠使用普通的常規(guī)硬盤(HDD) 以高性價(jià)比的特性被大量使用。這使其成為滿足海量對(duì)象存儲(chǔ)需求的首選。但是,機(jī)械磁盤的物理速度總是限制其性能,當(dāng)涉及到需要極高性能,極高響應(yīng)速度的應(yīng)用場(chǎng)景時(shí),總是不如一些專用的商業(yè)存儲(chǔ)。
NVMe (Non-Volatile Memory Express) 給了 Ceph 一個(gè)比較好的選擇,讓 Ceph 能夠打破性能瓶頸。
當(dāng)將 Ceph 的智能分布式軟件與每秒可以處理數(shù)百萬次作且延遲接近零的 NVMe 存儲(chǔ)相結(jié)合時(shí),我們將得到一個(gè)可以與高端專用的商業(yè)存儲(chǔ)正面交鋒的解決方案。這也為 Ceph 在私有云和混合云中運(yùn)行要求苛刻的應(yīng)用(如大規(guī)模數(shù)據(jù)庫、AI/ML 訓(xùn)練和高性能計(jì)算) 提供了比較好的解決方案。
但要獲得這種性能,并非簡(jiǎn)單地將原來 HDD 舊硬盤換成新 NVMe 驅(qū)動(dòng)器那么簡(jiǎn)單。硬件的原始速度非???,但是,依然會(huì)在系統(tǒng)的其他地方存在一些新的性能瓶頸。如果沒有適當(dāng)?shù)恼{(diào)優(yōu),最終可能只獲得新驅(qū)動(dòng)器的十分之一性能。運(yùn)行一個(gè)高性能的全 NVMe Ceph 集群實(shí)際上是一項(xiàng)挑戰(zhàn):必須在 CPU、網(wǎng)絡(luò)和軟件設(shè)置中找出并消除瓶頸,以充分發(fā)揮閃存存儲(chǔ)的全部性能。
性能潛力
當(dāng)進(jìn)行過正確的架構(gòu)和調(diào)優(yōu)時(shí),全 NVMe Ceph 集群的性能確實(shí)令人驚嘆。最近 Ceph 版本的基準(zhǔn)測(cè)試報(bào)告顯示,其性能已穩(wěn)居高性能存儲(chǔ)之列。
例如,在一個(gè)包含 10 個(gè)節(jié)點(diǎn)、60個(gè) NVMe 驅(qū)動(dòng)器 并運(yùn)行 Ceph Reef 的集群上進(jìn)行的詳細(xì)測(cè)試,產(chǎn)生了一些驚人的結(jié)果。該集群實(shí)現(xiàn)了約 440 萬的隨機(jī)讀取 IOPS(每秒輸入/輸出操作)和 71 GB/s的大文件持續(xù)讀取速度。在數(shù)據(jù)寫入方面,它處理了約 80 萬的隨機(jī)寫入 IOPS。由于 Ceph 默認(rèn)會(huì)為使用三個(gè)副本來確保安全,這實(shí)際上意味著整個(gè)集群的驅(qū)動(dòng)器上發(fā)生了 240 萬次寫入操作。而對(duì)于需要即時(shí)響應(yīng)的應(yīng)用(如數(shù)據(jù)庫),該集群的平均寫入延遲保持在 0.5 毫秒以下。
需要注意的是,這些并非默認(rèn)初始設(shè)置就可以達(dá)到的性能。它們來自一個(gè)特定的、均衡的硬件配置——在本例中是配備 AMD EPYC CPU 和三星 NVMe 驅(qū)動(dòng)器的戴爾服務(wù)器——以及大量稍后將詳細(xì)介紹的精心調(diào)優(yōu)。這些基準(zhǔn)測(cè)試表明,當(dāng)有明確計(jì)劃地構(gòu)建集群時(shí),可以實(shí)現(xiàn)什么。

來源:
Ceph Reef RBD 性能基準(zhǔn): https://ceph.io/en/news/blog/2023/reef-freeze-rbd-performance/
讀取和寫入性能之間的最大差異歸結(jié)為 Ceph 的工作原理。讀取很簡(jiǎn)單:Ceph 只需從一個(gè)主存儲(chǔ)守護(hù)程序 (OSD) 中獲取數(shù)據(jù)。寫入則更復(fù)雜。使用 3 倍復(fù)制時(shí),Ceph 必須將數(shù)據(jù)發(fā)送到主 OSD,然后主 OSD 將其復(fù)制到其他兩個(gè) OSD。在將寫入標(biāo)記為完成之前,它必須得到所有 OSD 的確認(rèn)。這一點(diǎn),再加上 Ceph 的 BlueStore 后端為管理元數(shù)據(jù)所做的工作,使得寫入數(shù)據(jù)自然比讀取數(shù)據(jù)慢。 基準(zhǔn)測(cè)試清楚地顯示了這一點(diǎn) ,隨機(jī)操作的讀取速度是寫入的五倍以上,大文件的讀取速度也快了近三倍。
通過這些,我們可以知道該集群適合那些場(chǎng)景。全 NVMe Ceph 非常適合數(shù)據(jù)分析、內(nèi)容交付網(wǎng)絡(luò) (CDN) 和 AI 推理等讀取密集型工作。對(duì)于數(shù)據(jù)庫或日志記錄等寫入密集型任務(wù),它仍然非???,但需要確保性能是否是該應(yīng)用期望的寫入性能值,以盡可能提高寫入效率。我們的目標(biāo)不僅僅是購買更高性能的硬件,而是從一開始就構(gòu)建一個(gè)完整的高性能存儲(chǔ)系統(tǒng)。
基礎(chǔ):實(shí)現(xiàn)最佳性能的硬件和架構(gòu)
在傳統(tǒng)的的 Ceph 集群中,瓶頸幾乎總是驅(qū)動(dòng)器本身。而在全 NVMe 集群中,情況正好相反。NVMe 驅(qū)動(dòng)器速度非???,以至于影響性能壓力往往是服務(wù)器的其他方面:CPU、內(nèi)存和網(wǎng)絡(luò)。這意味著我們必須采用相對(duì)均衡的方法來設(shè)計(jì)集群,選擇每個(gè)組件以支持 NVMe 驅(qū)動(dòng)器可以實(shí)現(xiàn)的大量 I/O。
CPU: 存儲(chǔ)的新引擎
使用 NVMe,CPU 不再僅僅是運(yùn)行操作系統(tǒng),它也在主動(dòng)驅(qū)動(dòng)存儲(chǔ)。每一次 I/O 操作都需要 CPU。Ceph 的算法需要計(jì)算數(shù)據(jù)存放位置,糾刪碼需要數(shù)學(xué)計(jì)算來創(chuàng)建校驗(yàn)位,校驗(yàn)和的計(jì)算是為了保證數(shù)據(jù)安全,而 BlueStore 后端使用的名為 RocksDB 的數(shù)據(jù)庫也需要 CPU 算力來處理元數(shù)據(jù)。
測(cè)試表明,速度與為每個(gè) NVMe 驅(qū)動(dòng)器分配的 CPU 線程數(shù)成正比。在 Ceph Reef 版本中,單個(gè) OSD 在大約 14-16 個(gè) CPU 線程后性能提升就不再明顯(https://docs.clyso.com/blog/reef-osds-per-nvme/)。這意味著需要具有大量核心的 CPU 來處理一臺(tái)服務(wù)器上的多個(gè) OSD。由 Clyso 構(gòu)建的破紀(jì)錄的 1 TiB/s 集群(https://www.clyso.com/us/a-journey-to-1-tib-s-a-milestone-in-performance/),在其 68 個(gè)節(jié)點(diǎn)中的每一個(gè)都使用了強(qiáng)大的 48 核 AMD EPYC 9454P CPU,以獲得同時(shí)運(yùn)行數(shù)百個(gè) NVMe OSD 所需的并行處理能力(稍后會(huì)詳細(xì)介紹)。在全 NVMe 構(gòu)建中試圖節(jié)省 CPU 開銷,是導(dǎo)致集群緩慢、瓶頸的必然因素。
存儲(chǔ)驅(qū)動(dòng)器:企業(yè)級(jí)是硬性要求
構(gòu)建全 NVMe Ceph 集群時(shí),最大且代價(jià)最高的錯(cuò)誤之一是使用消費(fèi)級(jí) NVMe 驅(qū)動(dòng)器。它們前期看起來可能更便宜,但它們?nèi)鄙倨髽I(yè)存儲(chǔ)絕對(duì)必需的兩樣?xùn)|西:寫入耐久性和掉電保護(hù)(PLP)。
企業(yè)應(yīng)用,尤其是在像 Ceph 這樣總是在后臺(tái)工作的系統(tǒng)上,可能是寫入密集型的。企業(yè)級(jí) SSD 為此而生,企業(yè)級(jí) SSD 有一個(gè)“每日驅(qū)動(dòng)器寫入次數(shù)”(DWPD)的評(píng)級(jí),這個(gè)會(huì)表明在其 5 年保修期內(nèi),每天可以向整個(gè)驅(qū)動(dòng)器寫入多少次。以讀取為主的的企業(yè)級(jí)驅(qū)動(dòng)器通常 DWPD 低于 1,混合用途驅(qū)動(dòng)器評(píng)級(jí)為 1 到 3,而以寫入為主的可以超過 3。
更重要的是掉電保護(hù)。企業(yè)級(jí)驅(qū)動(dòng)器板載電容器,在斷電時(shí),能提供足夠的電力將驅(qū)動(dòng)器臨時(shí)緩存中的數(shù)據(jù)保存到永久閃存中。沒有這個(gè)功能,可能會(huì)丟失正在寫入過程中的數(shù)據(jù),導(dǎo)致靜默數(shù)據(jù)損壞。這對(duì)于依賴其日志和元數(shù)據(jù)完整性的 Ceph BlueStore 來說是致命的。正如一位在 Reddit 上嘗試使用消費(fèi)級(jí)驅(qū)動(dòng)器的用戶發(fā)現(xiàn)的那樣,結(jié)果是“平庸”的速度和在任何實(shí)際寫入負(fù)載下都“飆升”的延遲(https://www.reddit.com/r/ceph/comments/mp121c/ceph_nvme/)。
網(wǎng)絡(luò):集群的核心
網(wǎng)絡(luò)是 Ceph 集群的神經(jīng)系統(tǒng)。它處理從客戶端流量和數(shù)據(jù)復(fù)制到重新平衡,以及最重要的——故障后恢復(fù)的所有事情。10GbE/10Gbps 網(wǎng)絡(luò)可能是生產(chǎn)環(huán)境的最低要求,但對(duì)于全 NVMe 集群來說遠(yuǎn)遠(yuǎn)不夠。基準(zhǔn)測(cè)試表明,單個(gè)客戶端讀取大文件就可以完全占滿一個(gè) 10GbE 鏈接。
對(duì)于嚴(yán)格的全 NVMe Ceph 集群的配置,都需要 25GbE、40GbE 甚至 100GbE 的網(wǎng)絡(luò)。達(dá)到 1 TiB/s 的集群在每個(gè)節(jié)點(diǎn)中都使用了兩張 100GbE 網(wǎng)卡,這表示在極高性能場(chǎng)景下需要什么樣的帶寬。網(wǎng)絡(luò)速度不高快在恢復(fù)期間會(huì)成為最大的問題。當(dāng)一個(gè)驅(qū)動(dòng)器或服務(wù)器發(fā)生故障時(shí),Ceph 開始將其數(shù)據(jù)復(fù)制到集群中的其他地方以恢復(fù)完全冗余。這會(huì)跑滿網(wǎng)絡(luò)。較慢的網(wǎng)絡(luò)會(huì)使這個(gè)恢復(fù)窗口變得更長,使集群處于危險(xiǎn)的降級(jí)狀態(tài),并增加再次故障導(dǎo)致數(shù)據(jù)丟失的風(fēng)險(xiǎn)。
合理的硬件
選擇一個(gè)適合的硬件環(huán)境是非常重要的,也是實(shí)現(xiàn)超高性能存儲(chǔ)的必備條件,這也是本文的目的。本文也將提供已經(jīng)經(jīng)過驗(yàn)證并準(zhǔn)備好應(yīng)對(duì)嚴(yán)苛的 OpenStack 和 Ceph 工作負(fù)載的硬件配置。像“Large”和“XL”這樣的服務(wù)器選項(xiàng)提供了一個(gè)堅(jiān)實(shí)的基礎(chǔ),配備了高核心數(shù) CPU(16-32 核)、充足的 RAM(1TB)以及對(duì)每個(gè)服務(wù)器多個(gè) NVMe 驅(qū)動(dòng)器的支持。對(duì)于存儲(chǔ)密集型需求,像 Large v3 這樣的服務(wù)器混合了高容量 HDD 和 NVMe 閃存選項(xiàng)以加快速度。具體配置如下:
Large V2/V3/V4
- 16 核,32 線程
- 512GB 內(nèi)存
- 2 個(gè) 6.4 TB NVMe SSD(每臺(tái)服務(wù)器最多 6 個(gè))
- 20Gbps 上行鏈路
XL V2/V3/V4
- 32 核,64 線程
- 1TB 內(nèi)存
- 4 個(gè) 6.4 TB NVMe SSD(每臺(tái)服務(wù)器最多 10 個(gè))
- 20Gbps 上行鏈路
通過上述提供的這些預(yù)先驗(yàn)證的配置,免去了硬件選擇的復(fù)雜性。下面就可以在一個(gè)準(zhǔn)備好用于高性能私有云的平臺(tái)上進(jìn)行部署,從而避免一些可能導(dǎo)致系統(tǒng)緩慢和不穩(wěn)定的常見錯(cuò)誤。
硬件選擇決定了集群的性能上限。再多的軟件調(diào)優(yōu)也無法彌補(bǔ) CPU 性能不足、網(wǎng)絡(luò)緩慢或驅(qū)動(dòng)器不可靠的問題。頂級(jí)基準(zhǔn)測(cè)試始終使用高核心數(shù) CPU 和 100GbE 網(wǎng)絡(luò)說明了一個(gè)明確的情況:頂級(jí)性能需要頂級(jí)硬件。這也需要成為預(yù)算規(guī)劃的一部分。試圖在 CPU 或網(wǎng)絡(luò)上省錢來購買更多 NVMe 容量,只會(huì)留下一個(gè)不平衡的系統(tǒng),無法滿足對(duì)性能的期望。
關(guān)于集群的物理設(shè)計(jì),還有一個(gè)重要的選擇要做?,F(xiàn)代服務(wù)器可以容納十個(gè)或更多的 NVMe 驅(qū)動(dòng)器,這帶來了一個(gè)需要思考的新問題:服務(wù)器故障的“影響范圍”。存儲(chǔ)密集的節(jié)點(diǎn)更便宜,但如果其中一臺(tái)服務(wù)器發(fā)生故障,會(huì)引發(fā)大規(guī)模的數(shù)據(jù)恢復(fù)事件。據(jù)估計(jì),從一臺(tái)丟失的 60 驅(qū)動(dòng)器服務(wù)器中恢復(fù)可能需要長達(dá)兩個(gè)月的時(shí)間,在此期間,集群一直處于高風(fēng)險(xiǎn)狀態(tài)。這迫使我們必須在更少、更密集的節(jié)點(diǎn)(前期成本更低,但風(fēng)險(xiǎn)更高)和更多、密度更低的節(jié)點(diǎn)(成本更高,但風(fēng)險(xiǎn)更低、恢復(fù)更快)之間做出選擇。這個(gè)決定不僅僅是涉及性能的考量,也是一個(gè)成本與風(fēng)險(xiǎn)的綜合考量。
性能調(diào)優(yōu):系統(tǒng)和 Ceph 級(jí)別調(diào)優(yōu)
第一步是從最基礎(chǔ)的企業(yè)級(jí)硬件開始。但是,要讓系統(tǒng)以及應(yīng)用程序獲取硬件的實(shí)際性能,需要進(jìn)行一些針對(duì)性的調(diào)優(yōu)。這些調(diào)優(yōu)(范圍從服務(wù)器的 BIOS 到 Ceph 的配置文件)區(qū)分普通集群和高性能集群的關(guān)鍵。通常,最大的好處是來自 Ceph 本身之外進(jìn)行的更改。
系統(tǒng)級(jí)調(diào)優(yōu)
在啟動(dòng) Ceph 進(jìn)程之前,通過最基礎(chǔ)的兩個(gè)優(yōu)化,可以獲取明顯的性能提升。這兩個(gè)最有效的更改是:關(guān)閉旨在節(jié)省電源和管理設(shè)備的功能,因?yàn)樗鼈儠?huì)增加延遲,這對(duì)高性能存儲(chǔ)系統(tǒng)不利。
禁用 CPU 節(jié)能 (C-states)
現(xiàn)代 CPU 使用 C-states 的節(jié)能模式,在空閑時(shí)消耗更少的資源。當(dāng) CPU 核心無事可做時(shí),操作系統(tǒng)可以將其置于“睡眠”狀態(tài)(C1、C2 等),關(guān)閉其時(shí)鐘和緩存等部分以節(jié)省電力。這對(duì)于臺(tái)式機(jī)來說哼不錯(cuò),但對(duì)于需要始終保持快速的存儲(chǔ)系統(tǒng)來說,卻是性能殺手。
CPU 從深度 C-state “喚醒”的過程不是瞬時(shí)的;它會(huì)增加一個(gè)微小但關(guān)鍵的延遲。對(duì)于像 Ceph 這樣需要在微秒內(nèi)響應(yīng)請(qǐng)求的存儲(chǔ)系統(tǒng),這種喚醒延遲會(huì)使性能不一致。我們可以發(fā)現(xiàn),僅僅在服務(wù)器 BIOS 中關(guān)閉 C-states,就立即為他們帶來了 10-20% 的性能提升。對(duì)于任何全 NVMe Ceph 配置,將 CPU 設(shè)置為“性能”模式并禁用 C-states 是必須做的第一步。
禁用 IOMMU (VT-d/AMD-Vi)
輸入/輸出內(nèi)存管理單元(IOMMU)是一種硬件功能,它為設(shè)備創(chuàng)建一個(gè)虛擬內(nèi)存層。它允許將設(shè)備直接傳遞給虛擬機(jī),并保護(hù)系統(tǒng)內(nèi)存免受故障設(shè)備的影響。
但這種保護(hù)是有代價(jià)的。IOMMU 必須為每一次 I/O 操作轉(zhuǎn)換內(nèi)存地址,這會(huì)給每個(gè)請(qǐng)求增加一點(diǎn)開銷和延遲。在一個(gè)受信任的、專用的存儲(chǔ)環(huán)境中,這個(gè)轉(zhuǎn)換層是一個(gè)不必要的性能損失。Clyso 團(tuán)隊(duì)發(fā)現(xiàn)大量 CPU 時(shí)間被浪費(fèi)在與 IOMMU 相關(guān)的操作上。在內(nèi)核級(jí)別關(guān)閉 IOMMU,通過消除這種開銷,為他們帶來了“實(shí)質(zhì)性的性能提升”。雖然這不適用于所有環(huán)境,但對(duì)于裸機(jī)、以性能為中心的 Ceph 集群來說,這是一個(gè)關(guān)鍵的優(yōu)化。
一個(gè) NVMe,到底該配幾個(gè) OSD?
對(duì) Ceph 而言,做出的最大調(diào)優(yōu)決策之一是在每個(gè) NVMe 驅(qū)動(dòng)器上運(yùn)行多少個(gè) OSD 守護(hù)進(jìn)程。過去,由于閃存速度較慢,因此每個(gè)驅(qū)動(dòng)器運(yùn)行多個(gè) OSD 是提高其性能的好方法。對(duì)于當(dāng)今的超高速 NVMe 驅(qū)動(dòng)器和現(xiàn)代 Ceph,選擇變得更加復(fù)雜。這是原始速度和一致延遲之間的直接權(quán)衡 。
使用 Ceph Reef 的測(cè)試顯示了兩種主要策略:
- 每個(gè) NVMe 一個(gè) OSD:這是最簡(jiǎn)單的設(shè)置。它通常提供寫入大型順序文件的最佳速度,并且在 CPU 上更容易。如果集群沒有大量額外的 CPU 能力,或者主要作業(yè)是流式傳輸大文件,例如用于視頻存儲(chǔ)或備份,則建議使用此默認(rèn)值。
- 每個(gè) NVMe 兩個(gè) OSD:此設(shè)置需要更多的 CPU 和內(nèi)存,但對(duì)于對(duì)延遲敏感的應(yīng)用程序來說,它有很大的優(yōu)勢(shì)。測(cè)試表明,每個(gè)驅(qū)動(dòng)器運(yùn)行兩個(gè) OSD 可以將第 99 個(gè)百分位的尾部延遲減少一半。它還可以在 CPU 密集型環(huán)境中獲得更多 IOPS(例如,如果每個(gè) NVMe 驅(qū)動(dòng)器有 16 個(gè)或更多 CPU 線程)。這使其成為虛擬桌面 (VDI) 或數(shù)據(jù)庫等的更好選擇,在這些應(yīng)用中,可預(yù)測(cè)的快速響應(yīng)時(shí)間比獲得絕對(duì)的最大吞吐量更重要。
這里沒有正確或錯(cuò)誤的答案。這是關(guān)于將集群的設(shè)置與主要應(yīng)用程序的需求相匹配。我們必須了解,優(yōu)化平均延遲與優(yōu)化尾部延遲不同,后者是用戶的實(shí)際感受。
必要的 ceph.conf和 BlueStore 設(shè)置
除了 OSD 布局之外,其他一些 Ceph 設(shè)置也是性能的關(guān)鍵:
- 內(nèi)存分配: BlueStore 后端使用大量內(nèi)存來緩存元數(shù)據(jù)。ceph.conf 文件中的 osd_memory_target 設(shè)置應(yīng)為每個(gè) OSD 至少 8GB,以確保它有足夠的內(nèi)存來工作,而不必不斷從速度較慢的驅(qū)動(dòng)器中讀取數(shù)據(jù)。如果有足夠的 RAM,則分配更多的內(nèi)存可以進(jìn)一步提高性能。
- RocksDB 編譯:在高性能測(cè)試期間發(fā)現(xiàn)的一個(gè)棘手問題是,某些 Linux 發(fā)行版的標(biāo)準(zhǔn) Ceph 軟件包沒有使用 RocksDB 的最佳設(shè)置進(jìn)行編譯。這會(huì)導(dǎo)致數(shù)據(jù)庫作變慢和寫入性能受限。為了獲得頂級(jí)性能,必須確保 Ceph 是使用優(yōu)化的 RocksDB 構(gòu)建的。
- 網(wǎng)絡(luò)配置:在集群的內(nèi)部網(wǎng)絡(luò)上, 通過將 MTU(最大傳輸單位)設(shè)置為 9000 來啟用巨型幀是一種標(biāo)準(zhǔn)的最佳實(shí)踐。這樣,可以在每個(gè)網(wǎng)絡(luò)數(shù)據(jù)包中發(fā)送更多數(shù)據(jù),從而減少需要處理的數(shù)據(jù)包數(shù)量并降低 CPU 使用率。
以下是這些基本調(diào)優(yōu)設(shè)置的快速清單,可幫助用戶充分調(diào)優(yōu)全 NVMe Ceph 集群。

實(shí)際結(jié)果:簡(jiǎn)解 1 TiB/s Ceph 集群
基準(zhǔn)測(cè)試和優(yōu)化指南是一個(gè)不錯(cuò)的開始,但真正的考驗(yàn)是了解這些在真實(shí)的環(huán)境中是如何工作的。2024 年初,Ceph 咨詢公司 Clyso 的一個(gè)團(tuán)隊(duì)承擔(dān)了一個(gè)項(xiàng)目,該項(xiàng)目突破了人們認(rèn)為 Ceph 可能的極限。他們構(gòu)建并優(yōu)化了一個(gè)全 NVMe 集群,打破了 1 TB/秒 (TiB/s) 的速度限制 (https://www.clyso.com/us/a-journey-to-1-tib-s-a-milestone-in-performance/),為我們提供了高性能存儲(chǔ)方面的強(qiáng)大案例研究。
挑戰(zhàn)和硬件
目標(biāo)很宏大:將現(xiàn)有的基于 HDD 的集群遷移到新的 10 PB 全 NVMe 設(shè)置,而無需任何停機(jī)時(shí)間。他們使用的硬件令人印象深刻。最終設(shè)置有 68 臺(tái) Dell PowerEdge R6615 服務(wù)器。每臺(tái)服務(wù)器都是一個(gè)性能野獸,配備一個(gè) 48 核 AMD EPYC 9454P CPU、192GiB DDR5 RAM、兩個(gè) 100GbE Mellanox 網(wǎng)卡和十個(gè) 15.36TB 戴爾企業(yè)級(jí) NVMe 驅(qū)動(dòng)器。該硬件因其高內(nèi)存帶寬、大量 CPU 內(nèi)核和極快的網(wǎng)絡(luò)速度而被特別選擇,從而構(gòu)建了一個(gè)可以跟上快速驅(qū)動(dòng)器的超高性能集群。
從失望到突破
即使擁有所有這些強(qiáng)大的硬件, 第一次測(cè)試也令人大失所望 。性能遠(yuǎn)低于他們的預(yù)期,更糟糕的是,它不一致。它會(huì)隨著時(shí)間的推移而變慢,只有在完全重啟后才會(huì)變得更好。這導(dǎo)致了一項(xiàng)深入調(diào)查,發(fā)現(xiàn)了幾個(gè)棘手的系統(tǒng)級(jí)瓶頸。他們找到的修復(fù)程序證明,我們討論的優(yōu)化策略確實(shí)有效:
- 問題:延遲尖峰。第一個(gè)問題是不一致的延遲,這扼殺了性能。
- 解決方案:禁用 C-States。 團(tuán)隊(duì)正確地猜測(cè)到 CPU 節(jié)能狀態(tài)導(dǎo)致了喚醒延遲。在 BIOS 中關(guān)閉 C-states,通過確保 CPU 始終處于活動(dòng)和就緒狀態(tài),立即為他們帶來了 10-20% 的性能提升。
- 問題:內(nèi)核級(jí)瓶頸。 即使關(guān)閉了 C-states,性能仍然沒有達(dá)到應(yīng)有的水平。使用內(nèi)核級(jí)工具進(jìn)行更深入的觀察顯示,大量時(shí)間被浪費(fèi)在內(nèi)核操作上。
- 解決方案:禁用 IOMMU。 團(tuán)隊(duì)將此問題追溯到 IOMMU。通過使用內(nèi)核啟動(dòng)設(shè)置將其關(guān)閉,他們消除了每次 I/O 操作的地址轉(zhuǎn)換開銷,這帶來了另一次“實(shí)質(zhì)性的性能提升”,尤其是在他們添加更多 NVMe 驅(qū)動(dòng)器時(shí)。
- 問題:寫入性能差。 最后一個(gè)主要問題是出奇地慢的 4K 隨機(jī)寫入性能。
- 解決方案:修復(fù) RocksDB 編譯。 調(diào)查發(fā)現(xiàn),他們使用的標(biāo)準(zhǔn) Ceph 軟件包沒有使用 RocksDB(驅(qū)動(dòng) BlueStore 的數(shù)據(jù)庫)的最佳設(shè)置進(jìn)行編譯。通過使用正確的設(shè)置重新編譯 Ceph,RocksDB 的內(nèi)部清理時(shí)間下降了,4K 隨機(jī)寫入性能基本上翻了一番。
這段歷程揭示了一個(gè)關(guān)鍵點(diǎn):獲得頂級(jí)性能不是一個(gè)簡(jiǎn)單的“安裝即用”的工作。它需要數(shù)據(jù)驅(qū)動(dòng)的問題解決、深入的系統(tǒng)知識(shí),以及愿意超越 Ceph 自身的設(shè)置,去審視底層的操作系統(tǒng)和硬件。
結(jié)果:將Ceph 推向極限
隨著這些修復(fù)措施的到位,集群的真正潛力終于被釋放出來。結(jié)果為 Ceph 的性能創(chuàng)下了新的公開記錄:
- 3 倍復(fù)制性能: 在其使用 3 倍復(fù)制的最快配置中,這個(gè) 63 節(jié)點(diǎn)、630 OSD 的集群實(shí)現(xiàn)了令人難以置信的 1025 GiB/s(略高于 1 TiB/s)的大文件讀取速度。對(duì)于小文件隨機(jī)讀取,它達(dá)到了 2550 萬 4K IOPS。這些數(shù)字表明,一個(gè)經(jīng)過良好調(diào)優(yōu)的大規(guī)模 Ceph 集群,其性能可以與最先進(jìn)的專有存儲(chǔ)系統(tǒng)相媲美。
- 糾刪碼性能: 團(tuán)隊(duì)隨后重新配置了集群,以使用 6+2 糾刪碼(EC)配置文件,這是客戶計(jì)劃用來獲得最大存儲(chǔ)效率的設(shè)置。即使有 EC 的額外工作,集群仍然提供了驚人的性能:讀取超過 500 GiB/s,寫入近 400 GiB/s。
這個(gè)案例研究為我們提供了一個(gè)寶貴的真實(shí)場(chǎng)景,讓我們了解了在全 NVMe 平臺(tái)上復(fù)制和糾刪碼之間的性能權(quán)衡。雖然 3 倍復(fù)制提供了絕對(duì)最佳的讀取性能,但糾刪碼以仍然巨大的速度(尤其是對(duì)于寫入)提供了巨大的存儲(chǔ)效率。
NVMe 上的 EC 性能與它在 HDD 上的表現(xiàn)完全不同。在機(jī)械磁盤上,EC 帶來的隨機(jī) I/O 沖擊通常難以承受。但在 NVMe 上,驅(qū)動(dòng)器速度非???,以至于計(jì)算校驗(yàn)和的 CPU 成本以及與多個(gè)節(jié)點(diǎn)通信的網(wǎng)絡(luò)成本成為新的瓶頸。
Clyso 的基準(zhǔn)測(cè)試發(fā)現(xiàn)了一些可能看起來與我們默認(rèn)理解相反的事情:在這個(gè)規(guī)模集群上,EC 寫入比復(fù)制寫入快得多。這是因?yàn)?EC 寫入同時(shí)分布在許多節(jié)點(diǎn)(K+M 個(gè)節(jié)點(diǎn))上,而復(fù)制寫入則受限于逐個(gè)寫入三個(gè)節(jié)點(diǎn)的過程。另一方面,EC 讀取比復(fù)制讀取慢(500 GiB/s vs. 1 TiB/s)。EC 讀取必須從多個(gè)(K 個(gè))OSD 獲取數(shù)據(jù),并由客戶端的 CPU 將原始對(duì)象重新組合起來,這比從復(fù)制池中的單個(gè) OSD 進(jìn)行簡(jiǎn)單讀取產(chǎn)生了更多的網(wǎng)絡(luò)流量和工作。對(duì)于任何構(gòu)建高性能、全 NVMe Ceph 集群并使用糾刪碼的人來說,這是一個(gè)關(guān)鍵的設(shè)計(jì)選擇。
速度的經(jīng)濟(jì)性:TCO 和成本效益
采用全 NVMe 存儲(chǔ)的最大障礙一直是成本。如果只看前期價(jià)格,以每 GB 美元 ($/GB) 為單位,與傳統(tǒng)的 HDD 系統(tǒng)相比,全閃存解決方案似乎太昂貴了。但這并不代表所有。完整的總擁有成本 (TCO) 分析,應(yīng)該還包括電力、冷卻、機(jī)架空間和管理時(shí)間等運(yùn)營成本。對(duì)于性能要求高的工作負(fù)載,全 NVMe Ceph 可能是一個(gè)不錯(cuò)的選擇。
糾刪碼提高可用容量
使全 NVMe Ceph 集群變得經(jīng)濟(jì)實(shí)惠的最重要方式是使用糾刪碼(EC)。在標(biāo)準(zhǔn)設(shè)置中,Ceph 使用 3 倍復(fù)制,這意味著它存儲(chǔ)每個(gè)數(shù)據(jù)片段的三個(gè)副本。這意味著有 200% 的額外存儲(chǔ)開銷;要存儲(chǔ) 1PB 的數(shù)據(jù),則需要 3PB 的原始磁盤空間。
糾刪碼以少得多的開銷提供相同甚至更好的數(shù)據(jù)保護(hù)級(jí)別。例如,一個(gè)常見的 k = 4, m = 2(或 4+2)EC 配置文件,將數(shù)據(jù)分成四個(gè)“數(shù)據(jù)塊”并創(chuàng)建兩個(gè)“校驗(yàn)塊”。此設(shè)置可以承受任何兩個(gè) OSD 的故障,就像 3 倍復(fù)制一樣,但它只需要 1.5PB 的原始存儲(chǔ)空間就能提供 1PB 的可用空間——這是 50% 的額外開銷,而不是 200%。這基本上將原始存儲(chǔ)硬件成本減半。
在 HDD 集群上,糾刪碼的隨機(jī) I/O 模式對(duì)性能的影響通常意味著它僅用于冷存檔。但在全 NVMe 集群上,基準(zhǔn)性能非常高,以至于 EC 成為更廣泛的工作負(fù)載(包括暖數(shù)據(jù)甚至熱數(shù)據(jù) ) 的絕佳且經(jīng)濟(jì)高效的選擇 。
耗電、散熱和空間占用
全 NVMe 的 TCO 優(yōu)勢(shì)遠(yuǎn)不止存儲(chǔ)驅(qū)動(dòng)器。閃存存儲(chǔ)在電力、散熱和空間方面效率要高得多。
- 功耗: 一個(gè)正常使用中的 3.5 英寸企業(yè)級(jí) HDD 消耗 6 到 10 瓦,而一個(gè)正常使用中的企業(yè)級(jí) NVMe SSD 通常消耗 3 到 8 瓦。當(dāng)它們空閑時(shí),差異更大,HDD 可以消耗 4-8W,而 NVMe 驅(qū)動(dòng)器可以降至 0.5-2W。美光公司一項(xiàng)比較全 NVMe Ceph 集群與混合 HDD+NVMe 集群的研究發(fā)現(xiàn),全 NVMe 配置效率要高得多,每 GBps 寫入速度的功耗低 46 倍,每 GBps 讀取速度的功耗低 16 倍。(https://www.micron.com/about/blog/storage/innovations/drop-hdd-from-your-object-storage-ceph-micron-6500-ion)
- 密度和占用空間: 因?yàn)樗鼈冊(cè)谛】臻g內(nèi)集成了非常高的性能,因此,只需要很少的全 NVMe 節(jié)點(diǎn)就可以獲得與基于 HDD 的集群相同的性能。同一項(xiàng)美光研究發(fā)現(xiàn),需要 161 個(gè)基于 HDD 的節(jié)點(diǎn)才能匹配僅僅 6 個(gè)全 NVMe 節(jié)點(diǎn)的寫入性能。
耐力問題:管理長期成本
對(duì)于所有的閃存系統(tǒng),需要考慮的一個(gè)有效長期成本是驅(qū)動(dòng)器的寫入耐久性有限。如果計(jì)劃好,這是一個(gè)可控的問題。企業(yè)級(jí) NVMe 驅(qū)動(dòng)器提供一定寫入量的保修,以典型五年期間的每日驅(qū)動(dòng)器寫入次數(shù) (DWPD) 衡量。
管理此成本的關(guān)鍵是將驅(qū)動(dòng)器的耐用性評(píng)級(jí)與工作負(fù)載的寫入量相匹配。一個(gè)普遍的誤解是,所有企業(yè)應(yīng)用程序都需要昂貴的高耐用性驅(qū)動(dòng)器。實(shí)際上,我們可以根據(jù)工作負(fù)載選擇驅(qū)動(dòng)器 :
- 讀取密集型工作負(fù)載 (如分析或存檔)可以使用 DWPD 為 1 或更低的更便宜、高容量的“讀取密集型”驅(qū)動(dòng)器。
- 混合用途工作負(fù)載 (如通用虛擬機(jī)存儲(chǔ)或 Web 應(yīng)用程序)與 DWPD 在 1 到 3 之間的主流“混合用途”驅(qū)動(dòng)器一起使用。
- 寫入密集型工作負(fù)載 (如數(shù)據(jù)庫日志或高頻數(shù)據(jù)收集)是唯一通常需要 DWPD 大于 3 的高級(jí)“寫入密集型”驅(qū)動(dòng)器的工作負(fù)載。
通過查看應(yīng)用程序的 I/O 模式并選擇合適的企業(yè)級(jí) NVMe 驅(qū)動(dòng)器,可以避免在不需要的耐用性上超支,從而優(yōu)化初始成本和長期更換成本。
下表提供了假設(shè)的 1PB 可用存儲(chǔ)集群的高級(jí) TCO 比較,顯示了如何通過大幅的運(yùn)營成本節(jié)省來平衡 NVMe 硬件較高的初始成本。
表格
注:值僅用于說明,取決于特定的硬件和電源成本。來源:
美光(https://www.micron.com/about/blog/storage/innovations/drop-hdd-from-your-object-storage-ceph-micron-6500-ion)
最終,全 NVMe Ceph 的主要經(jīng)濟(jì)優(yōu)勢(shì)不是更低的每 GB 成本,而是更低的每 IOPS 成本和每瓦特成本。當(dāng)開始基于性能和運(yùn)營效率而不是僅僅是容量來衡量時(shí),全閃存的成本案例就變得非常有力。它還使數(shù)據(jù)中心更加簡(jiǎn)單?;旌详嚵幸蕾噺?fù)雜的緩存和分層在快速閃存和慢速 HDD 之間移動(dòng)數(shù)據(jù),這增加了管理工作并可能導(dǎo)致不可預(yù)測(cè)的性能。全閃存配置消除了這種復(fù)雜性,創(chuàng)建了一個(gè)單一的、高性能的層,更易于管理并提供更可預(yù)測(cè)的應(yīng)用程序響應(yīng)時(shí)間。
未來:Ceph Crimson 和 NVMe 存儲(chǔ)的未來
雖然,目前構(gòu)建在穩(wěn)定的 BlueStore 后端上的全 NVMe Ceph 集群提供了出色的性能,但 Ceph 社區(qū)一直知道,該平臺(tái)的原始設(shè)計(jì)并不是為現(xiàn)代存儲(chǔ)的微秒級(jí)延遲場(chǎng)景而設(shè)計(jì)的。為了真正釋放下一代硬件的全部潛力,社區(qū)正在進(jìn)行重大重新設(shè)計(jì)。這個(gè)名為 Crimson 的項(xiàng)目是 Ceph 的未來,它表明了社區(qū)致力于保持存儲(chǔ)技術(shù)前沿的承諾。
問題:為什么傳統(tǒng) Ceph 無法滿足需求
Ceph 是在物理磁盤(可以處理幾百 IOPS)是最常見場(chǎng)景的時(shí)代創(chuàng)建的。在這些場(chǎng)景中,CPU 有足夠的時(shí)間來管理每個(gè) I/O 操作。隨著存儲(chǔ)變得越來越快,該時(shí)間已經(jīng)急劇縮短。一個(gè)現(xiàn)代 NVMe 驅(qū)動(dòng)器可以達(dá)到超過一百萬的 IOPS,這使得 CPU 只有幾千個(gè)周期來處理每個(gè)請(qǐng)求。
以往的 Ceph OSD 具有多線程設(shè)計(jì),并不是為此場(chǎng)景設(shè)計(jì)的。其內(nèi)部架構(gòu)可能導(dǎo)致性能下降的上下文切換、線程爭(zhēng)奪鎖以及其他開銷,從而消耗寶貴的 CPU 周期并增加延遲。這是原始硬件可以執(zhí)行的作與 Ceph 開箱即用提供的功能之間存在性能差距的主要原因。
解決方案:Crimson 和 SeaStore
Crimson 項(xiàng)目(https://ceph.io/en/news/crimson/) 是 Ceph 社區(qū)的說法,即要突破此限制,需要一種新的架構(gòu)。這是對(duì) Ceph OSD 的完全重寫,而不僅僅是一次更新。Crimson 基于 Seastar(一種用于高性能應(yīng)用程序的高級(jí) C++ 框架)構(gòu)建,采用一組不同的規(guī)則進(jìn)行設(shè)計(jì)。
它的主要目標(biāo)是通過使用每核線程、無共享設(shè)計(jì)來減少 CPU 開銷和延遲。在此模型中,任務(wù)在 CPU 內(nèi)核之間進(jìn)行拆分,以避免線程必須相互通信和鎖定,從而允許在單個(gè)內(nèi)核上盡可能不間斷地處理單個(gè) I/O 。
除了這個(gè)新的 OSD 之外,還推出了 SeaStore,這是一個(gè)新的存儲(chǔ)后端,專為 NVMe 等快速、隨機(jī)訪問媒體而設(shè)計(jì)。SeaStore 最終將取代 BlueStore 成為 Crimson 的默認(rèn)后端,提供更簡(jiǎn)化、更高效的數(shù)據(jù)路徑,而不會(huì)受到支持 HDD 的遺留問題所拖累。
現(xiàn)狀和實(shí)現(xiàn)期望
開發(fā)新的存儲(chǔ)引擎是一項(xiàng)艱巨的工作。從長遠(yuǎn)來看,BlueStore 本身花了兩年多 的時(shí)間才從一個(gè)想法到可用于生產(chǎn)。Crimson 和 SeaStore 是一個(gè)復(fù)雜程度相似的項(xiàng)目。
目前,Crimson 在最近的 Ceph 版本(如 Squid)和商業(yè)版本中作為技術(shù)預(yù)覽提供。這意味著它的功能尚未完成,例如,對(duì)糾刪碼的全面支持仍在開發(fā)中,不建議用于生產(chǎn)用途。將新的 Crimson OSD 與穩(wěn)定的 BlueStore 后端配對(duì)的早期性能測(cè)試表明,其性能已經(jīng)與傳統(tǒng) OSD 一樣好或略好 。但是,當(dāng)原生 SeaStore 后端完全成熟時(shí),預(yù)計(jì)會(huì)出現(xiàn)真正的、顛覆性的性能改進(jìn)。
在未來的一段時(shí)間內(nèi),高性能 Ceph 的生產(chǎn)部署仍然將繼續(xù)基于經(jīng)過驗(yàn)證、穩(wěn)定且非常快速的經(jīng)典 OSD 和 BlueStore。這種架構(gòu)為當(dāng)今最快的集群提供支持,包括比如上述提到的 1 TiB/s 系統(tǒng)。企業(yè)可以放心使用這些解決方案。因?yàn)檫@是當(dāng)前部署的最成熟的技術(shù),另外,也持續(xù)跟進(jìn) Crimson ,因?yàn)?,這有希望在未來幾年獲取更多性能。總結(jié)就是:“現(xiàn)在穩(wěn)定而強(qiáng)大,未來更快。
總結(jié)和關(guān)鍵要點(diǎn)
將全 NVMe 存儲(chǔ)與 Ceph 配對(duì)是開源存儲(chǔ)平臺(tái)向前邁出的一大步,將其從一個(gè)橫向擴(kuò)展的集群轉(zhuǎn)變?yōu)橐粋€(gè)可以與專業(yè)專有系統(tǒng)競(jìng)爭(zhēng)的高性能機(jī)器。潛力是巨大的,基準(zhǔn)測(cè)試顯示數(shù)百萬的 IOPS 和超過 1 TiB/s 的速度。然而,正如本文所示,那種性能并非開箱即用,它是有合理規(guī)劃且精心調(diào)優(yōu)的結(jié)果。
以下是一些值得考慮的要點(diǎn):
- 最佳性能是有條件的: 從全 NVMe Ceph 獲得最佳性能取決于合理的架構(gòu)和具體的調(diào)優(yōu)。NVMe 驅(qū)動(dòng)器的原始速度將瓶頸轉(zhuǎn)移到系統(tǒng)的其他部分,這使得高內(nèi)核數(shù) CPU 和高帶寬 (25/100Gbps) 網(wǎng)絡(luò)成為成功的關(guān)鍵。
- 系統(tǒng)級(jí)調(diào)優(yōu)是關(guān)鍵: 一些明顯的性能優(yōu)勢(shì)來自 Ceph 自己的設(shè)置之外。關(guān)閉 CPU 節(jié)能功能 (C-states) 以及在受信任的設(shè)置中關(guān)閉 IOMMU 是減少延遲和釋放硬件真正潛力的關(guān)鍵步驟。
- 經(jīng)濟(jì)性被效率所改變: 雖然 NVMe 的前期硬件成本高于 HDD,但 TCO 分析卻講述了不同的情況。在 NVMe 上使用糾刪碼使其具有成本競(jìng)爭(zhēng)力,而性能密度的巨大提高可大幅節(jié)省電力、散熱和機(jī)架空間,通??梢越档托阅苊芗凸ぷ髫?fù)載的總體擁有成本。
- 架構(gòu)必須適合工作負(fù)載: 沒有單一的“最佳”設(shè)置。但是,我們必須權(quán)衡所有,例如在每個(gè)驅(qū)動(dòng)器選擇一個(gè) OSD 以提高速度,或者選擇兩個(gè) OSD 以獲得更好的尾部延遲,并在 3 倍復(fù)制之間進(jìn)行選擇以獲得最佳讀取性能,或在擦除碼之間進(jìn)行選擇以實(shí)現(xiàn)存儲(chǔ)效率和寫入速度。
- 未來的存儲(chǔ)架構(gòu): 當(dāng)今基于 BlueStore 的生產(chǎn)就緒型集群成熟、穩(wěn)定,可以處理最棘手的企業(yè)工作負(fù)載。下一代 Crimson OSD 和 SeaStore 后端的持續(xù)開發(fā)確保 Ceph 有一個(gè)明確的路線圖,可以更好地利用未來的存儲(chǔ)技術(shù)。
部署一個(gè)高性能的全 NVMe Ceph 集群是一項(xiàng)復(fù)雜的工作,需要存儲(chǔ)、網(wǎng)絡(luò)和系統(tǒng)管理的深入知識(shí)。像使用消費(fèi)級(jí)硬件、網(wǎng)絡(luò)配置不足或跳過系統(tǒng)級(jí)調(diào)優(yōu)等常見錯(cuò)誤,很容易會(huì)導(dǎo)致存儲(chǔ)系統(tǒng)無法發(fā)揮出應(yīng)有的性能。
對(duì)于那些希望利用全 NVMe Ceph 的強(qiáng)大功能而又不想經(jīng)歷陡峭學(xué)習(xí)曲線和風(fēng)險(xiǎn)的組織來說,本文可以提供一個(gè)比較好的參考案例。
常見問題(FAQ)
全 NVMe Ceph 集群與基于 HDD 的傳統(tǒng)集群相比如何?
全 NVMe Ceph 集群與基于 HDD 的 Ceph 集群完全不同。差異不小,而是數(shù)量級(jí)。經(jīng)過良好調(diào)優(yōu)的全 NVMe 集群可以提供數(shù)百萬 IOPS 和每秒數(shù)十 GB 的速度,而 HDD 集群的測(cè)試速度為數(shù)千 IOPS 和每秒數(shù)百兆字節(jié)。延遲從 HDD 上的毫秒下降到 NVMe 上的微秒。
在成本方面,NVMe 硬件的每 GB 前期價(jià)格高于 HDD。但是,對(duì)于性能至關(guān)重要的應(yīng)用場(chǎng)景來說,全 NVMe 集群的總擁有成本 (TCO) 通常要低得多。這是因?yàn)樵陔娫?、冷卻和機(jī)架空間方面取得了巨大的效率提升。例如,一項(xiàng)研究發(fā)現(xiàn),僅 6 個(gè)全 NVMe 節(jié)點(diǎn)的寫入性能就需要 100 多個(gè)基于 HDD 的節(jié)點(diǎn)才能匹配 (https://www.micron.com/about/blog/storage/innovations/drop-hdd-from-your-object-storage-ceph-micron-6500-ion),這可以節(jié)省大量運(yùn)營成本,彌補(bǔ)較高的初始硬件成本。
全 NVMe 集群最關(guān)鍵的優(yōu)化步驟是什么?
雖然有很多配置可以調(diào)整,但三個(gè)調(diào)優(yōu)步驟對(duì)于實(shí)現(xiàn)全 NVMe Ceph 集群的超高性能最為重要:
- 禁用 CPU C-States:這是 BIOS/UEFI 設(shè)置。關(guān)閉省電的 C 狀態(tài)會(huì)阻止 CPU 進(jìn)入睡眠模式,從而消除損害低延遲存儲(chǔ)的“喚醒”延遲。這一項(xiàng)更改可以帶來 10-20% 的性能提升 。
- 禁用 IOMMU: 在受信任的裸機(jī)設(shè)置中,IOMMU (VT-d/AMD-Vi) 會(huì)向每個(gè) I/O 添加不必要的地址轉(zhuǎn)換步驟。使用內(nèi)核引導(dǎo)設(shè)置將其關(guān)閉可以通過 減少 CPU 工作來顯著提高性能 。
- 優(yōu)化每個(gè)驅(qū)動(dòng)器的 OSD 策略: 決定每個(gè) NVMe 驅(qū)動(dòng)器運(yùn)行一個(gè)或兩個(gè) OSD 是一個(gè)關(guān)鍵的選項(xiàng)。 每個(gè)驅(qū)動(dòng)器使用一個(gè) OSD 以獲得最佳的大寫入速度和 CPU 效率。每個(gè)驅(qū)動(dòng)器使用兩個(gè) OSD 可大幅減少 99% 的尾部延遲,這對(duì)于需要一致、可預(yù)測(cè)的響應(yīng)時(shí)間的應(yīng)用程序至關(guān)重要。
網(wǎng)絡(luò)設(shè)置如何影響全 NVMe Ceph 集群的性能和恢復(fù)速度?
網(wǎng)絡(luò)是 Ceph 集群的命脈,它在全 NVMe 設(shè)置中的重要性怎么強(qiáng)調(diào)都不為過??焖佟⒌脱舆t的網(wǎng)絡(luò)(最低 25 Gbps,對(duì)于較大的集群,建議使用 100 Gbps)是必不可少的,原因有兩個(gè):
- 峰值性能:現(xiàn)代 NVMe 驅(qū)動(dòng)器的速度很容易壓垮速度較慢的網(wǎng)絡(luò)。例如,10Gbps 網(wǎng)絡(luò)可以被單個(gè)客戶端完全用完 ,無論驅(qū)動(dòng)器有多快,都會(huì)對(duì)性能造成硬性限制。
- 恢復(fù)速度: 這是最關(guān)鍵的部分。當(dāng)驅(qū)動(dòng)器或服務(wù)器發(fā)生故障時(shí),Ceph 必須通過網(wǎng)絡(luò)復(fù)制數(shù) TB 的數(shù)據(jù)才能恢復(fù)完全冗余。此恢復(fù)的速度與可用網(wǎng)絡(luò)帶寬直接相關(guān)。緩慢的網(wǎng)絡(luò)會(huì)使恢復(fù)過程更長,使集群處于降級(jí)和易受攻擊的狀態(tài),并增加因再次故障而丟失數(shù)據(jù)的風(fēng)險(xiǎn)。更快的網(wǎng)絡(luò)意味著更具彈性和可靠的集群。
何時(shí)應(yīng)該在全 NVMe 集群上使用糾刪碼而不是 3 副本?
在全 NVMe 集群上選擇糾刪碼 (EC) 和 3 倍復(fù)制是一種基于應(yīng)有和成本目標(biāo)的戰(zhàn)略性選擇。
將 3x 復(fù)制用于:
最大讀取性能: 如果主要目標(biāo)是絕對(duì)最高的讀取 IOPS 和最低的讀取延遲,那么 3 倍復(fù)制是理想的選擇。這使其非常適合延遲敏感型工作負(fù)載,例如高事務(wù)數(shù)據(jù)庫的數(shù)據(jù)塊存儲(chǔ)。使用 3 倍復(fù)制可以達(dá)到 1 TiB/s性能 。
簡(jiǎn)單性: 復(fù)制對(duì) CPU 的工作量比糾刪碼少。
將糾刪碼(例如 4+2、8+3)用于:
存儲(chǔ)效率和成本節(jié)約: EC 可顯著降低存儲(chǔ)開銷 ,這是使大型全 NVMe 集群經(jīng)濟(jì)實(shí)惠的關(guān)鍵。
高寫入吞吐量: 它可能看起來有點(diǎn)不太可能,但從實(shí)際上講,一定規(guī)模的集群,EC 可以提供比復(fù)制更高的寫入速度 , 因?yàn)閷懭胪瑫r(shí)分布在多個(gè) OSD 中。
對(duì)象存儲(chǔ)和歸檔:它非常適合大規(guī)模對(duì)象存儲(chǔ)或文件存儲(chǔ),其中容量和成本效益是首要考慮因素,讀取延遲略高是可以的。
在全 NVMe 上部署 Ceph 時(shí)最常見的錯(cuò)誤是什么?
最常見和最具嚴(yán)重的錯(cuò)誤是使用 消費(fèi)級(jí)硬件 。此錯(cuò)誤主要以兩種方式表現(xiàn)出來:
- 費(fèi)級(jí) NVMe 驅(qū)動(dòng)器: 使用臺(tái)式機(jī)或筆記本電腦類型的驅(qū)動(dòng)器是導(dǎo)致問題的根源。這些驅(qū)動(dòng)器缺少基本的企業(yè)功能,如掉電保護(hù)(有數(shù)據(jù)損壞的風(fēng)險(xiǎn)),并且寫入耐久性 (DWPD) 非常低,這會(huì)導(dǎo)致它們?cè)?Ceph 的持續(xù) I/O 負(fù)載下過早磨損和失效。
- 網(wǎng)絡(luò)配置不足:在 1GbE 甚至 10GbE 網(wǎng)絡(luò)上部署全 NVMe 集群。這會(huì)直接導(dǎo)致明顯的性能瓶頸,使集群無法獲得快速存儲(chǔ)的任何優(yōu)勢(shì),并嚴(yán)重影響數(shù)據(jù)恢復(fù)的速度,使集群面臨風(fēng)險(xiǎn)。
這些硬件選擇往往會(huì)產(chǎn)生一些基礎(chǔ)限制和可靠性風(fēng)險(xiǎn),而且是再多的軟件調(diào)優(yōu)都無法解決的。一個(gè)成功的全 NVMe Ceph 部署始于正確的企業(yè)級(jí)硬件的基礎(chǔ)。




























