從資源閑置到彈性高吞吐,JuiceFS 如何構建 70GB/s 吞吐的緩存池?

AI 模型的訓練與推理對存儲系統提出了極為嚴苛的要求,特別是在高吞吐、高并發以及對海量小文件的高效處理方面,已成為三大主要挑戰。盡管基于 Lustre 或 GPFS 的并行文件系統具備出色的性能,但其成本高昂、吞吐能力與容量強耦合,可能導致硬件資源的浪費。隨著數據規模的急劇增長,這些問題變得更加突出。

我們將通過一個客戶從并行文件系統架構遷移至 JuiceFS 的案例,同時利用其閑置資源打造 70GB/s 吞吐,360 TB 緩存池的案例,深入探討 JuiceFS 如何實現高效的數據處理、低成本存儲與靈活的擴展能力。

01 早期存儲架構:資源利用不足與高昂的成本

該客戶是一家從事大語言模型訓練的企業,數據存儲在 AWS S3 上,最初通過 AWS FSx for Lustre 提供的并行文件系統訪問數據,確保計算資源能夠高效地訪問存儲在 S3 中的數據。FSx 和類似的并行文件系統,如阿里云 CPFS、火山引擎 vePFS 通常提供協議轉換、緩存加速以及文件生命周期管理這些功能。

為了支撐大規模的數據處理和計算,客戶采購了多臺裸金屬服務器,每臺配備了大量的本地 NVMe 磁盤。然而,這些磁盤長時間處于閑置狀態,造成了資源浪費。

盡管并行文件系統具有優異的性能,但其成本較高,并且吞吐性能與存儲容量緊密相關。如果要獲得更高的吞吐,必須購買更大容量的存儲,這導致了開銷的增加。考慮到未來數據量的增長,繼續擴展該系統將帶來巨大的成本壓力。

02 引入 JuiceFS 后的新架構:提升高吞吐與擴展性

在經過充分的技術選型和評估后,該客戶決定從原有架構遷移到 JuiceFS,以更好地滿足其高吞吐量和擴展性需求。

JuiceFS 架構特點

JuiceFS 采用數據和元數據分離的架構,數據存儲于對象存儲。企業版通過 Raft 協議構建元數據集群,社區版則支持 Redis、TiKV 等數據庫作為元數據引擎。

為了提高性能,JuiceFS 將數據切塊,每次更新限制為最小的 4MB,從而大幅減少文件寫入的浪費,顯著提升了在對象存儲上的寫入效率。初次使用 JuiceFS 的用戶可能會擔心,數據切塊后是否會影響文件的可用性,或是脫離 JuiceFS 產品后,JuiceFS 的分塊格式無法被正常讀取,造成產品的強綁定。事實上,JuiceFS 設計將對象存儲視作本地磁盤使用,避免了與文件系統的緊密耦合,同時解決了對象存儲在隨機寫入效率上的瓶頸。此外,JuiceFS 提供接口支持輕松將數據遷移回 S3 對象存儲,避免了對特定存儲產品的依賴。

部署方案

與之前的托管文件系統集中式的架構不同,基于 JuiceFS 的新架構利用每個業務節點上的客戶端來提供協議轉換和緩存加速功能。無論是通過 JuiceFS CSI 與 Kubernetes 集成,還是直接通過主機訪問,部署完成后,業務節點便能高效地訪問元數據和對象存儲,極大提升了存儲系統的性能與靈活性。這種架構的優勢在于,可以靈活地擴展系統,避免單點故障,同時提升存儲和計算資源的利用效率。

此外,JuiceFS 能夠充分利用閑置硬件資源,如 NVMe 本地磁盤和內存。JuiceFS 將這些閑置磁盤整合為一個分布式緩存池,從而提升緩存性能和吞吐能力。對于社區版用戶,可以將緩存目錄設置到分布式文件系統中,如 BeeGFS 等,以構建分布式緩存層。

最終,使用 JuiceFS,該客戶構建了一個 360TB 的分布式緩存池,6 臺服務器提供了 600Gbps 的聚合帶寬,該緩存池的瞬時吞吐已達到 10GB/s,JuiceFS 在 TCP 網絡利用率方面表現出色,100Gbps 以下帶寬的利用率可達 95%。若 GPU 節點沒有額外磁盤資源,也可利用內存來構建緩存池。

03 JuiceFS 讀性能測試

為了評估和展示 JuiceFS 使用分布式緩存后的讀性能,我們進行了內部測試,使用了 JuiceFS 企業版 5.2,測試大文件順序讀性能。

測試結果顯示,在 100 臺機器聚合成的 10Tbps 網絡環境下,JuiceFS 分布式緩存的聚合吞吐量達到了 1.23 TB/s,證明在 100Gbps TCP 網絡條件下,網絡利用率可達到 95%以上;即使在 200Gbps 網絡下,利用率也可達到約 70%。本次測試使用 100Gbps 網卡,在 TCP 環境下成功實現了較高的整體聚合吞吐率。

在測試過程中,我們結合了磁盤和內存資源,確保充分利用 100Gbps 網卡的帶寬上限,達到每秒 12.5GB 的吞吐量。

在緩存服務節點的測試中,每秒從本地磁盤讀取 11GB 數據并通過網絡傳輸到消費節點時,CPU 消耗不到一個核,平均每提供 10GB/s 帶寬,僅消耗一個核。

在客戶端節點方面,每 GB/s 的讀取僅消耗 0.8 個 CPU 核。如果要充分利用 100Gbps 網卡帶寬,使用 JuiceFS FUSE 客戶端存儲需占用 10 個 CPU 核。TCP 網絡對用戶來說應用更為廣泛,因此,基于 TCP 網絡 的優化方案能夠廣泛適用于多種場景,滿足不同需求。

04 總結

本文介紹了 JuiceFS 在 AI 訓練與推理場景中的應用。在這些場景中,雖然延遲和 IOPS 重要,但吞吐性能和性價比同樣不可忽視。針對傳統并行文件系統(PFS)成本高且吞吐量與存儲容量綁定的問題,JuiceFS 提供了一種低成本、高效益的解決方案。其通過數據與元數據分離的架構,能夠將業務節點上的閑置磁盤、內存和網絡資源池化,按需構建高性能的分布式緩存集群,避免了容量綁定的限制。如文中案例所示,采用該方案能夠將存儲總擁有成本降低近十倍,同時實現高達 TB/s 級別的吞吐量,并保持較低的客戶端 CPU 開銷。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/91776.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/91776.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/91776.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

提升JVM性能之CMS垃圾回收器的優化分析與案例剖析

這里寫目錄標題一、CMS基本介紹二、CMS核心優化策略1. 避免并發模式失敗(Concurrent Mode Failure)2. 減少內存碎片3. 調優并發階段耗時4. 新生代優化配合三、典型案例解析案例1:電商服務頻繁Full GC案例2:金融交易系統碎片導致長…

Token系列 - 再談穩定幣

相關政策 2024年12月,歐洲《加密資產市場監管法案》正式成為法律2025年3月,日本細化了加密資產及穩定幣的監管調整2025年5月,英國發布了關于穩定幣發行、加密資產托管及加密資產公司財務穩健性的監管提案;2025年5月20日&#xff…

【20min 急速入門】使用Demucs進行音軌分離

創建環境 conda create --name mujica python3.10下載加速依賴 先用nvidia-smi檢查機器使用的獨顯版本, 然后從pytorch官網下載對應的GPU版torch, torchaudio 比如我的是12.2, 就下載11.8版本的 pip3 install torch torchvision torchaudio --index-url https://download.p…

字節Seed發布擴散語言模型,推理速度達2146 tokens/s,比同規模自回歸快5.4倍

用擴散模型寫代碼,不僅像開了倍速,改起來還特別靈活!字節Seed最新發布擴散語言模型Seed Diffusion Preview,這款模型主要聚焦于代碼生成領域,它的特別之處在于采用了離散狀態擴散技術,在推理速度上表現出色…

海洋大地測量基準與水下導航系列之九我國海洋PNT最新技術進展(下)

三、海洋PNT技術裝備研發與工程化應用 1.海底基準裝備 研制了首批適應海洋環境的多型海底基準站裝備,在我國南海海域成功布設了定位精度優于0.25m的海底大地測量試驗基準網,實現了我國海底大地測量基準技術零的突破。基準方艙具備穩固、抗壓、防腐、防…

入門MicroPython+ESP32:安裝逗腦IDE及驅動

本篇文章將手把手帶大家入門MicroPython ESP32,重點介紹逗腦IDE的安裝過程以及相關驅動的安裝。 一、下載逗腦IDE 要開始使用逗腦IDE,首先需要從官網下載最新版本。請訪問以下網址進行下載:https://www.itprojects.cn/ide 下載時的界面大…

CentOS上部署Redis及其哨兵(Sentinel)模式

架構:說明我這里是偽集群的,redis 在同一臺機器,Sentinel 只有一個,也存在單點故障問題只能當作開發環境使用,要滿足生產至少是下面這種架構 ------------------- ------------------- ------------------- …

《軟件測試與質量控制》實驗報告二 單元測試

目 錄 一、實驗學時 二、實驗目的 三、實驗環境 (一)硬件環境: (二)軟件環境: 四、實驗內容 1、實驗方案: 2、實驗步驟: 3、設計思路: 1、安裝JUnit和Eclemma…

k8s模式部署PolarDB-X

當前文檔適配PolarDB-X V2.4.0 版本 環境描述: 部署機(ops)1x2.2x.2x8.116,部署機需要可以訪問互聯網。使用ansible進行部署,自行安裝ansible。需要部署兩個k8s集群,分別在其上安裝一個polardb-x集群。 部…

Flask + YARA-Python*實現文件掃描功能

以下是一個 完整的 Web API 示例,使用 Flask YARA-Python 實現文件掃描功能,支持上傳文件并返回 YARA 規則匹配結果。 ? 功能說明 提供一個 /scan 接口,支持文件上傳使用預加載的 YARA 規則進行掃描返回 JSON 格式的匹配結果支持多規則、可…

WinForm之NumericUpDown控件

NumericUpDown(數字上下控件)是 WinForm 中專門用于輸入和調整數值的控件,它結合了文本框和上下按鈕,用戶可通過點擊按鈕或直接輸入來設置數值,且能嚴格限制數值范圍(最小值、最大值)和步長&…

一文讀懂K8S kubectl 命令,運維小白必看!

一、Kubectl 是什么? Kubectl 是 Kubernetes(簡稱 K8S)集群的命令行工具,它就像是一把萬能鑰匙,讓我們可以與 K8S 集群進行交互,輕松管理集群中的各種資源,像是 Pod、Service、Deployment 等等。通過向 K8S API 發送 REST 請求,kubectl 實現了對集群資源的增刪改查等操…

髖臼方向的定義與測量-I

近期看到關于髖臼方向不同應用場景下的不同定義,覺得特別有意思,但是,原文是影印本,不太方便實用屏幕取詞翻譯,且一些專業術語也不太好理解。 因此,我將原文和翻譯整理了一些,不對的地方&#x…

Python爬蟲實戰:研究mahotas庫,構建圖像獲取及處理系統

一、引言 (一)研究背景 在信息爆炸的時代,圖像作為一種直觀、豐富的信息載體,其數量在互聯網上呈現指數級增長。這些圖像數據涵蓋了自然景觀、動植物、工業產品等多個領域,為模式識別、機器學習等研究提供了寶貴的數據源。特別是在植物學研究領域,葉片圖像包含了豐富的…

【04】海康相機C#開發——VS 在編譯時,提示“Files的值“+亂碼情況解決辦法’ ,C#項目打開編譯時報錯:Files 的值“IGEF‘,

文章目錄C#項目打開,用VS 在編譯時編譯時報錯:Files 的值“亂碼; 有的編譯器會顯示:Files的值“IGEF 以上報錯都為同一種錯誤,.net中的配置文件亂碼導致的: 找到項目目錄下的“..\obj\Debug\”的文件夾中…

MySQL隱式轉換陷阱:從錯誤查詢案例解析索引失效與數據類型匹配

開始之前,先問個問題問題:mysql 數據類型是date ,怎么寫查詢條件索引有效? ——下面帶著疑問看下去。 一、mysql-8.隱式轉換導致索引失效或查出不符合where條件結果 今天在執行一條sql語句時候,where條件寫錯了&#x…

【sklearn(01)】數據集加載、劃分,csv文件創建,特征工程,無量綱化

目錄sklearn數據集玩具數據集現實世界數據集加載玩具數據集獲取現實世界數據集本地csv數據創建csv文件pandas加載csv數據集劃分特征工程步驟特征工程APIDictVectorizer 字典列表特征提取APICountVectorizer 文本特征提取API英文文本提取中文文本提取TfidfVectorizer TF-IDF文本…

docker desktop入門(docker桌面版)(提示wsl版本太低解決辦法)

參考文章:Docker Desktop Engine Stopped原因分析(docker桌面停止)WSL沒裝或沒更新 文章目錄Docker Desktop入門指南1. Docker Desktop簡介2. 安裝Docker Desktop2.1 系統要求2.2 下載和安裝3. 配置Docker Desktop修改默認存儲路徑4. 運行你的…

《n8n基礎教學》第三節:模擬一個自動化場景

1、模擬場景Nathan 🙋是 ABCorp 的分析經理,他的工作是支持 ABCorp 團隊的報告和分析。作為一個真正的多面手,他還負責處理一些雜項任務。Nathan 做的一些事情是重復且枯燥的。他希望自動化其中一些任務,以避免精疲力竭。作為一名…

CodeRush AI 助手進駐 Visual Studio:AiGen/AiFind 亮相(三)

CodeRush 是專為 Visual Studio 打造的高效開發插件,通過集成 AI 驅動功能(如自然語言生成代碼的 AiGen 和智能搜索邏輯的 AiFind)、語音交互及深度重構工具,直接在 IDE 內無縫完成代碼生成、修改與導航,消除窗口切換與…