3FS是深度求索(DeepSeek)公司自主研發的高效能分布式儲存系統,專為AI大模型訓練、巨量資料分析及Alibaba Cloud HPC情境最佳化設計。在3FS中,融合現代SSD儲存與RDMA網路技術,突破傳統網路的效能瓶頸。本文介紹如何基於阿里雲自研的雲上彈性RDMA網路部署3FS叢集,實現低延遲與高吞吐資料轉送,支撐AI訓練和大規模資料分析的高效能需求。
部署方案
基於阿里雲高效能彈性RDMA網路eRDMA與本地SSD型執行個體規格類型系列i4構建3FS叢集,AC2為叢集提供安全可靠的容器化接入方案。
阿里雲不對3FS提供支援人員,也不承諾3FS自身軟體相關的資料完整性和資料正確性以及軟體功能和軟體效能。如遇問題,請通過GitHub渠道和3FS社區maintainer溝通。
彈性RDMA(Elastic Remote Direct Memory Access,簡稱eRDMA)是阿里雲自研的雲上彈性RDMA網路,底層鏈路複用VPC網路,採用全棧自研的擁塞控制CC(Congestion Control)演算法,享有傳統RDMA網路高吞吐、低延遲特性的同時,可支援秒級的大規模RDMA組網。可相容傳統HPC應用、AI應用以及傳統TCP/IP應用。
詳細資料,請參見彈性RDMA(eRDMA)。
阿里雲本地SSD型執行個體規格類型系列i4,採用PCIe Gen4 NVMe SSD,使用CIPU本地碟虛擬化架構。虛擬化對SSD的讀寫頻寬的衰減幾乎為零,並為客戶提供了IO級的營運監控能力。詳細資料,請參見NVMe SSD本地碟。
Alibaba Cloud AI Containers(簡稱AC2)是阿里雲官方推出的一系列AI容器鏡像的合集。通過內建不同的硬體加速庫、AI運行時、AI架構等滿足使用者不同情境的部署使用訴求,並通過與阿里雲基礎設施(ECS、ACK、ECI)深度最佳化,提升使用者在阿里雲上的AI效能和體驗。
AC2 產品鏡像在生產發布過程中實現全鏈路安全可靠,通過自主軟體選型構建,結合 CVE 更新策略和鏡像安全掃描機制,最大程度上保障了 AI 容器鏡像的安全生產。詳細資料,請參見Alibaba Cloud AI Containers。
重要本文中3FS涉及到的組件均已在AC2鏡像中完成構建,如果您希望完全自主構建,請參見3FS GitHub。
AC2是免費的鏡像,但使用鏡像時,需要支付其他資源產生的費用,如vCPU、記憶體、儲存、公網頻寬和快照等。
使用AC2需要首先設定Docker運行環境,在容器中啟用eRDMA的實現方式如下。
在容器環境中使用eRDMA功能時,使用Docker的
--device選項將/dev/infiniband/rdma_cm和/dev/infiniband/uverbsX兩個字元裝置映射到容器中,這樣容器內的使用者態程式就可以繞過作業系統核心直接存取eRDMA裝置進行資料的收發。/dev/infiniband/rdma_cm:用於eRDMA串連管理的字元裝置。使用者態程式可以通過對這個字元裝置的操作,與eRDMA裝置進行串連的建立、銷毀和管理,包括建立和銷毀串連、發送和接收串連事件等操作。/dev/infiniband/uverbsX:用於使用者空間eRDMA操作的字元裝置。使用者態程式可以通過對這個字元裝置的操作,與eRDMA裝置進行通訊,包括開啟裝置、建立和銷毀eRDMA通訊端點、註冊和登出記憶體緩衝區等操作。說明/dev/infiniband/uverbsX中的X是裝置的索引號,可能會因系統和配置而異,您可以運行ls /dev/infiniband | grep uverbs命令查看字元裝置名稱。
3FS關鍵節點介紹
3FS關鍵組件及作用如下:
中繼資料服務Metadata Service(Meta):無狀態服務,處理檔案系統的中繼資料請求。底層通過foundation DB實現原子性操作。
資料存放區Storage Service(Storage):在儲存節點上運行,資料分Block Storage於高效能NVMe SSD,採用CRAQ(Chain Replication with Apportioned Queries)鏈式複製協議管理副本,提供write-all-read-any語義。
叢集管理Cluster manager(Mgmtd):管理叢集的配置資訊,儲存節點狀態,負責選舉主節點並對其他組件進行同步更新。
用戶端Client:3FS提供了兩種形態的用戶端,通過FUSE實現標準化訪問和USRBIO實現高效能傳輸,兼顧相容性與效率,成為AI、巨量資料等情境的理想儲存介面。
FUSE用戶端:通過使用者態檔案系統介面掛載儲存叢集為本地目錄。提供 POSIX 相容的檔案操作介面(
read/write/mkdir),無需修改應用代碼。USRBIO高效能用戶端:通過使用者態I/O棧和RDMA,實現微秒級延遲與超高吞吐,滿足AI/HPC需求。
各個組件通過RDMA網路通訊,繞過核心協議棧,顯著減少 CPU 負載與網路延遲。
部署樣本
本樣本中,以同一VPC、同一可用性區域內的一台通用型執行個體規格類型系列g8i執行個體(ecs.g8i.48xlarge)作為meta節點,部署meta、mgmtd、用戶端及監控等服務,五台本地SSD型執行個體規格類型系列i4執行個體(ecs.i4.32xlarge)作為儲存節點,提供高效能NVMe SSD儲存,每個節點配置eRDMA實現彈性RDMA通訊,完成3FS叢集部署。
為簡化流程,本樣本中將中繼資料服務Meta、叢集管理服務Mgmtd、用戶端及監控組件等集中式部署於單節點。生產環境部署時,建議根據業務規模和高可用性要求,採用多點分布式架構實現服務解耦與資源隔離。
步驟一:準備環境
準備部署3FS相關節點的ECS執行個體,並且通過配置eRDMA使執行個體間具備彈性RDMA通訊的能力。
購買一台ECS執行個體同時作為meta、用戶端節點,購買五台ECS執行個體作為儲存節點,所有節點之間內網互連。各個節點需要開通公網下載AC2鏡像資源。
建立過程中所有執行個體需注意以下配置項,其他參數,請參見自訂購買執行個體:
地區:本樣本中選擇杭州地區。
執行個體規格:選擇支援eRDMA的執行個體規格:
meta節點:ecs.g8i.48xlarge
儲存節點:ecs.i4.32xlarge
執行個體鏡像:選擇支援eRDMA的Ubuntu 22鏡像。
彈性RDMA網卡:為執行個體網卡開啟彈性RDMA介面,使用彈性RDMA通訊模式。
重要樣本中的IP地址即開啟了彈性RDMA介面的網卡的主私網IP地址,本樣本中為主網卡。如果您是在輔助網卡上進行RDMA通訊測試,請注意更換IP地址。

步驟二:部署meta節點
遠端連線meta節點執行個體。
具體操作,請參見使用Workbench終端串連登入Linux執行個體(SSH)。
在執行個體上執行以下命令,安裝erdma驅動。
curl -O http://mirrors.cloud.aliyuncs.com/erdma/env_setup.sh sudo /bin/bash env_setup.sh > /var/log/erdma_install.log 2>&1執行安裝指令碼後,指令碼會自動協助您安裝eRDMA驅動所需的軟體依賴包以及eRDMA驅動,等待安裝指令碼執行結束即可。
執行以下命令,驗證erdma是否正常配置。
ibv_devinfo返回資訊如下所示,表示eRDMA在執行個體上正常啟用(eRDMA驅動正確安裝、網卡的彈性RDMA介面已正確配置)。eRDMA驅動的安裝可能需要一段時間,請您耐心等待。如果返回異常,請參見驗證eRDMA配置的正確性進行修複。

執行以下命令,設定RDMA建鏈方式為相容模式。
重要目前支援eRDMA的CPU執行個體規格,預設eRDMA核心驅動安裝模式為Standard,此模式下僅支援RDMA_CM建鏈。
eRDMA提供了相容模式(compat mode)用於OOB情境下的應用。相容模式下,會額外佔用30608~30623範圍內的16個TCP連接埠。
sudo sh -c "echo 'options erdma compat_mode=Y' >> /etc/modprobe.d/erdma.conf" sudo rmmod erdma sudo modprobe erdma compat_mode=Y執行以下命令,安裝docker。
說明使用AC2需要首先設定Docker運行環境。Docker的安裝視不同的作業系統步驟略有不同,具體操作,參見安裝Docker。本文中以Ubuntu為例,設定Docker運行環境。
apt update apt install docker.io -y安裝完畢後,通過以下命令查看Docker版本號碼,檢查是否安裝成功。

執行以下命令,部署並啟動clickhouse,用於持久化叢集運行狀態指標(如節點狀態、資源使用率、IO等)。
docker run -d --network=host --name clickhouse-server --ulimit nofile=262144:262144 ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/clickhouse:25.3.1.2703-ubuntu22.04--net=host:配置容器的通訊模式為host。容器內的應用程式可以直接使用主機的網路介面和網路設定,從而實現與主機相同的網路通訊能力。--ulimit nofile:設定容器內進程的檔案描述符數量限制(即一個進程能同時開啟的最大檔案數),避免因進程過度佔用檔案控制代碼導致系統不穩定。
執行以下命令,部署並啟動foundation db,保證叢集交易記錄配置與資料存放區。
docker run -d --network=host --name fdb ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/fdb:7.3.63-ubuntu22.04執行以下命令,部署並啟動3fs monitor,負責收集和分析系統運行時的各種指標,如輸送量、延遲、資源使用方式等。
docker run -d --network=host --name monitor --ulimit memlock=-1 --privileged --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/3fs:b71ffc55-fdb7.3.63-fuse3.16.2-ubuntu22.04 ./monitor.sh--ulimit memlock=-1:將maxlockedmemory設定為unlimited表示不限制非root使用者鎖定記憶體的數量。這可以確保eRDMA應用程式在非root使用者下能夠鎖定所需的記憶體量,從而有效地使用eRDMA功能。--device=/dev/infiniband/uverbsX和--device=/dev/infiniband/rdma_cm:將eRDMA對應的使用者態字元裝置暴露到容器中。執行以下命令,查看字元裝置名稱(
uverbsX中的X):ls /dev/infiniband | grep uverbs
執行以下命令,部署並啟動3fs叢集管理服務mgmtd,負責管理叢集中的儲存節點和資源分派。
docker run -d --network=host --name mgmtd --ulimit memlock=-1 --privileged --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm --env FDB_CLUSTER=`docker exec fdb cat /etc/foundationdb/fdb.cluster` --env REMOTE_IP="172.16.20.172:10000" --env MGMTD_SERVER_ADDRESSES="RDMA://172.16.20.172:8000" ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/3fs:b71ffc55-fdb7.3.63-fuse3.16.2-ubuntu22.04 ./mgmtd.sh--env REMOTE_IP:設定monitor的服務地址,IP地址為monitor服務所在的節點的主私網IP地址(本樣本中和meta同節點)。--env MGMTD_SERVER_ADDRESSES:設定mgmtd服務的地址,IP地址改為啟動了mgmtd服務的節點的主私網IP地址(本樣本中和meta、monitor同節點)。
執行以下命令,部署並啟動3fs的中繼資料服務meta。
docker run -d --network=host --name meta --ulimit memlock=-1 --privileged --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm --env FDB_CLUSTER=`docker exec fdb cat /etc/foundationdb/fdb.cluster` --env META_NODE_ID=100 --env REMOTE_IP="172.16.20.172:10000" --env MGMTD_SERVER_ADDRESSES="RDMA://172.16.20.172:8000" ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/3fs:b71ffc55-fdb7.3.63-fuse3.16.2-ubuntu22.04 ./meta.sh--env META_NODE_ID:設定meta節點的順序編號,本樣本中1台meta節點,設定為100。--env REMOTE_IP:設定monitor的服務地址,IP地址為monitor服務所在的節點的主私網IP地址(本樣本中和meta同節點)。--env MGMTD_SERVER_ADDRESSES:設定mgmtd服務的地址,IP地址改為啟動了mgmtd服務的節點的主私網IP地址(本樣本中和meta、monitor同節點)。
執行以下命令,查看以上啟動的節點服務(docker容器)。
docker ps
步驟三:部署儲存節點
以下步驟需要在五台儲存節點的每一台執行。
遠程登入儲存節點執行個體。
具體操作,請參見使用Workbench終端串連登入Linux執行個體(SSH)。
在執行個體上執行以下命令,安裝erdma驅動。
curl -O http://mirrors.cloud.aliyuncs.com/erdma/env_setup.sh sudo /bin/bash env_setup.sh > /var/log/erdma_install.log 2>&1執行安裝指令碼後,指令碼會自動協助您安裝eRDMA驅動所需的軟體依賴包以及eRDMA驅動,等待安裝指令碼執行結束即可。
執行以下命令,驗證erdma是否配置正確。
ibv_devinfo返回資訊如下所示,表示eRDMA在執行個體上正常啟用(eRDMA驅動正確安裝、網卡的彈性RDMA介面已正確配置)。eRDMA驅動的安裝可能需要一段時間,請您耐心等待。如果返回異常,請參見驗證eRDMA配置的正確性進行修複。

執行以下命令,設定RDMA建鏈方式為相容模式。
重要目前支援eRDMA的CPU執行個體規格,預設eRDMA核心驅動安裝模式為Standard,此模式下僅支援RDMA_CM建鏈。
eRDMA提供了相容模式(compat mode)用於OOB情境下的應用。相容模式下,會額外佔用30608~30623範圍內的16個TCP連接埠。
sudo sh -c "echo 'options erdma compat_mode=Y' >> /etc/modprobe.d/erdma.conf" sudo rmmod erdma sudo modprobe erdma compat_mode=Y執行以下命令,格式化並掛載NVMe SSD。本樣本中,掛載儲存節點上的8塊本地碟,並格式化為xfs檔案系統(高效能,適合大檔案)。
mkdir -p /storage/data{0..7} for i in {0..7};do mkfs.xfs -L data${i} /dev/nvme${i}n1;mount -o noatime,nodiratime -L data${i} /storage/data${i};done; mkdir -p /storage/data{0..7}/3fs掛載完成後,可通過以下命令查看分區情況:

執行以下命令,安裝docker。
說明使用AC2需要首先設定Docker運行環境。Docker的安裝視不同的作業系統步驟略有不同,具體操作,參見安裝Docker。本文中以Ubuntu為例,設定Docker運行環境。
apt update apt install docker.io -y安裝完畢後,通過以下命令查看Docker版本號碼,檢查是否安裝成功。

執行以下命令,啟動儲存服務storage。
docker run -d --network=host --name storage --ulimit memlock=-1 --privileged -v /storage:/storage --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm --env STORAGE_NODE_ID=10001 --env TARGET_PATHS="/storage/data0/3fs","/storage/data1/3fs","/storage/data2/3fs","/storage/data3/3fs","/storage/data4/3fs","/storage/data5/3fs","/storage/data6/3fs","/storage/data7/3fs" --env REMOTE_IP="172.16.20.172:10000" --env MGMTD_SERVER_ADDRESSES="RDMA://172.16.20.172:8000" ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/3fs:b71ffc55-fdb7.3.63-fuse3.16.2-ubuntu22.04 ./storage.sh--device=/dev/infiniband/uverbsX和--device=/dev/infiniband/rdma_cm:將eRDMA對應的使用者態字元裝置暴露到容器中。執行以下命令,查看字元裝置名稱(
uverbsX中的X):ls /dev/infiniband | grep uverbs
--env STORAGE_NODE_ID:儲存節點順序編號,如五個儲存節點,其編號依次為10001、10002、10003、10004、10005。您需要根據實際情況進行替換。--env TARGET_PATHS:3FS的儲存目錄,在本樣本中為之前在本地碟上建立的目錄。--env REMOTE_IP:設定monitor的服務地址,IP地址為monitor服務所在的節點的主私網IP地址(本樣本中和meta同節點)。--env MGMTD_SERVER_ADDRESSES:設定mgmtd服務的地址,IP地址改為啟動了mgmtd服務的節點的主私網IP地址(本樣本中和meta、monitor同節點)。
執行以下命令,查看以上啟動的節點服務(docker容器)。
docker ps
步驟四:在meta節點上查看當前串連的儲存節點
遠端連線meta節點執行個體。
具體操作,請參見使用Workbench終端串連登入Linux執行個體(SSH)。
執行以下命令,查看當前串連的節點狀態。
docker exec -it meta /opt/3fs/bin/admin_cli -cfg /opt/3fs/etc/admin_cli.toml --config.mgmtd_client.mgmtd_server_addresses '["RDMA://172.16.20.172:8000"]' "list-nodes"替換IP為上述配置的mgmtd服務的地址。

admin_cli是用於管理和維護3FS的命令列工具,您可以進行叢集配置、狀態監控、故障排查等操作。詳細資料可以通過以下命令查看:docker exec -it meta /opt/3fs/bin/admin_cli -cfg /opt/3fs/etc/admin_cli.toml --config.mgmtd_client.mgmtd_server_addresses '["RDMA://172.16.20.172:8000"]' "help"
步驟五:meta節點配置相關參數
配置儲存節點相關資訊,如副本數、單個儲存節點的盤數。
遠端連線meta節點執行個體。
具體操作,請參見使用Workbench終端串連登入Linux執行個體(SSH)。
執行以下命令,配置3FS。
docker exec \ --env STORAGE_NODE_NUM=5 \ --env STORAGE_NODE_BEGIN=10001 \ --env STORAGE_NODE_END=10005 \ --env REPLICATION_FACTOR=3 \ --env NUM_DISKS_PER_NODE=8 \ --env MGMTD_SERVER_ADDRESSES="RDMA://172.16.20.172:8000" \ meta \ ./config_3fs.sh--env STORAGE_NODE_NUM:儲存節點數量,本樣本中為5。--env STORAGE_NODE_BEGIN:儲存節點順序編號的起始,本樣本中為10001。--env STORAGE_NODE_END:儲存節點順序編號的結尾,本樣本中為10005。--env REPLICATION_FACTOR:儲存資料的副本數量,此處填3,使用3副本。--env NUM_DISKS_PER_NODE:單個儲存節點的盤數,本樣本中為8。--env MGMTD_SERVER_ADDRESSES:設定上述配置的mgmtd服務的地址。--env NUM_TARGETS_PER_DISK:單個物理磁碟預期建立的儲存目標數量,預設值為12,即每個SSD劃分12個儲存目標。--env MIN_TARGETS_PER_DISK:單個物理磁碟必須保證的最小儲存目標數量,預設值為12,即每個SSD至少保持12個可用儲存目標。
config_3fs.sh指令碼中會進行以下操作:建立管理使用者root並產生認證令牌,令牌會被提取儲存到
/opt/3fs/etc/token.txt中,供後續操作認證使用。根據傳入的參數(
STORAGE_NODE_NUM、REPLICATION_FACTOR等)產生資料分布策略,進一步根據資料分布策略產生鏈式儲存表,並上傳到管理伺服器mgmtd,完成儲存節點的目標(target)和鏈式結構(chain)的部署。
執行以下命令,確認chain是否成功建立並狀態正常。
docker exec -it meta /opt/3fs/bin/admin_cli -cfg /opt/3fs/etc/admin_cli.toml --config.mgmtd_client.mgmtd_server_addresses '["RDMA://172.16.20.172:8000"]' "list-chains"替換IP為上述配置的mgmtd服務的地址。
正常可以看到如下所示chain資訊,chain狀態正常是後續FIO測試的關鍵:

步驟六:配置fuse用戶端
在meta節點上配置fuse用戶端,使用者通過用戶端掛載遠程儲存,使得可以像操作本地系統一樣進行檔案操作。
遠端連線meta節點執行個體。
具體操作,請參見使用Workbench終端串連登入Linux執行個體(SSH)。
執行以下命令,擷取token,保證用戶端安全接入。
docker exec meta cat /opt/3fs/etc/token.txt執行以下命令,啟動fuse client。
docker run -d --network=host --name fuse --shm-size=200g --ulimit memlock=-1 --privileged \ --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm \ --env REMOTE_IP="172.16.20.172:10000" \ --env MGMTD_SERVER_ADDRESSES="RDMA://172.16.20.172:8000" \ --env TOKEN=${token} \ ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/3fs:b71ffc55-fdb7.3.63-fuse3.16.2-ubuntu22.04 \ ./fuse.sh--shm-size:設定容器內/dev/shm共用記憶體地區的大小。使用FUSE進行測試時,--shm-size可以設定為較小的值,如2g。
使用USRBIO模組進行測試時,測試進程需要通過共用記憶體的方式與FUSE進程共用IO Buffer以實現零拷貝,建議增大--shm-size,如200g。
--device=/dev/infiniband/uverbsX和--device=/dev/infiniband/rdma_cm:將eRDMA對應的使用者態字元裝置暴露到容器中。執行以下命令,查看字元裝置名稱(
uverbsX中的X):ls /dev/infiniband | grep uverbs
--env REMOTE_IP:設定monitor的服務地址,IP地址為monitor服務所在的節點的主私網IP地址(本樣本中和meta同節點)。--env MGMTD_SERVER_ADDRESSES:設定mgmtd服務的地址,IP地址改為啟動了mgmtd服務的節點的主私網IP地址(本樣本中和meta、monitor同節點)。--env TOKEN:配置為上一步擷取的token字串。
執行以下命令,查看以上啟動的節點服務(docker容器)。
docker ps
執行以下命令,查看fuse容器內檔案系統的掛載和磁碟使用方式。
docker exec fuse df -hT | grep 3fs
FIO效能測試
完成部署後,fuse節點的docker容器內就得到了一個基於3fs的使用erdma進行節點間通訊的高效能Distributed File System。
FIO(Flexible I/O Tester) 是一款開源的儲存效能基準測試載入器,專為評估儲存系統(如硬碟、SSD、Distributed File System)的I/O能力而設計。其核心價值在於能夠類比真實業務情境的負載模型,通過高度可配置的測試參數,精準量化存放裝置的輸送量、IOPS、延遲等關鍵效能指標。
下面我們通過FIO對部署的3fs檔案系統進行效能測試。
使用usrbio測試(使用者態RDMA引擎)
在fuse容器中,啟動100個作業,類比高並發大檔案順序寫的業務情境,測試3fs在eRDMA網路下的極限效能。hf3fs_usrbio.so 引擎啟用使用者態RDMA通訊,相比核心態FUSE,實現零拷貝RDMA最佳化,效能有較大提升。
遠端連線meta節點執行個體。
具體操作,請參見使用Workbench終端串連登入Linux執行個體(SSH)。
執行以下命令,開始測試。
docker exec -it fuse \ fio -numjobs=100 -fallocate=none \ -ioengine=external:/usr/lib/hf3fs_usrbio.so \ -direct=1 \ -rw=write \ -bs=4MB \ --group_reporting \ -filesize=500MB \ --nrfiles=100 \ -iodepth=1 \ -name=/3fs/test \ -mountpoint=/3fs \ -ior_depth=1-numjobs=100:啟動100個並發作業(線程/進程),類比多線程並發寫入情境,測試系統在高並發下的吞吐能力和鎖競爭情況。-ioengine=external:/usr/lib/hf3fs_usrbio.so:使用3FS專用RDMA引擎。-direct=1:啟用直接I/O(繞過作業系統緩衝)。-rw=write:測試模式為順序寫入(順序寫入大檔案),評估連續寫入頻寬(Bandwidth)。-bs=4M:設定塊大小(Block Size) 為4MB,類比大塊資料寫入情境(如視頻流、批量資料處理)--group_reporting:合并所有作業的結果進行匯總輸出,便於查看整體效能,而非單個作業的獨立資料。-filesize=500MB:每個作業寫入500MB資料。總資料量為500MB × 100 個作業 = 50GB。--nrfiles=100:總共建立100個檔案(每個作業寫入一個檔案),測試多檔案並發寫入效能。-iodepth=1:每個作業的 I/O 隊列深度為1(即每個作業僅提交1個I/O請求)。-mountpoint=/3fs:指定3FS檔案系統掛載路徑為/3fs目錄。-ior_depth=1:指定RDMA發送隊列深度,設定為1,表示同步I/O模式。
測試過程中,您可以在fuse所在節點執行個體的監控頁面,查看執行個體的eRDMA流量情況。 詳細資料,請參見監控網路頻寬。

等待測試完成,查看測試結果。

核心指標結果如下:
吞吐能力:
IOPS=2621:每秒2621次4MB寫操作。BW=10.2GiB/s (11.0GB/s):實際測試頻寬達到10.2GiB/s。
系統資源消耗:
cpu: usr=1.21%, sys=0.02%:超低CPU使用率(eRDMA優勢顯著)。
使用posix測試(核心態libaio引擎)
在fuse容器中,使用Linux非同步I/O引擎,啟動2個作業(類比並發寫入),設定4MB資料區塊大小測試順序寫入情境下的頻寬,並且持續運行5分鐘,測試穩定性。
遠端連線meta節點執行個體。
具體操作,請參見使用Workbench終端串連登入Linux執行個體(SSH)。
執行以下命令,開始測試。
docker exec -it fuse \ fio -numjobs=2 -fallocate=none \ -iodepth=2 \ -ioengine=libaio \ -direct=1 \ -rw=write \ -bs=4M \ --group_reporting \ -size=100M \ -time_based \ -runtime=300 \ -name=2depth_128file_4M_direct_write_bw \ -directory=/3fs-numjobs=2:啟動2個並發作業(線程/進程),類比多線程並發寫入情境,測試系統在高並發下的吞吐能力和鎖競爭情況。-iodepth=2:每個作業的 I/O 隊列深度為 2(即每個作業同時提交2個I/O請求)。-ioengine=libaio:使用Linux非同步I/O引擎(libaio),支援非阻塞I/O。-direct=1:啟用直接I/O(繞過作業系統緩衝)。-rw=write:測試模式為順序寫入(順序寫入大檔案),評估連續寫入頻寬(Bandwidth)。-bs=4M:設定塊大小(Block Size) 為4MB,類比大塊資料寫入情境(如視頻流、批量資料處理)--group_reporting:合并所有作業的結果進行匯總輸出,便於查看整體效能,而非單個作業的獨立資料。-size=100M:每個作業寫入100MB資料(總資料量 = 100MB × 2 個作業 = 200MB)。-time_based與-runtime=300:已耗用時間為 300 秒(5 分鐘),即使提前完成資料寫入也持續運行,測試長時間寫入的穩定性。-directory=/3fs:指定3FS檔案系統掛載路徑為/3fs目錄。
測試過程中,您可以在fuse所在節點執行個體的監控頁面,查看執行個體的eRDMA流量情況。 詳細資料,請參見監控網路頻寬。

等待測試完成,查看測試結果。

核心指標結果如下:
吞吐能力:
IOPS=715:每秒715次4MB寫操作(715*4MB=2860MB/s)。BW=2862MiB/s (3001MB/s):實際頻寬達到約2.795GiB/s。
系統資源消耗:
cpu: usr=18.66%, sys=2.55%:使用者態CPU消耗較高(libaio引擎開銷)。