Proxmox Backup Server: Difference between revisions

From DWIKI
mNo edit summary
 
(60 intermediate revisions by the same user not shown)
Line 1: Line 1:


 
=Links=
*[https://www.proxmox.com/en/proxmox-backup-server/overview PBS Homepage]
 


= Documentation =
= Documentation =
*[https://pbs.proxmox.com/docs/ PBS documentation]
*[https://pbs.proxmox.com/docs/technical-overview.html PBS Technical overview]
*[https://pbs.proxmox.com/docs/managing-remotes.html Managing PBS remotes & sync]
==Installation==
*[https://pbs.proxmox.com/docs/installation.html Installing PBS]
==Upgrading==
*[https://pbs.proxmox.com/wiki/index.php/Upgrade_from_2_to_3 Upgrading PBS 2 to 3]
=Processes=
==Service daemons==
See [https://pbs.proxmox.com/docs/sysadmin.html#service-daemons Service Daemons]
==Command line tools==
See [https://pbs.proxmox.com/docs/sysadmin.html#command-line-tools Command-line Tools]
==Under the hood==
Structure of datastore:
/mnt/datastore/yourDS
contains:
===.chunks===
The actual data
===.lock===
===vm===
Metadata per vm:
client.log.blob  drive-scsi0.img.fidx  index.json.blob  qemu-server.conf.blob
===.gc-status===
=HOWTO=
==Move datastore==
*Make sure there is no activity on that datastore, i suggest using rsync. As i can tell it should be safe to use rsync option '''--ignore-existing''' when updating a copy.
*Edit '/etc/proxmox-backup/datastore.cfg' to change path to datastore.
*Reload configuration ('''this will interrupt running garbage collectors''') :
systemctl reload proxmox-backup-proxy
==Upgrade proxmox 6 to 7==
https://pve.proxmox.com/wiki/Upgrade_from_6.x_to_7.0
===WARN: 'noout' flag not set - recommended to prevent rebalancing during cluster-wide upgrades===
https://docs.ceph.com/en/quincy/rados/troubleshooting/troubleshooting-osd/
ceph osd set noout
==Restore disk from PBS==
Use [[pbs-restore]]
==What's so busy?==
proxmox-backup-manager list
and then
proxmox-backup-manager task log <everying from and including "UPID:">
=PBS Backups=
==Create new backup repository==
===On PBS server:===
====Create account====
Configuration->Access Control->User Management->Add
====Create datastore====
Create space, normally something like
zfs create pbspool/mystore
Datastore->Add Datastore
New subdirectory will be created
Backup path must be full path to storage + datastore name
Configuration->Access Control->Permissions
Datastore->yournewstore->Permissions
to give the user access, Role is usually DatastoreBackup
===On PBS guest:===
Datacenter->Storage->Add->Proxmox backup server
For "Datastore" enter the name as used on the PBS.
For fingerprint (on pbs server):
proxmox-backup-manager cert info | grep Fingerprint
Then:
Backup->Add storage: your-pbs
==Remove PBS datastore==
proxmox-backup-manager datastore remove yourdatastore
this does not delete the data!
===Move a PBS datastore===
rsync -auv /mnt/datastore/old /mnt/datastore/new
systemctl stop proxmox-backup-proxy
rsync -auv /mnt/datastore/old /mnt/datastore/new
vi /etc/proxmox-backup/datastore.cfg
systemctl start proxmox-backup-proxy
and after checking everything you can
rm -vf /mnt/datastore/old
==Move vm data to another datastore==
=== Create local sync user ===
localsync@pbs
Permissions: datastorereader on source, datastorebackup on target
== PBS API ==
*[https://pbs.proxmox.com/docs/user-management.html?highlight=token#api-tokens API Tokens]
*[https://pbs.proxmox.com/docs/api-viewer/ PBS API viewer]
PBS equivalent for '''pvesh''':
proxmox-backup-debug
example:
proxmox-backup-debug api get /status/datastore-usage
proxmox-backup-debug api get /nodes/localhost/tasks
===Create cookie===
PBS=your.pbs.server
curl --silent --insecure --data "username=zabbix@pbs&password=n0tmyp4ss" https://$PBS:8007/api2/json/access/ticket | jq --raw-output '.data.ticket' | sed 's/^/PBSAuthCookie=/' > cookie
Test cookie
curl -XGET --silent -k -b $(cat cookie ) https://$PBS:8007/api2/json/


== Recovering files from backup ==
== Recovering files from backup ==
Line 13: Line 141:
  # proxmox-backup-client map vm/109/2022-01-25T20:18:02Z drive-ide0.img
  # proxmox-backup-client map vm/109/2022-01-25T20:18:02Z drive-ide0.img
   
   
  Image 'data2:vm/109/2022-01-25T20:18:02Z/drive-ide0.img' mapped on /dev/loop0</nowiki>
  Image 'data2:vm/109/2022-01-25T20:18:02Z/drive-ide0.img' mapped on /dev/loop0


  # lsblk
  # lsblk
Line 43: Line 171:


= FAQ =
= FAQ =
==Error messages==
===user account disabled or expired===
===error fetching datastores - 401 Unauthorized (500)===
Check username/password :)
==Limit bandwidth==
===On cluster node===
In /etc/vzdump.conf
# In KB/s
bwlimit: 1500
==Garbage collection==
===What does the '''Prune all''' button do?===
It will give you a dialog with the usual 'Keep xxx' options.
=== TASK ERROR: update atime failed, disk full ===
Try pruning some
Check if some sync is running
===unable to access non-existent chunk===
check if this returns?
=== Pending removals ===
proxmox-backup-manager garbage-collection status mystore


== error pruning backups - check log (500) ==
== error pruning backups - check log (500) ==


Possibly a permissions thing
Possibly a permissions thing, which is good. Leave pruning to the backup server
 
 
 
 
==command error: http upgrade request timed out==
??
 
==Connection error - server offline?==
This can also happen when you can actually connect to server:8007
Check
  systemctl status proxmox-backup


== Pending removals ==


  proxmox-backup-manager garbage-collection status mystore
==Connection error 401: No ticket==
Browser issues, try clearing cache/cookies(?) or another browser.
 
==Noout flag(s) set==
ceph osd unset noout
 
==qmp command 'query-backup' failed - got wrong command id==
maybe bwlimit?
 
==create storage failed: mypbs: error fetching datastores - 500 Can't connect to mypbs:8007 (Connection timed out) (500)==
 
==Garbage collection failed: unlinking chunk ... ENOENT: No such file or directory==
Ignore?
 
 
==Sync errror: owner check failed==
Check in datastore/yourrepository/vm/*/owner
 
There's command
proxmox-backup-client change-owner
 
==Sync remote==
 
 
==tcp connect error: deadline has elapsed==
Probably connection timeout.
===proxmox-backup-manager remote list not showing remote===
Try
  proxmox-backup-manager remote show
Check
/etc/proxmox-backup/remote.cfg
 
 
===Retrieve PBS password===
On a pve node check '''/etc/pve/priv/storage/'''
 
 
===group lock failed: Permission denied===
Probably a mismatch between path in /etc/proxmox-backup/datastore.cfg and actual location.
You also need to restart proxmox-backup-proxy.service after changing either of those.
 
[[Category:Backup]]

Latest revision as of 08:19, 19 July 2024

Links


Documentation

Installation


Upgrading

Processes

Service daemons

See Service Daemons

Command line tools

See Command-line Tools


Under the hood

Structure of datastore:

/mnt/datastore/yourDS

contains:

.chunks

The actual data

.lock

vm

Metadata per vm: client.log.blob drive-scsi0.img.fidx index.json.blob qemu-server.conf.blob

.gc-status

HOWTO

Move datastore

  • Make sure there is no activity on that datastore, i suggest using rsync. As i can tell it should be safe to use rsync option --ignore-existing when updating a copy.
  • Edit '/etc/proxmox-backup/datastore.cfg' to change path to datastore.
  • Reload configuration (this will interrupt running garbage collectors) :
systemctl reload proxmox-backup-proxy

Upgrade proxmox 6 to 7

https://pve.proxmox.com/wiki/Upgrade_from_6.x_to_7.0


WARN: 'noout' flag not set - recommended to prevent rebalancing during cluster-wide upgrades

https://docs.ceph.com/en/quincy/rados/troubleshooting/troubleshooting-osd/

ceph osd set noout


Restore disk from PBS

Use pbs-restore


What's so busy?

proxmox-backup-manager list

and then

proxmox-backup-manager task log <everying from and including "UPID:">

PBS Backups

Create new backup repository

On PBS server:

Create account

Configuration->Access Control->User Management->Add


Create datastore

Create space, normally something like

zfs create pbspool/mystore
Datastore->Add Datastore

New subdirectory will be created

Backup path must be full path to storage + datastore name

Configuration->Access Control->Permissions
Datastore->yournewstore->Permissions

to give the user access, Role is usually DatastoreBackup

On PBS guest:

Datacenter->Storage->Add->Proxmox backup server

For "Datastore" enter the name as used on the PBS. For fingerprint (on pbs server):

proxmox-backup-manager cert info | grep Fingerprint

Then:

Backup->Add storage: your-pbs

Remove PBS datastore

proxmox-backup-manager datastore remove yourdatastore

this does not delete the data!


Move a PBS datastore

rsync -auv /mnt/datastore/old /mnt/datastore/new
systemctl stop proxmox-backup-proxy
rsync -auv /mnt/datastore/old /mnt/datastore/new
vi /etc/proxmox-backup/datastore.cfg
systemctl start proxmox-backup-proxy

and after checking everything you can

rm -vf /mnt/datastore/old


Move vm data to another datastore

Create local sync user

localsync@pbs

Permissions: datastorereader on source, datastorebackup on target

PBS API

PBS equivalent for pvesh:

proxmox-backup-debug 

example:

proxmox-backup-debug api get /status/datastore-usage
proxmox-backup-debug api get /nodes/localhost/tasks

Create cookie

PBS=your.pbs.server
curl --silent --insecure --data "username=zabbix@pbs&password=n0tmyp4ss" https://$PBS:8007/api2/json/access/ticket | jq --raw-output '.data.ticket' | sed 's/^/PBSAuthCookie=/' > cookie

Test cookie

curl -XGET --silent -k -b $(cat cookie ) https://$PBS:8007/api2/json/

Recovering files from backup

export PBS_REPOSITORY=mypbs:mydatastore
proxmox-backup-client snapshot list

Output like: vm/109/2022-01-25T20:18:02Z │ 200.00 GiB │ client.log drive-ide0.img index.json qemu-server.conf

# proxmox-backup-client map vm/109/2022-01-25T20:18:02Z drive-ide0.img

Image 'data2:vm/109/2022-01-25T20:18:02Z/drive-ide0.img' mapped on /dev/loop0
# lsblk

NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0          7:0    0   200G  1 loop
├─loop0p1    259:0    0   251M  1 part
├─loop0p2    259:1    0   3.9G  1 part
└─loop0p3    259:2    0 195.9G  1 part

 

mount /dev/loop0p3 /mnt/loop/

mount: /mnt/loop: cannot mount /dev/loop0p3 read-only.

mount -o loop,ro,norecovery /dev/loop0p3 /mnt/loop/

and that should be it. After you're done:

umount /mnt/loop
proxmox-backup-client unmap /dev/loop0

 

TBD: explain how t o use kpartx and friends to acces LVM volumes

 

FAQ

Error messages

user account disabled or expired

error fetching datastores - 401 Unauthorized (500)

Check username/password :)

Limit bandwidth

On cluster node

In /etc/vzdump.conf

# In KB/s
bwlimit: 1500

Garbage collection

What does the Prune all button do?

It will give you a dialog with the usual 'Keep xxx' options.

TASK ERROR: update atime failed, disk full

Try pruning some Check if some sync is running

unable to access non-existent chunk

check if this returns?

Pending removals

proxmox-backup-manager garbage-collection status mystore

error pruning backups - check log (500)

Possibly a permissions thing, which is good. Leave pruning to the backup server



command error: http upgrade request timed out

??

Connection error - server offline?

This can also happen when you can actually connect to server:8007 Check

 systemctl status proxmox-backup


Connection error 401: No ticket

Browser issues, try clearing cache/cookies(?) or another browser.

Noout flag(s) set

ceph osd unset noout

qmp command 'query-backup' failed - got wrong command id

maybe bwlimit?

create storage failed: mypbs: error fetching datastores - 500 Can't connect to mypbs:8007 (Connection timed out) (500)

Garbage collection failed: unlinking chunk ... ENOENT: No such file or directory

Ignore?


Sync errror: owner check failed

Check in datastore/yourrepository/vm/*/owner

There's command

proxmox-backup-client change-owner

Sync remote

tcp connect error: deadline has elapsed

Probably connection timeout.

proxmox-backup-manager remote list not showing remote

Try

proxmox-backup-manager remote show

Check

/etc/proxmox-backup/remote.cfg


Retrieve PBS password

On a pve node check /etc/pve/priv/storage/


group lock failed: Permission denied

Probably a mismatch between path in /etc/proxmox-backup/datastore.cfg and actual location. You also need to restart proxmox-backup-proxy.service after changing either of those.