Ubuntu 20.04 上安装 SPDK

发布于:2025-07-28 ⋅ 阅读:(22) ⋅ 点赞:(0)

以下是在 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. 克隆 SPDK 仓库

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

3. 安装 SPDK 依赖

# 运行依赖安装脚本
sudo ./scripts/pkgdep.sh


4. Linux下编译 SPDK

# 配置编译选项
./configure

# 编译
make

5. 运行单元测试(可选但推荐)

# 运行基础测试
sudo ./test/unit/unittest.sh

6. 巨页与设备绑定

# 分配巨页
sudo scripts/setup.sh

#用户也可以自己指定大小:

   sudo HUGEMEM=8192 scripts/setup.sh

7. 验证安装

# 运行示例应用程序
sudo ./build/examples/hello_world

# 检查 NVMe 设备
sudo ./scripts/setup.sh status

# 运行交互式控制台
sudo ./scripts/rpc.py get_subsystems

8. 运行 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' 

这个警告是由于 NASM 汇编器版本过旧导致的,Ubuntu 20.04 默认安装的 NASM 2.14.02 不支持较新的 ELF 节属性

# 安装编译依赖
sudo apt install -y build-essential autoconf automake

# 下载并编译安装 NASM 2.16.01
wget https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/nasm-2.16.01.tar.gz
tar -xvf nasm-2.16.01.tar.gz
cd nasm-2.16.01
./autogen.sh
./configure
make -j$(nproc)
sudo make install
sudo ldconfig  # 更新库缓存

卸载 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 master(2025/07/25) 版本。根据您的硬件配置,可能需要调整大页内存大小或选择不同的设备绑定方式(UIO/VFIO)。


网站公告

今日签到

点亮在社区的每一天
去签到