Ubuntu 20.04 上安裝 SPDK

以下是在 Ubuntu 20.04 上安裝 SPDK (Storage Performance Development Kit) 的完整步驟:

1. 系統準備

# 更新系統
sudo apt update
sudo apt upgrade -y# 安裝基礎依賴
sudo apt install -y git make gcc g++ libssl-dev libaio-dev libnuma-dev \pkg-config python3 python3-pip libjson-c-dev uuid-dev \libiscsi-dev libncurses5-dev ninja-build

2. 安裝 DPDK 依賴

# 安裝 DPDK 構建依賴
sudo apt install -y libpcap-dev libelf-dev meson# 設置大頁內存(必需)
sudo bash -c "echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages"
sudo mkdir -p /mnt/huge
sudo mount -t hugetlbfs nodev /mnt/huge# 永久配置(可選)
echo "vm.nr_hugepages=1024" | sudo tee -a /etc/sysctl.conf
echo "nodev /mnt/huge hugetlbfs defaults 0 0" | sudo tee -a /etc/fstab

3. 克隆 SPDK 倉庫

git clone https://github.com/spdk/spdk.git
cd spdk
git submodule update --init

4. 安裝 SPDK 依賴

# 運行依賴安裝腳本
sudo ./scripts/pkgdep.sh# 安裝 Python 依賴
pip3 install -r ./scripts/pyrequirements.txt

5. 編譯 SPDK

# 配置編譯選項
./configure --with-iscsi-initiator --with-vhost --with-nvme-cuse# 編譯安裝
make -j$(nproc)

6. 運行單元測試(可選但推薦)

# 運行基礎測試
sudo ./test/unit/unittest.sh

7. 設置環境變量

# 添加環境變量到 .bashrc
echo "export SPDK_ROOT=\"$PWD\"" >> ~/.bashrc
echo "export DPDK_ROOT=\"$PWD/dpdk\"" >> ~/.bashrc
echo "export PATH=\"\$PATH:$PWD/build/bin\"" >> ~/.bashrc
echo "export PYTHONPATH=\"$PWD/scripts\"" >> ~/.bashrc
source ~/.bashrc

8. 初始化 SPDK 環境

# 設置 Hugepages 和加載驅動
sudo scripts/setup.sh# 輸出應顯示類似:
0000:00:04.0 (8086 0c00): nvme -> uio_pci_generic

9. 驗證安裝

# 運行示例應用程序
sudo ./build/examples/hello_world# 檢查 NVMe 設備
sudo ./scripts/setup.sh status# 運行交互式控制臺
sudo ./scripts/rpc.py get_subsystems

10. 運行 SPDK 應用程序

# 啟動 SPDK 應用框架
sudo ./app/spdk_tgt/spdk_tgt &# 使用 RPC 命令管理
sudo ./scripts/rpc.py bdev_get_bdevs

常見問題解決

問題1:依賴下載失敗問題

? ??# 只要版本沒錯,多執行幾遍就可以,如果多執行幾遍還是同樣錯誤,直接自己下源碼去安裝

問題2:大頁內存分配失敗

# 檢查大頁內存
grep Huge /proc/meminfo# 如果未分配,手動設置
sudo sysctl vm.nr_hugepages=1024

問題3:UIO 驅動加載失敗

# 檢查內核模塊
sudo modprobe uio
sudo modprobe uio_pci_generic# 如果使用 VFIO
sudo ./scripts/setup.sh --vfio

問題4:NVMe 設備未綁定

# 手動綁定設備
sudo ./scripts/setup.sh reset
sudo ./scripts/setup.sh

問題5:系統安裝的Meson版本低于spdk要求

# 1. 卸載舊版 Meson
sudo apt remove meson -y
sudo pip3 uninstall meson -y# 2. 安裝 Python 環境(如未安裝)
sudo apt install python3-pip python3-venv -y# 3. 安裝最新版 Meson (推薦虛擬環境安裝)
python3 -m venv meson-env
source meson-env/bin/activate
pip install --upgrade pip wheel
pip install meson==1.3.2  # 安裝最新穩定版# 4. 驗證安裝
meson --version
# 應顯示 1.x.x 版本# 5. 永久添加環境變量(可選)
echo "source $PWD/meson-env/bin/activate" >> ~/.bashrc

問題6:warning: Unknown section attribute 'note' ignored on declaration of section `.note.gnu.property'?

# 安裝依賴
sudo apt install build-essential bison flex texinfo -y# 下載源碼
wget https://ftp.gnu.org/gnu/binutils/binutils-2.41.tar.gz
tar xvf binutils-2.41.tar.gz
cd binutils-2.41# 編譯安裝
./configure --prefix=/usr/local --enable-gold --enable-plugins --disable-werror
make -j$(nproc)
sudo make install# 更新系統路徑
echo 'export PATH="/usr/local/bin:$PATH"' | sudo tee /etc/profile.d/binutils.sh
source /etc/profile.d/binutils.sh# 驗證
as --version | head -1

卸載 SPDK

# 停止所有 SPDK 應用
sudo killall spdk_tgt# 清理環境
sudo ./scripts/setup.sh reset# 卸載驅動
sudo rmmod uio_pci_generic
sudo rmmod uio# 刪除源碼
cd .. && sudo rm -rf spdk

額外組件安裝

安裝 SPDK Vhost 目標

./configure --with-vhost
make -j$(nproc)

安裝 FIO 插件

# 安裝 FIO
sudo apt install -y fio# 構建 SPDK FIO 插件
cd spdk
./configure --with-fio=/usr/src/fio
make -j$(nproc)

此安裝流程已在 Ubuntu 20.04 LTS 上測試通過,支持最新 SPDK v23.09 版本。根據您的硬件配置,可能需要調整大頁內存大小或選擇不同的設備綁定方式(UIO/VFIO)。

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

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

相關文章

解決WPS圖片在Excel表格中無法打開

若出現無法打開的情況,還請回到WPS中,點擊圖片,右鍵:轉化為浮動圖片保存,然后便能正常打開!

【Ollama】open-webui部署模型

目錄 一、本地部署Ollama 1.1 進入官網復安裝命令 1.2 執行安裝命令 1.3 驗證是否安裝成功 二、啟動Ollama服務 三、運行模型 方法一:拉取模型鏡像 方法二:拉取本地模型 四、使用Open WebUI 部署模型 4.1 創建虛擬環境 4.2 安裝依賴 4.3 運行…

C#文件操作(創建、讀取、修改)

判斷文件是否存在 不存在則創建默認文件 并寫入默認值/// <summary>/// 判斷文件是否存在 不存在則創建默認文件 并寫入默認值/// </summary>public void IsConfigFileExist(){try{// 獲取應用程序的當前工作目錄。string fileName System.IO.Directory.GetCurr…

基于阿里云平臺的文章評價模型訓練與應用全流程指南

基于阿里云平臺的文章評價模型訓練與應用全流程指南 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家&#xff0c;覺得好請收藏。點擊跳轉到網站。 1. 項目概述 1.1 項目背景 在當今信息爆炸的時代&…

AI 及開發領域動態與資源匯總(2025年7月24日)

AI 項目、工具及動態匯總 項目/產品名稱核心功能/簡介主要特點/亮點相關鏈接Supervision一個流行的計算機視覺工具庫&#xff0c;用于加速計算機視覺應用的構建。模型無關&#xff0c;可與多種主流庫集成&#xff1b;提供豐富的可定制標注工具&#xff1b;支持多種數據集操作和…

C專題8:文件操作1

1.C語言中的文件是什么?所謂文件&#xff08;file&#xff09;一般指存儲在外部介質上數據的集合&#xff0c;比如我們經常使用的txt、bmp、jpg、exe、rmvb等等。這些文件各有各的用途&#xff0c;我們通常將它們存放在磁盤或者可移動盤等介質中。文件無非就是一段數據的集合&…

Opencv C# 重疊 粘連 Overlap 輪廓分割 (不知道不知道)

先上效果圖一種基于凹陷檢測重疊輪廓分割的方法這兩個星期壓力大的一批&#xff0c;心臟都給干得亂跳了&#xff0c;現在高血壓心率不齊貧血。兄弟們保重身體啊。簡單說下邏輯&#xff1a;前處理&#xff1a;的噼里啪啦我就不說了&#xff0c;根據樣品來(灰度&#xff0c;濾波&…

CentOS7 安裝 rust 1.82.0

CentOS7 安裝 rust 1.82.0 我在CentOS7.9中安裝rust遇到報錯版本低&#xff0c;再升級版本的過程中遇到諸多問題&#xff0c;簡單記錄。 遇到的問題 提示版本低 centos7 安裝 ERROR: Rust 1.75.0 or newer required.Rust version 1.72.1 was found.原因是 CentOS7 的默認的軟件…

Compose 適配 - 鍵鼠模式

一、概念不止觸摸交互&#xff0c;在 ChromeOS 或外接鍵鼠的設備上&#xff0c;需要考慮焦點、懸停、右鍵等操作邏輯。二、使用2.1 焦點使用 Tab 鍵來導航&#xff0c;改變邊框以提供清晰的焦點指示器。Composable fun Demo() {val interactionSource remember { MutableInter…

征服 Linux 網絡:核心服務與實戰解析

在當今的IT基礎設施中&#xff0c;Linux作為服務器操作系統的基石&#xff0c;其強大的網絡功能是其不可或缺的優勢。對于任何志在成為高級系統管理員或運維工程師的人來說&#xff0c;精通Linux網絡配置與服務管理是核心競爭力。 與日常應用不同&#xff0c;Linux網絡管理往往…

Spark 之 DataFrame

# foreach useFeatureDF.rdd.foreachPartition {iter => iter.foreach {row =>val userId = row.getAs[Int]

射頻信號(大寬高比)時頻圖目標檢測anchors配置(下)

書接上文&#xff1a; 射頻信號&#xff08;大寬高比&#xff09;時頻圖目標檢測anchors配置&#xff08;上&#xff09; 三、4090加成檢測效果深度優化 在4090 24G專用顯存加持下繼續探究大寬高比目標檢測的奧秘&#xff1a; Conda環境遷移至租的云服 在云服上第一次測試…

跨境支付入門~國際支付結算(區塊鏈篇)

摘要Web3區塊鏈技術架構解析&#xff1a;從底層共識到應用生態本文系統梳理了Web3作為穩定幣基礎設施的技術架構&#xff0c;采用"數字共和國"的比喻框架&#xff0c;將區塊鏈技術分解為六大核心模塊&#xff1a;憲法根基&#xff08;區塊鏈層&#xff09;&#xff1…

Docker 私服

什么是 Docker 私服&#xff1f; Docker 官方的 Docker Hub 是一個用于管理公共鏡像的倉庫&#xff0c;我們可以從上面拉取鏡像 到本地&#xff0c;也可以把我們自己的鏡像推送上去。 但是&#xff0c;有時候我們的服務器無法訪問互聯網&#xff0c;或者你不希望將自己的鏡像…

DeepSeek vs ChatGPT:誰更勝一籌?

新興 AI 聊天機器人的崛起與挑戰&#xff1a;對話模型發展觀察近年來&#xff0c;生成式人工智能領域持續取得突破&#xff0c;聊天機器人作為其中的代表&#xff0c;廣泛應用于寫作、編程、問答和信息處理等任務。2025 年初&#xff0c;國內某 AI 團隊宣布了多項模型技術進展&…

飛算科技:以原創技術為翼,賦能產業數字化轉型

在數字經濟浪潮席卷全球的當下&#xff0c;一批專注于技術創新的中國企業正加速崛起&#xff0c;飛算數智科技&#xff08;深圳&#xff09;有限公司&#xff08;簡稱 “飛算科技”&#xff09;便是其中的佼佼者。作為一家國家級高新技術企業&#xff0c;飛算科技以自主創新為核…

電商接口什么意思?

“電商接口”這四個字&#xff0c;在中文互聯網上出現的頻次越來越高&#xff1a;商家后臺、小程序、ERP、數據大屏……幾乎任何與線上零售沾邊的場景都會提到它。然而&#xff0c;對大多數剛進入電商行業的新人&#xff0c;甚至一些已經開了很多年網店的老板來說&#xff0c;這…

前端面試專欄-前沿技術:30.跨端開發技術(React Native、Flutter)

&#x1f525; 歡迎來到前端面試通關指南專欄&#xff01;從js精講到框架到實戰&#xff0c;漸進系統化學習&#xff0c;堅持解鎖新技能&#xff0c;祝你輕松拿下心儀offer。 前端面試通關指南專欄主頁 前端面試專欄規劃詳情 跨端開發技術&#xff08;React Native、Flutter&am…

復盤—MySQL觸發器實現監聽數據表值的變化,對其他數據表做更新

文章目錄 MySQL交換數據庫表中兩列的值(額外的知識) 為防止后面有疑問,提前解釋為什么需要 `$$` ? 第一版需求 第二版需求 第三版需求 注意事項: 存在的嚴重問題 最終版 關鍵修復說明: 完整測試場景: 額外建議(如果需要顯式處理NULL): COALESCE函數 業務中出現的問題…

SpringCloud【Sentinel】

1&#xff0c;工作原理 2&#xff0c;常見規則 流量控制&#xff08;FlowRule&#xff09; 1&#xff0c;閾值類型設置如下 單機均攤&#xff1a;每個機器均攤&#xff0c;比如閾值填5&#xff0c;三個機器&#xff0c;就個機器都可以有5個 總體閾值&#xff1a;所有機器總閾…