我需要用图书库构建一个fio的码头映像,这样我就可以设置ioengine=rbd了。我正在为arch aarch64建筑。当我使用ioengine=rbd运行fio时,会发现一个错误,即无法加载图书。这里的任何帮助都很感激。
这里是我的Dockerfile:
# syntax=docker/dockerfile:1
From alpine
RUN apk add --update-cache fio librbd --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community我构建并推进了我的码头形象:
$ sudo docker build . -t manjo8/fio
Sending build context to Docker daemon 2.048kB
Step 1/2 : From alpine
---> bb3de5531c18
Step 2/2 : RUN apk add --update-cache fio librbd --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
---> Running in 68e44788feb0
fetch http://dl-cdn.alpinelinux.org/alpine/edge/community/aarch64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/main/aarch64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/community/aarch64/APKINDEX.tar.gz
(1/19) Installing libaio (0.3.112-r1)
(2/19) Installing numactl (2.0.14-r0)
(3/19) Installing fio (3.28-r1)
(4/19) Installing libblkid (2.37.2-r0)
(5/19) Installing libbz2 (1.0.8-r1)
(6/19) Installing libgcc (10.3.1_git20210424-r2)
(7/19) Installing xz-libs (5.2.5-r0)
(8/19) Installing boost1.76-iostreams (1.76.0-r0)
(9/19) Installing boost1.76-thread (1.76.0-r0)
(10/19) Installing libstdc++ (10.3.1_git20210424-r2)
(11/19) Installing fmt (7.1.3-r1)
(12/19) Installing eudev-libs (3.2.10-r0)
(13/19) Installing librados (16.2.6-r1)
(14/19) Installing argon2-libs (20190702-r1)
(15/19) Installing device-mapper-libs (2.02.187-r1)
(16/19) Installing json-c (0.15-r1)
(17/19) Installing libuuid (2.37.2-r0)
(18/19) Installing cryptsetup-libs (2.3.6-r0)
(19/19) Installing librbd (16.2.6-r6)
Executing busybox-1.33.1-r3.trigger
OK: 26 MiB in 33 packages
Removing intermediate container 68e44788feb0
---> 1534fb8d9308
Successfully built 1534fb8d9308
Successfully tagged manjo8/fio:latest当我运行映像时,会发现一个错误,它无法加载图书数据库.。
fio-5c6dc65894-bh7dt
fio: file:ioengines.c:127, func=dlopen, error=Error loading shared library rbd: No such file or directory
fio: engine rbd not loadable
fio: failed to load engine发布于 2021-12-01 23:49:03
如果您查看为fio构建日志,它会说它正在构建不支持Rados设备引擎的fio:
Rados Block Device engine no所以,唯一要做的就是从源头上构建它。使用来自阿尔卑斯山的构建脚本,再加上一些谷歌搜索如何使用rbd支持构建fio,我想出了以下内容:
From alpine
ENV fio_version=3.28
RUN set -vuo pipefail \
&& apk add --no-cache libaio-dev librados librbd \
&& apk add --no-cache --virtual .build-deps linux-headers zlib-dev coreutils gcc make musl-dev ceph-dev \
&& cd /tmp \
&& wget https://github.com/axboe/fio/archive/fio-$fio_version.tar.gz \
&& tar -xzf fio-$fio_version.tar.gz \
&& rm /tmp/fio-$fio_version.tar.gz \
&& cd /tmp/fio-fio-$fio_version \
&& ./configure \
--prefix=/usr \
--disable-native \
&& make -j \
&& make install \
&& rm -rf /tmp/fio-fio-$fio_version \
&& apk del --no-network .build-deps我只能以有限的方式测试它,因为我没有ceph集群,但是我能够克服您所犯的错误。
我还花费了一些精力来优化构建,这样它就不会因为将构建时依赖关系包含到映像中而浪费空间。(这是上面看到的--virtual .build-deps和apk del .build-deps阶段。)
https://stackoverflow.com/questions/70191844
复制相似问题