Бекап VM c Proxmox’a — Veeam’ом
Понадобилось выцепить бекапом много машинок с Proxmox. Вроде бы, все просто, идем в эти ваши интернеты, читаем статейку для крестьянок вжух-вжух и в продакшен? Да, но нет. Иначе не было бы статьи. Погнали.
Первые проблемы в том, что (bullshit bingo!):
1. Сервер нельзя рестартовать
2. Виртуалки свезти некуда
3. Все бизнес-критикал прод
Чем нас встречает Veeam?
Хотя, если проверить на Proxmox, то модуль на месте — veeamsnap, 6.0.3.1221, 5.4.203-1-pve, x86_64: installed
Из проблем
Если не поставить headers до момента установки veeam \ veeamsnap, то можно нагрести вот такие проблемы:
Из того, что советовали на сайтах:
apt-get install linux-headers-$(uname -r)
То получим вот такое:
E: Unable to locate package linux-headers-5.4.106-1-pve
E: Couldn’t find any package by glob ‘linux-headers-5.4.106-1-pve’
E: Couldn’t find any package by regex ‘linux-headers-5.4.106-1-pve’
Странно, но пробуем:
apt-get install linux-headers-generic
Получаем
Reading package lists… Done
Building dependency tree
Reading state information… Done
Package linux-headers-generic is a virtual package provided by:
linux-headers-amd64 6.5.6-1 [Not candidate version]
E: Package ‘linux-headers-generic’ has no installation candidate
Потом понимаем, что модуль надо под PVE (Proxmox Virtual Environment). Смотрим какие доступны:
apt-get install linux-headers
Получаем вывод (их там полсотни, но вот кусочек списка):
pve-headers-5.4.124-1-pve 5.4.124-2
pve-headers-5.4.119-1-pve 5.4.119-1
pve-headers-5.4.114-1-pve 5.4.114-1
pve-headers-5.4.106-1-pve 5.4.106-1
pve-headers-5.4.103-1-pve 5.4.103-1
pve-headers-5.4.101-1-pve 5.4.101-1
Ставим нужный:
apt-get install pve-headers-5.4.106-1-pve 5.4.106-1
Reading package lists… Done
Building dependency tree
Reading state information… Done
Note, selecting ‘pve-headers-5.4.106-1-pve’ for regex ‘5.4.106-1’
Note, selecting ‘pve-kernel-5.4.106-1-pve’ for regex ‘5.4.106-1’
pve-kernel-5.4.106-1-pve is already the newest version (5.4.106-1).
pve-kernel-5.4.106-1-pve set to manually installed.
The following NEW packages will be installed:
pve-headers-5.4.106-1-pve
Так вот… Если поставить veeam и veeamsnap до момента установки headers, то получим вот такое:
9:44:59 Required backup infrastructure resources have been assigned 00:00
9:44:59 Using gateway test.local for repository Local
9:45:16 Preparing to backup
9:45:18 Failed to create volume snapshot
9:45:18 Failed to take volume snapshot
9:45:18 Failed to perform managed backup
9:45:18 Neither [blksnap] nor [veeamsnap] module was found.
9:47:23 Processing finished with errors at 15.10.2023 9:47:23
Проверяем, как там модуль:
dkms status
Получаем ответ:
veeamsnap, 6.0.3.1221, 5.4.203-1-pve, x86_64: installed
Добавляем:
dkms add -m veeamsnap -v 6.0.3.1221
Получаем ответ:
Error! DKMS tree already contains: veeamsnap-6.0.3.1221
You cannot add the same module/version combo more than once.
Попробуем сбилдить заново:
Kernel preparation unnecessary for this kernel. Skipping…
Running the pre_build script:
Real System.map was found in ‘/boot/System.map-5.4.106-1-pve’
Generate «/var/lib/dkms/veeamsnap/6.0.3.1221/build/config.h» for kernel «5.4.106-1-pve».
System map «/boot/System.map-5.4.106-1-pve».
Exported function «blk_mq_make_request» not found
Exported function «blk_alloc_queue_rh» not found
Exported function «submit_bio_noacct» not found
Address of the function «__request_module» was defined
Function «blk_mq_submit_bio» not found
Building module:
cleaning build area…
make -j8 KERNELRELEASE=5.4.106-1-pve -C /lib/modules/5.4.106-1-pve/build M=/var/lib/dkms/veeamsnap/6.0.3.1221/build modules…..
cleaning build area…
DKMS: build completed.
Это, конечно, не помогает, поэтому, идем дальше:
dpkg-query -s veeam
Получаем ответ (наиболее интересный кусочек):
Package: veeam
Status: install ok installed
Странно, проверяем еще:
modprobe veeamsnap
Ответ будет такой:
modprobe: FATAL: Module veeamsnap not found in directory /lib/modules/5.4.106-1-pve
Удаляем veeam и veeamsnap, ставим заново и все работает.
Если все удачно, то modprobe veeamsnap должен показать, что никаких ошибок нет.
Частичное решение проблем было найдено здесь, с картиночками.
Правильный порядок подготовки
- Проверяем версию ядра
uname -a - Получаем что-то вида
Linux 5.4.101-1-pve #1 SMP PVE 5.4.101-1 (Fri, 26 Feb 2021 13:13:09 +0100) x86_64 GNU/Linux - Обновляем список
apt update - Проверяем какие headers возможны к установке
apt-get install linux-headers - Ставим headers под наше ядро
apt-get install pve-headers-5.4.101-1-pve - Заливаем, например через SFTP файлик veeam-release-deb_1.0.8_amd64.deb (версия под debian) на Проксмокс
- Ставим локальный пакет
dpkg -i veeam-release-deb_1.0.8_amd64.deb - Ставим еще пакет
apt install veeam - Ставим еще пакет
apt install veeamsnap - Проверяем статус (Dynamic Kernel Module Support)
dkms status - Получаем результат
veeamsnap, 6.0.3.1221, 5.4.101-1-pve, x86_64: installed - Проверяем что модуль виден
lsmod | grep veeam - Получаем результат
veeamsnap 184320 0
На этом этапе можно встретится с ошибками расхождения между старыми модулями и только что обновленных через apt upgrade.
И когда пробуешь проверить через dkms, то выдает вот такое:
dkms build -m veeamsnap -v 6.1.0.1498
Error! Your kernel headers for kernel 4.19.0-18-amd64 cannot be found.
Please install the linux-headers-4.19.0-18-amd64 package,
or use the —kernelsourcedir option to tell DKMS where it’s located
Т.е. прикол в том, что оно ищет модули в 4.19.0-18-amd64, а headers стоят 4.19.0-26-amd64. Помогает перезагрузка и проверка еще раз!
- Проверяем
dkms build -m veeamsnap -v 6.1.0.1498 - Получаем результат
Module veeamsnap/6.1.0.1498 already built for kernel 4.19.0-26-amd64/4
Из интересностей
В статье указано, что бекапить надо папки
1. с ВМ /data
2. с конфигами /etc/pve/nodes/pve/qemu-server/
В нашем же случае (может версия новее, может настроили так — хз):
1. с ВМ /var/lib/vz/images/
2. с конфигами /etc/pve/qemu-server/
Если вы, по каким-то причинам, заменили бекапный сервер, то столкнетесь с ошибкой:
Error: Failed to generate certificate for ***: host is managed by another backup server VEEAM
Решение:
В ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Veeam\Veeam Backup and Replication создать параметр ProtectionGroupIgnoreOwnership со значением DWORD=1