如何在 Ubuntu 20.04 上安装 vdo/kvdo?

如何在 Ubuntu 20.04 上安装 vdo/kvdo?

我想知道有没有办法安装红帽的 vdo在 Ubuntu 20.04 中。

到目前为止,我已经尝试下载来源并编译它,但出现以下错误:

cc -fPIC -fpic -D_GNU_SOURCE -g -O3 -fno-omit-frame-pointer -Wall -Wcast-align -Werror -Wextra -Winit-self -Wlogical-op -Wmissing-include-dirs -Wpointer-arith -Wredundant-decls -Wunused -Wwrite-strings    -std=gnu99 -pedantic -Wbad-function-cast -Wcast-qual -Wfloat-equal -Wformat=2 -Wmissing-declarations -Wmissing-format-attribute -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wswitch-default   -I. -I../uds -Wno-write-strings -DCURRENT_VERSION="\"8.1.0.316\""   -c -MMD -MF .deps/vdoformat.d.new -MP -MT vdoformat.o -o vdoformat.o vdoformat.c
vdoformat.c:22:10: fatal error: blkid/blkid.h: No such file or directory
   22 | #include <blkid/blkid.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.

我不明白为什么会收到错误,因为我有libblkid软件包已经安装。


真正让我烦恼的是有一个手册页左心室(我猜是从 Red Hat VDO 到 Ubuntu 的“端口”)但它只说:

为了将 VDO 与 lvm(8) 一起使用,需要在系统上安装标准 VDO 用户空间工具 vdoformat(8) 和当前非标准内核 VDO 模块“kvdo”。

我确实在Ubuntu 20.04中默认安装了lvm包,但是我找不到安装方法视频格式也不克夫多包。

答案1

我不明白为什么会收到错误,因为我已经安装了 libblkid 软件包。

您需要libblkid-dev包含blkid/blkid.h头文件的包。

真正让我烦恼的是,有一个 lvmvdo 的联机帮助页(我猜是从 RedHat VDO 到 Ubuntu 的“端口”),但它只说:

不,这不是 VDO 的端口,这是 VDO 的集成左心室容量它允许您创建启用重复数据删除和/或压缩的 LVM 逻辑卷。这不是 VDO 的重新实现,LVM 使用现有的 VDO 代码——vdoformat用户空间工具和kvdo内核模块,因此您仍然需要安装两者才能使 LVM 实现工作。

我确实在 Ubuntu 20.04 中默认安装了 lvm 软件包,但我找不到安装 vdoformat 或 kvdo 软件包的方法。

VDO 在 Ubuntu 中不可用(20.10 的愿望清单错误)所以你需要自己编译它(你已经开始了)但是你需要编译并手动安装DM-VDO/VDO包含用户空间工具(包括vdoformatLVM 使用的)和DM-VDO/KVDO包含内核模块的项目(即kvdolvmvdo 手册页中提到的“包”)。

答案2

经过几天的尝试和错误......我找到了实际使用的方法维多在 Ubuntu 中(至少在 20.04 中)...

首先,快速更新,然后安装一些必要的软件包:

apt update -y && apt upgrade -y && \
apt install git build-essential libdevmapper-dev libz-dev uuid-dev flex bison linux-source libblkid-dev -y

现在,为了确保安全,将内核(默认为 5.4)升级到 5.9,然后重新启动:

wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9/amd64/linux-headers-5.9.0-050900_5.9.0-050900.202010112230_all.deb && \
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9/amd64/linux-headers-5.9.0-050900-generic_5.9.0-050900.202010112230_amd64.deb && \
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9/amd64/linux-image-unsigned-5.9.0-050900-generic_5.9.0-050900.202010112230_amd64.deb && \
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9/amd64/linux-modules-5.9.0-050900-generic_5.9.0-050900.202010112230_amd64.deb && \
dpkg -i *.deb && \
shutdown now -r

您现在需要克夫多这是能够使用 vdo 的内核实用程序,下一个命令克隆存储库,然后编译它:

git clone https://github.com/rhawalsh/kvdo.git && \
cd kvdo && \
make -C /usr/src/linux-headers-5.9.0-050900-generic/ M=$('pwd') modules

然后更新我们的模块.symvers,并将 kvdo 模块复制到相应的文件夹中:

cat Module.symvers >> /lib/modules/5.9.0-050900-generic/build/Module.symvers && \
mkdir /lib/modules/5.9.0-050900-generic/extra/ && \
cp /opt/kvdo/uds/uds.ko /lib/modules/5.9.0-050900-generic/extra/ && \
cp /opt/kvdo/vdo/kvdo.ko /lib/modules/5.9.0-050900-generic/extra/

现在我们要求内核更新所有模块,然后检查是否已安装(如果modprobe kvdo没有显示任何内容,则已正确安装):

depmod -a && \
modprobe kvdo

您可以测试已安装的kvdo版本:

modinfo kvdo

modinfo kvdo
filename:       /lib/modules/5.9.0-050900-generic/extra/kvdo.ko
version:        8.1.0.316
license:        GPL
author:         Red Hat, Inc.
description:    device-mapper target for transparent deduplication
srcversion:     F021DCCB4284C7E05BCCF77
depends:        uds
retpoline:      Y
name:           kvdo
vermagic:       5.9.0-050900-generic SMP mod_unload 

内核工具已安装,现在我们需要用户空间工具(维多),下一个命令克隆 vdo repo 并编译它:

git clone https://github.com/rhawalsh/vdo.git && \
cd vdo && \
make && \
make install

可以测试是否安装正确:

vdoformat --version

现在你可以像在 CentOS 中一样使用 vdo......

相关内容