如何在 Ubuntu 20.04 上安裝 vdo/kvdo?
我想知道是否有辦法在 Ubuntu 20.04中安裝Red Hat 的 vdo 。
到目前為止,我已經嘗試下載原始碼並進行編譯,但出現以下錯誤:
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包。
真正困擾我的是lvmvdo有一個聯機幫助頁(我猜是 Red Hat VDO 到 Ubuntu 的“埠”),但它只說:
為了使用 lvm(8) 標準 VDO 使用者空間工具 vdoformat(8) 和目前非標準核心 VDO 模組“kvdo”,需要在系統上安裝 VDO。
我確實在 Ubuntu 20.04 中預設安裝了 lvm 包,但我找不到安裝vdoformat或kvdo包的方法。
經過幾天的嘗試和錯誤…我找到了在 Ubuntu 中實際使用vdo的方法(至少在 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
您現在需要kvdo,它是能夠使用 vdo 的核心實用程序,下一個命令複製 repo 然後編譯它:
git clone https://github.com/rhawalsh/kvdo.git && \ cd kvdo && \ make -C /usr/src/linux-headers-5.9.0-050900-generic/ M=$('pwd') modules
然後更新我們的Module.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),接下來的命令複製 vdo 儲存庫並編譯它:
git clone https://github.com/rhawalsh/vdo.git && \ cd vdo && \ make && \ make install
您可以測試它是否安裝正確:
vdoformat --version
現在您可以像在 CentOS 中一樣使用 vdo….
我不明白為什麼會出現錯誤,因為我已經安裝了 libblkid 包。
您需要
libblkid-dev
包含blkid/blkid.h
標頭檔的包。真正困擾我的是 lvmvdo 的聯機幫助頁(我猜是 RedHat VDO 到 Ubuntu 的“埠”),但它只說:
不,這不是 VDO 的一個埠,這是將 VDO 集成到LVM中,它允許您創建啟用重複數據刪除和/或壓縮的 LVM 邏輯卷。這不是對 VDO 的重新實現,LVM 使用現有的 VDO 程式碼——
vdoformat
使用者空間工具和kvdo
核心模組,因此您仍然需要安裝兩者才能使 LVM 實現工作。我確實在 Ubuntu 20.04 中預設安裝了 lvm 包,但我找不到安裝 vdoformat 或 kvdo 包的方法。
VDO 在 Ubuntu 中不可用(wishlist bug for 20.10)所以你需要自己編譯它(你已經開始了)但是你需要編譯並手動安裝包含使用者空間工具的dm-vdo/vdo項目(包括
vdoformat
使用LVM)和包含核心模組的dm-vdo/kvdokvdo
項目(即lvmvdo 手冊頁中提到的“包”)。