以下是在 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)。