Bash scripts to backup and restore proxmox server.
- proxmox-backup
- Table of Contents
- Prerequisites
- Install
- Tutorial
- Contributing
- Credits
- About Padosoft
- License
bash
This package can be installed easy.
cd /root/
git clone https://github.com/padosoft/proxmox-backup.git
cd proxmox-backup
chmod +x *.shIf you want to run programmatically, add it to cronjobs manually or execute install script:
cd /root/proxmox-backup
chmod +x install.sh
bash install.shLe copie di backup sono salvate in rete su cartelle condivise. Una volta condivisa con samba una cartella esterna è possibile montarla sul sistema in uso per utilizzarla come una semplice directory in fase di backup.
Per prima cosa nel sistema da backuppare viene creata una cartella su cui montare la cartella esterna
mkdir /mnt/sharedns323la cartella viene poi permanentemente montata scrivendo aggiungendo nel file
/etc/fstabla seguente riga
//192.168.0.14/Volume_1/proxmox2 /mnt/sharedns323 cifs credentials=/root/.smbcredentialsdove //192.168.0.14/Volume_1/proxmox2 è la cartella condivisa in rete e nel file /root/.smbcredentials ci sono le credenziali di accesso.
Il file /root/.smbcredentials è di questo tipo
username=root password=xxxxxx domain=PADOVANI
modificato il file fstab testarlo col comando
mount -aPer il backup viene utilizzato fsarchiver, a differenza di altri tool crea l’immagine del solo filesystem e non di tutto il disco, anche a caldo
Installazione di fsarchiver
apt-get update
apt-get install fsarchiverLe partizioni di proxmox da backuppare sono la root e la parte data contenute in una partizione logica lvm2 Per individuare all’interno della partizione logica lvm2 di proxmox le partizioni di interesse usiamo
fsarchiver probe le partizioni di interesse sono le dm-x e con
dmsetup lsè possibile capire quali siano quella di root e data ottenendo un qualcosa di simile:
pve-swap (253:1)
pve-root (253:0)
pve-data (253:2)pve-root in questo caso è contenuta in dm-0, mentre la parte pve-data in dm-2
di seguito lo script che effettua il backup:
/root/proxmox-backup/backupproxmox.shIn sintesi le copie vengono prima salvate su una cartella temporanea "/var/tmp/backup" creata nel caso non esita, sono stoppati 4 servizi di proxmox
/etc/init.d/pve-cluster stop
/etc/init.d/pvedaemon stop
/etc/init.d/vz stop
/etc/init.d/qemu-server stope lanciato fsarchiver
fsarchiver savefs -aAdv "$_bdir/$_day.dm-0.fsa" "/dev/dm-0"
fsarchiver savefs -aAdv "$_tdir/$_day.dm-2.fsa" "/dev/dm-2"il parametro savefs indica che si sta salvando il filesystem, i parametri “d” e “v” servono per far scrivere le informazioni di esecuzione, mentre i parametri “A” e “a”
-A: allow to save a filesystem which is mounted in read-write (live backup) -a: allow running savefs when partition mounted without the acl/xattr options
la partizione di sistema, più piccola di dimensioni viene creata direttamente nella cartella condivisa, quella di data invece viene prima creata in locale e poi spostata nella cartella condivisa con il comando
rsync -avz --progress "$_tdir/$_day.dm-2.fsa" "$_bdir/$_day.dm-2.fsa"terminata la copia sono riavviati i servizi
echo restart services
/etc/init.d/qemu-server start
/etc/init.d/vz start
/etc/init.d/pvedaemon start
/etc/init.d/pve-cluster startutilizzando un altro script tutto il processo viene schedulato, e inviato per email utilizzando ssmtp (vedi questa guida per come configurarlo https://docs.google.com/document/d/1YLI4ToPftmowrmsRRhSxW8hzDBKW4LvhxSGAwigoQP8/ ), utilizzando il nome del giorno della settimana il tutto ha una rotazione di 7 giorni
/root/proxmoxrestore/backup_week.shPer schedulare i servizi si utilizza il comando
crontab -ea cui si aggiunge la seguente linea
# m h dom mon dow command
0 03 * * * /root/proxmoxrestore/sh backup_week.shCon questa sintassi si esegue uno script ogni giorno alle 3 di notte
vedi anche: http://www.cyberciti.biz/faq/how-to-wakeup-backup-nas-server-and-mirror-files-using-rsync-in-linux/
Sul muletto è installato proxmox e la partizione di root è la stessa del server. Ogni sera il muletto si accende da bios, il server poco dopo con un processo schedulato stoppa i servizi proxmox del muletto, copia tutta la sua partizione data e spegne il muletto. Per accedere al muletto senza digitare la password viene utilizzata una comunicazione ssh registrando la chiave pubblica del muletto sul server.
il file sh con le procedure di copia è
/root/proxmoxrestore/vz_rsync.shschedulato e inviato per email con lo script
/root/proxmoxrestore/vz_rsync_daily.shinserito in pianificazione con il solito
crontab -ePer connettersi da un pc all’altro utilizzando ssh senza autenticazione è possibile registrare la chiave pubblica sul server da cui si vuol accedere
Per prima cosa si creano le chiavi pubbliche e private sul muletto digitando
ssh-keygen -t rsapremere invio lasciando il nome di default della chiave e non aggiungendo password Questo creerà nella cartella /root/.ssh un file id_rsa e id_rsa.pub
eseguire poi
ssh-copy-id [email protected]dove 192.168.0.33 è l’indirizzo del server proxmox, e quando richiesto inserire la password di root
testare da server il comando
ssh [email protected] lsla prima volta chiederà di salvare il pc 192.168.0.11 (o l’equivalente indirizzo ip del muletto) tra gli host conosciuti
dovrebbe mostrare il contenuto della cartella senza ulteriore autenticazione, di fatto il comando ssh-copy-id copia il file id_rsa.pub del muletto e lo inserisce nel file /root/.ssh/authorized_keys del server
Ripristino partizione di root in caso di disaster recovery su macchina non configurata.
Installare proxmox VE 3.4 da cd (https://www.proxmox.com/en/). Lasciare i valori di default (ext3 ed eventuale indirizzo IP). Nel caso si conosca è possibile inserire l’indirizzo IP della macchina che si sostituisce, il nome host è invece pve.padosoft.local
Una volta installato proxmox
riavvio e utilizzo systemrescuecd (http://www.sysresccd.org/) da live cd utilizzando la shell faccio il mount della cartella condivisa che contengono i backup
mount -t cifs //192.168.0.14/Volume_1 /mnt/sharecon
fsarchiver probe simplevedo i device e cerco quello di root tra i dm (probabilmente il dm-0) con
fsarchiver probe se ho dubbi basta montarli e navigarli
mkdir /mnt/dm0
mount /dev/dm-0 /mnt/dm0ripristino la partizione di root, nel caso devo prima fare l’umount
umount /mnt/dm0e poi uso fsarchiver
fsarchiver restfs /mnt/share/dm0.aaaa.mm.dd.fsa id=0,dest=/dev/dm-0alla fine reboot della macchina
Al riavvio si avrà un errore in fstab dovuto al cambio di UUID dell’hd. Eseguire:
blkid per scoprire uuid nuovo hardware delle partizioni cambio uuid in
/etc/fstab# <file system> <mount point> <type> <options> <dump> <pass>
/dev/pve/root / ext3 errors=remount-ro 0 1
/dev/pve/data /var/lib/vz ext3 defaults 0 1
UUID=CC11-46AB /boot/efi vfat defaults 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
//192.168.0.14/Volume_1/proxmox2 /mnt/sharedns323 cifs credentials=/root/.smbcredentialssalvato il file lo testo con
mount -acontrollo che l’interfaccia ethernet sia la stessa,
ip link show se prima avevo eth0 e ora eth1 la tiro su
ifconfig eth1 up e poi cambio
/etc/network/interfaces il bridgeauto lo
iface lo inet loopback
auto vmbr0
iface vmbr0 inet static
address 192.168.0.11
netmask 255.255.255.0
gateway 192.168.0.1
bridge_ports eth0
bridge_stp off
bridge_fd 0salvo e reboot
Effettuo il ripristino della partizione data direttamente dalla macchina senza live cd. Entro e stoppo i servizi proxmox
/etc/init.d/pve-cluster stop
/etc/init.d/pvedaemon stop
/etc/init.d/vz stop
/etc/init.d/qemu-server stopnel caso non sia installato installo fsarchiver
e ripristino la partizione data controllando prima quale sia con il comando
dmsetup lsipotizzando sia la dm-2
fsarchiver restfs /mnt/sharedns323/dm2.aaaa.mm.dd.fsa id=0,dest=/dev/dm-2finito riavvio la macchina.
Please see CONTRIBUTING and CONDUCT for details.
Padosoft is a software house based in Florence, Italy. Specialized in E-commerce and web sites.
The MIT License (MIT). Please see License File for more information.