Failed to load module [veeamsnap]
Failed to load module [blksnap]
Challenge
A Veeam Agent for Linux backup job fails with either of the following errors:
Failed to load module [veeamsnap] with parameters [zerosnapdata=1 debuglogging=0]
(The number of parameters listed in the error may vary depending on Veeam Agent for Linux version.)
Failed to load module [blksnap]
Cause
This error occurs when the indicated module cannot be loaded. The most common reasons are:
- The module is not installed
- The installed module is not compatible
- DKMS was unable to compile the module
- The kernel headers package is missing.
- The kernel headers version and the running kernel version mismatch.
- Loading 3rd party kernel modules are not allowed.
- The Linux distribution in use is not supported. For the list of supported distributions, review User Guide: System Requirements.
Solution
About the veeamsnap
kernel module
The veeamsnap module is available to be compiled using DKMS or as a precompiled module for select distros (kmod for RHEL/CentOS* or kmp for SLES/openSUSE).
For more information about installation requirements, please see: Veeam Agent for Linux - System Requirements.
*Precompiled veeamsnap kmod is not compatible with Oracle Linux.
About the blksnap
kernel module
The blksnap kernel module was introduced with Veeam Agent for Linux 6 and replaces the veeamsnap module for newer Linux kernels. The veeamsnap module supports up to Linux Kernel 5.18, and the blksnap module's minimum Linux Kernel is 5.10.
Similar to the veeamsnap module, the blksnap module is available to be compiled using DKMS or as a precompiled module for select distros (kmod for RHEL/CentOS* or kmp for SLES/openSUSE).
For more information about installation requirements, please see Veeam Agent for Linux - System Requirements.
*Precompiled blksnap kmod is not compatible with Oracle Linux.
Troubleshooting Module Loading
Check if prerequisites for RHEL/CentOS 7.0+ are present
For RHEL/CentOS 7.0+ using Veeam Agent for Linux 4 or newer, ensure that the python3 package is installed and working correctly. If it is not, install/fix it before proceeding with troubleshooting. Python3 is used to load the correct pre-compiled module version into the kernel automatically.
Run the following commands to query if python3 is installed as a package:
rpm -q --whatprovides /usr/bin/python3
rpm -q --whatprovides python3
rpm -q --whatprovides /usr/bin/python3
python3-3.6.8-18.el7.x86_64
rpm -q --whatprovides python3
python3-3.6.8-18.el7.x86_64
Check if the
kernel module is installed
Use the following command to determine if the veeamsnap or blksnap module is installed:
For RPM-based distributions:
rpm -qa | egrep -i '(veeamsnap|blksnap)'
If this command returns nothing, then neither module is installed.
Pre-compiled veeamsnap
kernel modules will be listed as:
kmod-veeamsnap
veeamsnap-kmp-default
Pre-compiled blksnap
kernel modules will be listed as:
kmod-blksnap
blksnap-kmp-default
For Debian-based distributions:
dpkg-query -l | egrep -i '(veeamsnap|blksnap)'
Check if the kernel module is loaded
Use the following command to query the state of the veeamsnap or blksnap module:
lsmod | egrep -i '(veeamsnap|blksnap|bdevfilter)'
If the module is loaded, unload it and rerun the backup job. (the job will load the module automatically)
Example:
rmmod veeamsnap
Checking precompiled module compatibility
Each precompiled veeamsnap and blksnap module is built for a specific version of RHEL/CentOS/SLES/openSUSE.
Use the examples below to check if the correct precompiled kenel module is installed.
RHEL/CentOS
Check if the active kernel's major version matches one of the installed modules.
Example:
# uname -r
3.10.0-1160.25.1.el7.x86_64
# find /lib/modules | egrep -i '(veeamsnap|blksnap)
/lib/modules/3.10.0-862.el7.x86_64/extra/veeamsnap.ko
/lib/modules/3.10.0-1062.el7.x86_64/extra/veeamsnap.ko
/lib/modules/3.10.0-1127.el7.x86_64/extra/veeamsnap.ko
/lib/modules/3.10.0-1160.el7.x86_64/extra/veeamsnap.ko
/lib/modules/3.10.0-123.el7.x86_64/extra/veeamsnap.ko
/lib/modules/3.10.0-229.el7.x86_64/extra/veeamsnap.ko
/lib/modules/3.10.0-327.el7.x86_64/extra/veeamsnap.ko
/lib/modules/3.10.0-514.el7.x86_64/extra/veeamsnap.ko
/lib/modules/3.10.0-693.el7.x86_64/extra/veeamsnap.ko
/lib/modules/3.10.0-957.el7.x86_64/extra/veeamsnap.ko
SLES/openSUSE
First, ensure that the kernel version in use corresponds with the OS version. Review SUSE KB#19587 for more information. If the kernel version does not correspond to the OS version, Veeam Agent for Linux and the veeamsnap
or blksnap
module may not load, or the wrong version may be installed.
The Veeam Agent for Linux user guide lists which version should be used with each SLES or openSUSE OS version.
Example:
# hostnamectl
Static hostname: testmachine
Transient hostname: testmachine
Icon name: computer-vm
Chassis: vm
Machine ID: 25433cc502ff0082e5f1ff835c01295b
Boot ID: 1296228f7483469b93db28713a2b40e0
Virtualization: vmware
Operating System: SUSE Linux Enterprise Server 12 SP3
CPE OS Name: cpe:/o:suse:sles_sap:12:sp3
Kernel: Linux 4.4.180-94.141-default
Architecture: x86-64
In this example, the kernel 4.4.180-94.141 is correct for the OS SLES12 SP3 - LTSS.
The Installing Veeam Agent for Linux in SLES user guide page indicates that this SLES OS version correlates to veeamsnap-kmp-default-5.0.0.4318_k4.4.73_5-2
If the "Failed to load module" error begins appearing after a kernel upgrade that does not change the release (version and SP), execute the following command to link the module to the new kernel and then try to rerun the job:
depmod -a
Troubleshooting DKMS failing to compile module
When using DKMS to compile the kernel module, ensure that the installed kernel-headers package matches the kernel in use. If the kernel-headers package is not installed, or the installed kernel-headers package does not match the kernel in use, you will need to install the matching kernel-headers package.
After installing/updating the kernel-headers package, reinstall Veeam Agent for Linux.
Examples of Matching kernel-headers and kernel:
Example for Debian/Ubuntu:
# uname -r
5.4.0-77-generic
# dpkg-query -l | grep linux-headers
ii linux-headers-5.4.0-77 5.4.0-77.86 all Header files related to Linux kernel version 5.4.0
ii linux-headers-5.4.0-77-generic 5.4.0-77.86 amd64 Linux kernel headers for version 5.4.0 on 64 bit x86 SMP
ii linux-headers-generic 5.4.0.77.80 amd64 Generic Linux kernel headers
Example for Oracle Linux:
# uname -r
4.14.35-1902.303.4.1.el7uek.x86_64
# rpm -qa | grep kernel-uek-devel
kernel-uek-devel-4.14.35-1902.303.4.1.el7uek.x86_64
Using veeamsnap
or blksnap
module with Secure Boot
If Secure Boot is enabled, the kernel module may not be loaded due to system restrictions. In such a situation, review the following:
- For the pre-compiled kernel modules (kmod/kmp), the veeamsnap-ueficert or blksnap-ueficert package containing the module key must be enrolled using mokutil to allow the module to load.
- For DKMS-compiled modules, there is no such package, as it is not possible to automatically sign non-precompiled modules. In this case, you must either sign the module yourself and enroll the key to your system or disable Secure Boot.
- Veeamsnap-ueficert and veeamsnap (DKMS, kmod, kmp) packages should be of the same release version.
More Information
Run each command as root, save the output, and attach it to the support case.
Note: Some commands may return an empty response, be sure to include these results.
(hostnamectl||uname -a)
cat /etc/*release
(rpm -qa||dpkg-query -l) | egrep -i '(veeam|dkms|kernel-headers|kernel.*devel|linux-image|linux-headers)' | sort
dkms status
mokutil --sb-state
mokutil --list-new
find /lib/modules -name '*veeam*' -exec ls -ld {} +
lsmod | grep -i veeam
modinfo veeamsnap
modprobe -vvv veeamsnap
To report a typo on this page, highlight the typo with your mouse and press CTRL + Enter.