aarch64架构构建带librbd的fio Docker镜像运行无法加载librbd求助
问题根因
- Alpine官方源预置的
fio二进制包编译时未开启RBD引擎支持,未生成对应的rbd ioengine动态加载模块,仅单独安装librbd运行库无法让fio识别rbd引擎 - 部分版本Alpine的fio默认插件扫描路径与edge源librbd的安装路径不匹配,即使手动添加模块也会出现找不到库的问题
修复方案
方案:基于Alpine源码编译开启RBD支持的fio(适配aarch64架构)
使用以下Dockerfile重新构建镜像,编译时主动开启rbd引擎编译选项,生成的镜像原生支持ioengine=rbd参数:
# syntax=docker/dockerfile:1 FROM alpine:3.18 RUN set -ex \ # 安装编译依赖包 && apk add --update-cache --virtual .build-deps \ build-base \ linux-headers \ librbd-dev \ librados-dev \ wget \ # 安装运行时依赖库 && apk add --update-cache \ librbd \ librados \ libaio \ numactl \ # 下载fio源码编译 && wget https://github.com/axboe/fio/archive/refs/tags/fio-3.35.tar.gz -O /tmp/fio.tar.gz \ && tar -zxf /tmp/fio.tar.gz -C /tmp \ && cd /tmp/fio-fio-3.35 \ && ./configure --enable-rbd \ && make -j "$(nproc)" \ && make install \ # 清理冗余文件减小镜像体积 && rm -rf /tmp/* \ && apk del .build-deps \ && rm -rf /var/cache/apk/*
功能验证方法
- 镜像构建完成后执行以下命令验证rbd引擎是否正常识别:
docker run --rm manjo8/fio fio --enghelp | grep rbd
输出包含rbd即说明引擎加载正常
2. 实际运行fio压测任务时,需将Ceph集群的ceph.conf配置文件和对应密钥环文件挂载到容器的/etc/ceph目录下,即可正常使用rbd引擎读写块设备
内容的提问来源于stack exchange,提问作者user3304297
相关产品推荐
相关产品推荐

