Skip to content

Veeam

Initially, I tried using Debian as the SMB + Veeam backup server, but due to multiple SMB-related issues I migrated to Rocky Linux, which works much more reliably.


Preparing the Backup Disk

List disks:

sudo fdisk -l

In my case the disk was /dev/sda

Open it in fdisk:

sudo fdisk /dev/sda

Inside fdisk:

  • p – show partitions
  • d – delete a partition

Repeat d until no partitions remain.

Create a new GPT table:

g

Create first partition:

n
1
<return>
+1500G

Create second partition:

n
2
<return>
<return>

Write changes:

w

Verify:

lsblk -o NAME,SIZE,TYPE 

Adding the Disk to the VM

add-partition

In step 3, enter the remaining parameters manually as shown.

Proceed similarly for the second partition.


Formatting the Veeam Partition (inside the VM)

sudo mkfs.xfs /dev/vdb

Mount it:

sudo mkdir /veeam-backup
sudo mount /dev/vdb /veeam-backup

Add to /etc/fstab:

echo "/dev/vdb /veeam-backup xfs defaults,noatime 0 0" | sudo tee -a /etc/fstab

Installing & Configuring Samba

Install Samba:

sudo dnf install samba samba-common samba-client

Edit:

sudo nano /etc/samba/smb.conf

Add at the bottom:

[veeam]
   path = /veeam-backup
   browseable = yes
   writable = yes
   guest ok = no
   create mask = 0660
   directory mask = 0770

Create SMB user:

sudo adduser veeam
sudo smbpasswd -a veeam
sudo chown -R veeam:veeam /veeam-backup
sudo chmod 770 /veeam-backup

Enable Samba:

sudo systemctl enable --now smb nmb

Firewall (if enabled):

sudo firewall-cmd --add-service=samba --permanent
sudo firewall-cmd --reload

Testing SMB from Arch Linux

sudo mkdir -p /mnt/veeam
sudo mount -t cifs //IP_SRV_VEEAM/veeam /mnt/veeam -o username=veeam,password=PASSWORD,vers=3.0

If you get:

make_connection_snum '/veeam-backup' does not exist or permission denied

Cause: SELinux

Rocky Linux uses SELinux in enforcing mode. Samba cannot share directories outside /var unless explicitly allowed.

Check SELinux mode:

getenforce

If it shows Enforcing

Fix:

sudo chcon -t samba_share_t /veeam-backup
sudo systemctl restart smb

Test locally:

sudo smbclient -L localhost -U veeam

You should see:

Sharename       Type
veeam           Disk

Test again from Arch:

sudo mount -t cifs //IP_SRV_VEEAM/veeam /mnt/veeam -o username=veeam,password=HASLO,vers=3

Verify: On Arch:

mount | grep veeam
echo "test" | sudo tee /mnt/veeam/test.txt
ls -l /mnt/veeam
sudo umount /mnt/veeam

On Rocky:

ls -l /veeam-backup

Installing Veeam Agent on Arch Linux

Arch Linux is not officially supported by Veeam.

Required packages:

sudo pacman -S mlocate

Clone AUR packages:

cd ~/Builds/aur
git clone https://aur.archlinux.org/veeam.git
git clone https://aur.archlinux.org/veeamblksnap-dkms.git

Install DKMS module:

cd veeamblknap-dkms
less PKGBUILD
makepkg -si

Install Veeam:

cd ..
cd veeam
less PKGBUILD
makepkg -si

Both veeamblksnap-dkms and mlocate are required for installation.

Snapshot Issues on Arch Linux

On my Arch Linux kernel version, the blksnap module did not build. This is a known issue with newer Arch kernels.

After many attempts, the only working solution was to disable snapshots.

Edit:

sudo nano /etc/veeam/veeam.ini

Add:

snapshotDisabled=true

Restart veeamservice:

sudo systemctl restart veeamservice

Snapshot Explanation

Without snapshots:

  • files may change during backup
  • databases may be mid-write
  • filesystem may be inconsistent
  • backup works, but is not perfectly consistent

With snapshots:

  • filesystem is frozen temporarily
  • backup sees a stable, unchanging view
  • data is consistent
  • this is the “enterprise‑grade” mode

On Arch Linux, snapshots often fail due to kernel incompatibility, so disabling them is currently the only reliable solution.


Configuring the Veeam Backup Job

Start the Veeam Agent configuration:

sudo veeam

After accepting the license agreement, selecting Workstation, and choosing the free edition, you will proceed to the backup job configuration wizard.

The initial steps (backup name, backup mode, etc.) depend on your preferences.


Destination Configuration

Choose Destination → Shared Folder

Enable SMB (CIFS)

Fill in the fields:

  • Server:
    IP address of the Rocky Linux SMB server (example: 192.168.x.x)
  • Folder:
    veeam
    (must match the SMB share name from smb.conf)
  • Domain:
    leave empty (no Active Directory in this setup)
  • Username:
    SMB user (in my case: veeam)
  • Password:
    SMB user password

Tests

I tested the following configuration:

  • Backup mode: File-level backup

Execution:

  • manual backup
  • scheduled backup

Restore:

  • file-level restore tested successfully

All tests completed successfully.