一場由AI引發的存儲芯片漲價風暴正席捲全球,CIO們不禁發問:該如何應對這非理性“瘋狂”?
在人工智能應用爆發式增長的背景下,AI服務器所需的高帶寬內存(HBM)需求激增,擠佔了傳統存儲芯片(NAND閃存)的產能。這直接導致了以NAND閃存作為核心存儲介質的SSD出現嚴重的市場供需失衡——SSD價格在短期內出現大幅上漲。針對這一挑戰,zData X數據庫一體機新推出的存儲壓縮功能就非常及時地以降本增效方案實現破局:通過在存儲層實施數據壓縮,使存儲的空間利用率提升2-3倍,在同等存儲容量需求的情況下可大幅減少SSD的部署數量,從而為企業用户有效降低存儲成本。
從我的實踐經驗和觀察來看,用户對存儲壓縮功能的關注點集中體現在以下四個維度:
- 實際壓縮效率表現,即“壓縮效果如何?”
- 性能影響程度評估,即“壓縮是否會導致性能下降?”
- 系統資源佔用分析,即“壓縮是否需要使用大量的CPU和內存資源?”
- 比對原生壓縮方案,即“一體機的壓縮功能與數據庫自身的壓縮能力相比有何優勢?”
本文將圍繞上述核心關切展開詳細解析。
一、存儲壓縮效率:2-3倍空間優化
數據庫場景下的壓縮,毫無疑問是必須要採用無損壓縮算法以保證數據完整性。數據庫一體機zData X的存儲底座是雲和恩墨自研的分佈式塊存儲軟件。它支持zstd和lz4兩種壓縮算法,並支持多級壓縮強度的設置。
對於結構化數據(排除圖片、視頻等非結構化類型),實測數據如下表所示:
(來源:engineering.fb.com)
- lz4壓縮算法實現約2倍的壓縮率,同時保持444.69MB/s的單核壓縮速率和2165.93MB/s的單核解壓速率。
- zstd壓縮算法可達成3.14倍的壓縮率,對應136.18MB/s的單核壓縮速率和536.36MB/s的單核解壓速率。
不難看出,lz4算法的壓縮率雖然較低,但具有最好的壓縮和解壓縮速率。經過對多場景下的多種數據進行實測,我們驗證確認常規數據壓縮率穩定維持在2-3倍區間。
二、性能影響控制:亞10%損耗邊界
作為面向數據庫場景的高性能存儲,我們在zData X的研發設計之初就清楚地認識到,壓縮不能以犧牲性能為代價。經過研發團隊的技術攻關,當前zData X的存儲壓縮功能對性能的影響非常小:
①數據寫入和修改的性能完全不受影響;
②熱數據通常沒有被壓縮,所以讀性能完全不受影響;
③温冷數據的讀取性能損耗在10%以內。
產生這樣的結果並非偶然,而是源於我們對存儲壓縮的精益化設計:
1後台異步壓縮
在整體方案上,zData X的分佈式存儲軟件採用後台異步壓縮的方式對數據進行處理。我們在這種壓縮方案上的多項設計策略及其優勢包括:
a.寫入路徑零影響:在寫數據時不進行壓縮,寫I/O的端到端路徑中完全沒有壓縮相關操作,因此寫入性能不會受到任何影響。
b.專核壓縮不干擾:壓縮任務使用專用的CPU核,而不是與處理I/O請求的CPU核混用,從而保證壓縮過程不會影響業務下發的I/O性能。
c.資源使用嚴格限:後台異步壓縮對資源使用進行嚴格限制,最大程度避免對系統性能的影響。當前的做法是,對每個磁盤的後台I/O速率限流為200MB/s。主流PCIe 5.0 SSD的I/O速率為6GB-14GB/s,因此壓縮最多隻佔用一個磁盤順序讀寫帶寬1.4%~3.3%。有了壓縮時的速率控制,CPU和內存的消耗自然也非常有限。
有人可能會產生疑慮:這樣壓縮會不會太慢?我們的答案是:不會,因為我們採用的是多盤並行壓縮。下面可以通過簡單的計算來驗證一下:
假設一個存儲節點有8個SSD,那麼8個盤並行壓縮時,總的I/O限流速率就是1600MB/s。為了便於計算,可按讀寫各佔50%考慮(實際壓縮後容量變小,寫入帶寬需求會更低),那麼每秒可以壓縮800M數據,1天(24小時)可以壓縮約66TB數據。再假設一個存儲節點有16個7.68TB容量的SSD,總容量使用到80%時用户開啓壓縮功能以回收空間,也只需要約36小時即可壓縮完成。由於壓縮過程對業務零影響,且邊壓縮邊釋放空間,這樣即使壓縮耗時稍長也不會帶來實際的負面影響。
2冷熱數據差異化處理策略
zData X的分佈式存儲軟件只對温冷數據進行壓縮,而對熱數據保持非壓縮狀態。這樣的策略帶來如下優勢:
a.熱數據不壓縮,讀寫零影響:頻繁修改的數據即為熱數據,這類數據始終保持非壓縮狀態,因此其寫入和讀取性能完全不受影響。這部分數據大約佔數據總量的7%左右。
b.冷數據只讀為主,壓縮收益大:冷數據是指基本上不再修改也很少在交易類業務中被訪問的數據,多用於備份、統計報表、歷史查詢這類場景,因此屬於典型的只讀數據。一個系統中的冷數據大約佔數據總量的80%,壓縮這類數據會帶來正反兩方面的影響。
- 正面影響是壓縮後的數據量變小,讀I/O的時間顯著縮短,意味着更快的磁盤訪問速度;
- 負面影響是解壓需要消耗CPU和時間,為此我們選擇了zstd和lz4這種解壓性能突出的算法,以儘可能減少解壓開銷。
綜合來看,正反兩方面影響互相沖抵後,最終結果是數據讀取的性能影響程度可控制在10%之內。在3存儲節點(每節點8個SSD)+ 雙100Gb/s網卡的環境下,我們對單個計算節點進行128KB隨機讀測試,結果為22GB/s的讀帶寬,已經跑滿網卡帶寬,此時獲得的128KB順序讀延遲為1ms。
c.温數據較活躍,性能影響亦可控:温數據在交易類業務中會偶有修改,但讀取較為頻繁。這類數據約佔數據總量的13%,修改時由於採用了後台異步壓縮,故對性能完全沒有影響,而讀取時對性能的影響程度同樣可控制在10%之內。
通過測試我們驗證到,zData X的分佈式存儲軟件在極高負載下,實現的隨機I/O讀延遲在0.2ms左右;在較低負載時,隨機I/O的讀延遲在0.1ms左右。在壓縮帶來的約10%的性能開銷下,隨機I/O的讀延遲保持在0.11ms~0.22ms之間,完全能夠滿足對低延遲I/O的要求。
(冷熱數據量佔比示意)
zData X默認將超過1個月未被修改的數據定義為冷數據;而温數據則指在壓縮後的數據中,僅有少量被修改且最後一次修改時間大於3天的數據。
針對一些用户可能會產生的疑問:zData X是否會記錄I/O時間?答案是肯定的。zData X的分佈式存儲軟件使用Raft協議實現多副本複製,而Raft日誌本身包含時間戳。在日誌落盤時,元數據會記錄每個Chunk(分佈式存儲軟件的磁盤空間分配單元,大小為4MB)的最新修改對應的Raft日誌序號和時間信息。因此係統可以準確判斷數據的冷熱程度,並據此採用差異化的壓縮策略。
三、資源消耗優化:僅需1-2核用於壓縮
為了不與處理I/O請求的CPU核混用而產生影響,zData X會為存儲節點預留1-2個專用CPU核用於壓縮任務。
- 在存算分離架構中,zData X的存儲節點通常配置2個物理CPU,每個CPU至少具備12個物理核,因此單存儲節點至少擁有24個物理核(48個邏輯核)。通常為分佈式存儲軟件分配的CPU一般不會超過30個邏輯核,因此剩餘資源完全足夠提供給壓縮功能作為專用核使用。
- 在存算融合架構中,zData X的存算融合節點配置的CPU核通常更多。以當前主流的雙路服務器為例,一台機器至少可配置128個邏輯核,因此即便為壓縮功能分配2個專用的CPU核,其也只佔用不到2%的CPU總量,幾乎不造成資源壓力。
這時一定會有人產生疑問:若只分配1個專用CPU核夠用嗎?答案是夠的。以lz4算法為例,單核的壓縮能力約為400MB/s,即一天可以壓縮約33TB數據。因此,即使單個節點有上百TB的數據需要壓縮,也只需要3天即可完成。此外,大量數據壓縮通常只發生在初始化階段,當初始壓縮完成之後,後續的增量數據的壓縮所佔用的資源就很少了,所以1個CPU核是完全夠用的。
由於後台異步壓縮本身已對帶寬進行了限流,因此我們在產品設計上並未引入額外的內存需求,原本為分佈式存儲軟件規劃的內存容量即能滿足壓縮場景的使用需求。
這裏再補充説明一點:專用的1-2個CPU核僅用於壓縮任務;而在解壓過程中,系統會在業務下發讀I/O請求時,由負責處理I/O請求的眾多CPU核來完成解壓,因此整體解壓吞吐量是很高的,不會形成性能瓶頸。
四、對比數據庫原生方案:三大技術突破
據我們觀察,數據庫自身的壓縮功能普遍使用率較低,只有像Oracle Exadata這類對數據壓縮機制做了深度優化的產品才使用得相對較多。
造成這一現象的主要原因在於數據庫自身的壓縮功能通常存在以下缺點:
①壓縮與解壓均消耗數據庫實例的CPU,這會直接影響數據庫的事務處理性能。
②壓縮過程通常需要對錶進行類似於重建的操作,才能真正實現數據壓縮,這會影響業務連續性。
③難以有效區分冷熱數據。以交易記錄表為例,該表需要保留10年的數據,近期數據會頻繁查詢,也會插入新的數據,而早期數據則很少訪問。若對熱數據頻繁地壓縮和解壓,會進一步拖慢性能。
zData X數據庫一體機的存儲壓縮功能很好地解決了上述問題。通過專用CPU核、僅壓縮温冷數據、後台異步壓縮等機制,zData X能夠以幾乎“透明”的方式提供數據壓縮能力,對數據庫性能的影響極為輕微,同時也提升了存儲空間利用率。
總結
面對SSD供需失衡與價格持續上漲的挑戰,zData X數據庫一體機的存儲壓縮功能提供了一套成熟且高效的應對方案。它並非簡單地引入壓縮算法,而是基於真實的數據庫場景和業務要求,進行了系統性的、工程級的創新設計:
- 顯著的降本效果:通過採用zstd與lz4無損壓縮算法,實現2-3倍的存儲空間節省,直接緩解存儲成本持續上漲的核心壓力。
- 卓越的性能平衡:依託後台異步壓縮、智能冷熱數據分離與嚴格資源限流等機制,在確保壓縮效率的同時最大化保護業務性能:數據寫入完全無影響,熱數據讀取無影響,對温冷數據的讀取性能損耗被嚴格控制在10%以內。
- 極低的資源開銷:壓縮功能僅需1-2個專用CPU核,且無需額外增加內存,以極小的資源代價換取顯著的空間效益,讓部署成本可控。
綜上,zData X數據庫一體機的存儲壓縮功能有效規避了數據庫自身壓縮的種種不足,以一種對業務近乎“透明無感”的方式實現了“降本”與“增效”的統一。它為企業應對數據量持續快速增長、構建兼具性能與成本優勢的存儲基礎設施提供了理想的選擇。