Open tigerblue77 opened 1 year ago
Hello, I also modified it in order to use the repo https://github.com/dm-vdo/kvdo And I am testing it on rasbian 11
# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
# uname -r
5.15.84-v8+
# modinfo kvdo
filename: /lib/modules/5.15.84-v8+/updates/dkms/kvdo.ko.xz
version: 8.2.1.3
license: GPL
author: Red Hat, Inc.
description: device-mapper target for transparent deduplication
srcversion: 0C084846338C846253167E3
depends: dm-mod,dm-bufio,lz4_compress
name: kvdo
vermagic: 5.15.84-v8+ SMP preempt mod_unload modversions aarch64
install_dependencies() {
(( ${#} > 1 )) && {
apt update && \
apt install -y "$@"
} || echo "No dependency to install"
}
clean_dependencies() {
(( ${#} > 1 )) && {
apt autoremove --purge -y "$@"
} || echo "No dependency to remove"
}
clone_repo() {
(( ${#} == 1 )) && {
local TEMPORARY_DIRECTORY=$(mktemp -d "/tmp/${1/*\/}.XXX") && \
git clone "$1" "${TEMPORARY_DIRECTORY}" && \
cd "${TEMPORARY_DIRECTORY}" && \
pwd -P
}
}
# Usage: clean $WORK_DIRECTORY $DEPENDENCIES $OTHERS $...
clean() {
(( ${#} >= 1 )) && {
clean_dependencies "${*:2}" > /dev/null 2>&1 &
rm -Rf "$1" &
wait
}
}
set -x
# First part : KVDO module
DEPENDENCIES="make linux-headers-$(uname -r)"
install_dependencies $DEPENDENCIES dkms > /dev/null 2>&1
KVDO_ARCHIVE_NAME="kvdo"
KVDO_ARCHIVE_PATH="/tmp/$KVDO_ARCHIVE_NAME"
KVDO_MODULE_PATH="/usr/src"
(cd /tmp; git clone https://github.com/dm-vdo/kvdo.git;)
(cd $KVDO_ARCHIVE_PATH || { echo "kvdo repo not found!"; exit 3; }; git pull )
KVDO_module_version_to_install=`sed -rn '/VDO_VERSION/s/.* =| //gp' /tmp/kvdo/vdo/Makefile`
cp -a $KVDO_ARCHIVE_PATH $KVDO_MODULE_PATH/kvdo-$KVDO_module_version_to_install
(cd $KVDO_MODULE_PATH/kvdo-$KVDO_module_version_to_install && rm -rf .git)
echo "PACKAGE_NAME=\"kvdo\"
PACKAGE_VERSION=\"$KVDO_module_version_to_install\"
AUTOINSTALL=\"yes\"
BUILT_MODULE_NAME[0]=\"kvdo\"
BUILT_MODULE_LOCATION[0]=\"vdo\"
DEST_MODULE_LOCATION[0]=\"/kernel/drivers/block/\"
STRIP[0]=\"no\"" > "$KVDO_MODULE_PATH/kvdo-$KVDO_module_version_to_install/dkms.conf"
dkms add "kvdo/$KVDO_module_version_to_install"
dkms build "kvdo/$KVDO_module_version_to_install"
dkms install "kvdo/$KVDO_module_version_to_install"
clean $DEPENDENCIES $KVDO_ARCHIVE_PATH
# Second Part: VDO Module
DEPENDENCIES="git make gcc uuid-dev libz-dev libdevmapper-dev libblkid-dev"
install_dependencies $DEPENDENCIES > /dev/null 2>&1
WORK_DIRECTORY="$(clone_repo https://github.com/dm-vdo/vdo.git)"
(
cd "${WORK_DIRECTORY}" && \
make -j"$(nproc)" && \
make -j"$(nproc)" install
) > vdo_build.log 2>&1
clean "${WORK_DIRECTORY}" $DEPENDENCIES
depmod --quick
Note that for the
KVDO_module_version_to_install="8.2.1.2.fixed"
wget -O $KVDO_ARCHIVE_PATH "https://github.com/tigerblue77/kvdo/archive/refs/tags/$KVDO_module_version_to_install.tar.gz"
The compilation broke and needed this patch
sed -r -i 's/BIO_MAX_PAGES/BIO_MAX_VECS/g' /var/lib/dkms/kvdo/8.2.1.2.fixed/source/vdo/vio.h
But the dm-vdo one worked unpatched.
Hey @basos9, glad that my script helped you. I now use Ansible to do all of this waiting for KVDO to be included in Kernel.
The compilation broke and needed this patch
sed -r -i 's/BIO_MAX_PAGES/BIO_MAX_VECS/g' /var/lib/dkms/kvdo/8.2.1.2.fixed/source/vdo/vio.h
But the dm-vdo one worked unpatched.
That's normal, you're using Kernel >= 5.15 (5.15.84-v8+
) and it's a fix because Debian stable release is still in 5.10.x
Except that, I don't see what your script adds to mine ? 🙂
I just changed the source repo for kvdo from
https://github.com/tigerblue77/kvdo/archive/refs/tags/... to https://github.com/dm-vdo/kvdo.git
I don't know what's the difference between the two, but the latter seemed more reasonable.
But the way I get theese warnings
Feb 14 11:27:40 x kernel: kvdo3:lvchange: Detected version mismatch between kernel module and tools kernel: 4, tool: 2
Feb 14 11:27:40 x kernel: kvdo3:lvchange: Please consider upgrading management tools to match kernel.
# vdoformat --version │
vdoformat version is: 8.2.0.2
I don't know what's the difference between the two
The difference is easy to see, go on my repository, then click on 8 commits ahead in the following banner :
This branch is 8 commits ahead, 1 commit behind dm-vdo:master.
Then if you scrool a bit, you'll be able to see all files differences. You can also have a look to commits title and to this PR.
but the latter seemed more reasonable.
In your case, I think yes.
Hello everyone,
I create this clean new issue following a bug solved in previous one + clean version of Debian's installation script. I wrote this little script to install kvdo + vdo on Debian 11(.4) (tested with 5.10.0-14-amd64 Linux kernel)
VDO's part questions (second part) :
- Can anyone tell me if lines 32-34 are needed ?- Don't hesitate to suggest any improvment !README.md
?I tested this script with the following LVM volume creation script :
I wrote this script with help of those forum topics :