Project

General

Profile

Scénario #31591

Sauvegarde/restauration des Images et VM Hapy 2.8.0+

Added by Gilles Grandgérard about 3 years ago. Updated almost 3 years ago.

Status:
Terminé (Sprint)
Priority:
Normal
Assigned To:
Category:
-
Start date:
02/01/2021
Due date:
02/19/2021
% Done:

100%

Story points:
10.0
Remaining (hours):
0.00 hour
Velocity based estimate:
Release:
Release relationship:
Auto

Description

Problème

A ce jour, les VMs Hapy ne sont pas sauvegardées. Dans le cadre d'un crash avec reprise d'activité, il serait bon que les Images et VM puissent être restaurées

Proposition

Il faut proposer un moyen de sauvegarde pour le répertoire /var/lib/one/datastore/
  • Pour chaque VM, il faut faire un snapshot (Hot?), puis copier les fichiers QCow / domain.xml
Idées :

Solutions à mettre en œuvre

  • EOLE >= 2.8.0
  • Documenter la fonctionnalité dans la doc 2.8 (ici ?)

Critères d’acceptation

  • Sauvegarder un Hapy avec une VM active
  • ré instancier une nouvelle VM Hapy, restaurer la sauvegarde de base de donnée
  • restaurer les Images et VM
  • Dans ONE, les VM démarre

Subtasks

Tâche #31650: Etudier les propositions décrites dans le scenarioFerméPhilippe Caseiro

Tâche #31660: Mettre à jour le dico de eole-one-masterFerméPhilippe Caseiro

Tâche #31661: Créer le script de sauvegardeFerméPhilippe Caseiro

Tâche #31683: Créer le script de restaurationFerméPhilippe Caseiro

Tâche #31711: Créer les paquets eole-one-backup et onebackupFerméPhilippe Caseiro

Tâche #31721: Le template hapybck.conf doit passer la validation CreoleLintFerméEmmanuel GARETTE


Related issues

Related to Distribution EOLE - Tâche #31706: Valider le scénario Sauvegarde/restauration des Images et VM Hapy 2.8.0+ Fermé 04/26/2021 04/26/2021
Copied from Distribution EOLE - Scénario #30588: Sauvegarde/restauration Hapy 2.8.0+ Terminé (Sprint) 02/01/2021 02/19/2021

History

#1 Updated by Gilles Grandgérard about 3 years ago

#2 Updated by Gilles Grandgérard about 3 years ago

  • Description updated (diff)

#3 Updated by Gilles Grandgérard about 3 years ago

  • Story points set to 10.0

#4 Updated by Emmanuel GARETTE about 3 years ago

  • Assigned To set to Philippe Caseiro

#5 Updated by Gilles Grandgérard about 3 years ago

Vu pendant la Visio :

- ne pas mettre le code dans eole-one-master
- Créer un projet REDMINE eole-one-backup contenant l'EOLElisation
- Créer un projet one-backup contenant le code OpenNebula permettant le backup.
- Proposer un paquet dès la version 2.7.2

TODO:
- Prévoir la doc

#6 Updated by Daniel Dehennin about 3 years ago

  • Project changed from Distribution EOLE to EOLE OpenNebula

#7 Updated by Daniel Dehennin about 3 years ago

Le script de sauvegarde ne semble pas fonctionner correctement :

root@grichka:~# onebck 
Traceback (most recent call last):
    1: from /usr/bin/onebck:30:in `<main>'
/usr/bin/onebck:30:in `require_relative': cannot load such file -- /usr/lib/one/backup (LoadError)

#8 Updated by Daniel Dehennin about 3 years ago

  • Related to Tâche #31706: Valider le scénario Sauvegarde/restauration des Images et VM Hapy 2.8.0+ added

#9 Updated by Daniel Dehennin about 3 years ago

Je reprends un commentaire du scénario de validation:

Je viens de faire un test qui est allé jusqu’au bout :

root@grichka:~# time onebck 
/mnt/sauvegardes
Saving unused (if needed) and non persistent images

real    118m43,675s
user    8m13,074s
sys    5m7,580s

Lors de la sauvegarde d’une VM, celle-ci n’est pas suspendue/arrêtée, j’ai fait un autre test avec qemu-guest-agent et c’est la même chose.

Il y a donc toujours des écritures sur les disques pendant la sauvegarde ce qui peut engendrer des sauvegardes invalides (à minima un fsck).

/mnt/sauvegardes/
└── [4.0K]  one
    └── [4.0K]  datastores
        ├── [4.0K]  0
        ├── [4.0K]  1
        ├── [4.0K]  100
        │   ├── [4.0K]  8
        │   │   ├── [1.9K]  deployment.0
        │   │   └── [  60]  disk.0 -> /var/lib/one/datastores/101/ce93f817cbbacfb33901156a39ea2fbd
        │   └── [4.0K]  9
        │       ├── [1.8K]  deployment.0
        │       ├── [  60]  disk.0 -> /var/lib/one/datastores/101/79d42822d54e341ecd542f60e511f8e9
        │       └── [  60]  disk.1 -> /var/lib/one/datastores/101/0d8067e2788695d02d139670cf03f8b0
        ├── [4.0K]  101
        │   ├── [ 63G]  0d8067e2788695d02d139670cf03f8b0
        │   ├── [193K]  1cc415bbd8d5faa18fec1aebd76e1ace
        │   ├── [ 22G]  79d42822d54e341ecd542f60e511f8e9
        │   ├── [4.3G]  9aaae78209c0ada7d1226e04603c2484
        │   └── [7.8G]  ce93f817cbbacfb33901156a39ea2fbd
        └── [4.0K]  102
            ├── [1.5G]  4701303683d94e4f7abaafd05de3e814
            └── [1.4G]  850babac1e90781d39003b6d19ba5e7f

9 directories, 12 files
/var/lib/one/datastores/
├── [4.0K]  0
├── [4.0K]  1
├── [4.0K]  100
│   ├── [4.0K]  8
│   │   ├── [1.9K]  deployment.0
│   │   └── [  60]  disk.0 -> /var/lib/one/datastores/101/ce93f817cbbacfb33901156a39ea2fbd
│   └── [4.0K]  9
│       ├── [1.8K]  deployment.0
│       ├── [  60]  disk.0 -> /var/lib/one/datastores/101/79d42822d54e341ecd542f60e511f8e9
│       └── [  60]  disk.1 -> /var/lib/one/datastores/101/0d8067e2788695d02d139670cf03f8b0
├── [4.0K]  101
│   ├── [ 63G]  0d8067e2788695d02d139670cf03f8b0
│   ├── [193K]  1cc415bbd8d5faa18fec1aebd76e1ace
│   ├── [ 22G]  79d42822d54e341ecd542f60e511f8e9
│   ├── [4.3G]  9aaae78209c0ada7d1226e04603c2484
│   └── [7.8G]  ce93f817cbbacfb33901156a39ea2fbd
├── [4.0K]  102
│   ├── [1.5G]  4701303683d94e4f7abaafd05de3e814
│   └── [1.4G]  850babac1e90781d39003b6d19ba5e7f
└── [4.0K]  2

8 directories, 12 files

La sauvegarde du Scribe avec 2 disques (40Go et 500Go)

  • disque 0 : 22Go réels sur 40Go
    • Sauvegarde du disque prend presque 20 minutes (temps entre HOTPLUS_SAVEAS et RUNNING)
      ==> /var/log/one/9.log <==
      Mon Mar 15 13:28:01 2021 [Z0][VM][I]: New LCM state is HOTPLUG_SAVEAS
      Mon Mar 15 13:47:40 2021 [Z0][VM][I]: New LCM state is RUNNING
      
    • La copie du disque dans /mnt/sauvegardes/ et la vérification de sa somme de contrôle prend environ 7 minutes (temps entre le RUNNING et le HOTPLUG_SAVEAS suivant)
      ==> /var/log/one/9.log <==
      Mon Mar 15 13:28:01 2021 [Z0][VM][I]: New LCM state is HOTPLUG_SAVEAS
      Mon Mar 15 13:47:40 2021 [Z0][VM][I]: New LCM state is RUNNING
      Mon Mar 15 13:54:15 2021 [Z0][VM][I]: New LCM state is HOTPLUG_SAVEAS
      
  • disque 1: 63Go réels sur 500Go
    • Sauvegarde du disque prend plus d’une heure (temps entre HOTPLUS_SAVEAS et RUNNING)
      ==> /var/log/one/9.log <==
      Mon Mar 15 13:54:15 2021 [Z0][VM][I]: New LCM state is HOTPLUG_SAVEAS
      Mon Mar 15 15:01:52 2021 [Z0][VM][I]: New LCM state is RUNNING
      
    • La copie du disque dans /mnt/sauvegardes/ et la vérification de sa somme de contrôle prend environ 22 minutes (temps entre le retour du RUNNING du scribe et le HOTPLUG_SAVEAS de l’Amon)
      ==> /var/log/one/9.log <==
      Mon Mar 15 13:54:15 2021 [Z0][VM][I]: New LCM state is HOTPLUG_SAVEAS
      Mon Mar 15 15:01:52 2021 [Z0][VM][I]: New LCM state is RUNNING
      
      ==> /var/log/one/8.log <==
      Mon Mar 15 15:22:44 2021 [Z0][VM][I]: New LCM state is HOTPLUG_SAVEAS
      

La sauvegarde de l’Amon avec 1 disque de 40Go

  • disque 0 : 7,9Go réels sur 40Go
    • Sauvegarde du disque prend presque 1 minutes (temps entre HOTPLUS_SAVEAS et RUNNING)
      ==> /var/log/one/8.log <==
      Mon Mar 15 15:22:44 2021 [Z0][VM][I]: New LCM state is HOTPLUG_SAVEAS
      Mon Mar 15 15:23:56 2021 [Z0][VM][I]: New LCM state is RUNNING
      
    • La copie du disque dans /mnt/sauvegardes/ et la vérification de sa somme de contrôle prend un peu plus d’une minutes (temps évaluer avec une une commande en console)

#10 Updated by Daniel Dehennin about 3 years ago

En fait, les cliché à chaud peuvent bénéficier du qemu-agent pour geler le système de fichier pendant le snapshot mais à priori pas la création d’une nouvelle image.

Il faut donc que l’on revoit la procédure qui ne produit que des images cassées dans les tests que j’ai réalisé.

#11 Updated by Daniel Dehennin almost 3 years ago

La sauvegarde sur grichka se passe correctement lorsque les VM sont suspendues.

Est-il possible de les remettre en route une fois la sauvegarde terminées ?

#12 Updated by Daniel Dehennin almost 3 years ago

En revanche, la restauration ne fonctionne pas

root@grichka:~# onerst 
Restoring vm 13 from /mnt/sauvegardes/one/datastores/100/13
No such file or directory @ rb_sysopen - 
/usr/lib/ruby/2.7.0/digest.rb:50:in `initialize'
/usr/lib/ruby/2.7.0/digest.rb:50:in `open'
/usr/lib/ruby/2.7.0/digest.rb:50:in `file'
/usr/lib/ruby/2.7.0/digest.rb:35:in `file'
/usr/lib/ruby/vendor_ruby/one/restore/vm.rb:88:in `block in restore'
/usr/lib/ruby/2.7.0/find.rb:49:in `block (2 levels) in find'
/usr/lib/ruby/2.7.0/find.rb:48:in `catch'
/usr/lib/ruby/2.7.0/find.rb:48:in `block in find'
/usr/lib/ruby/2.7.0/find.rb:43:in `each'
/usr/lib/ruby/2.7.0/find.rb:43:in `find'
/usr/lib/ruby/vendor_ruby/one/restore/vm.rb:66:in `each'
/usr/lib/ruby/vendor_ruby/one/restore/vm.rb:66:in `restore'
/usr/bin/onerst:174:in `block in <main>'
/usr/bin/onerst:173:in `each'
/usr/bin/onerst:173:in `<main>'

#13 Updated by Philippe Caseiro almost 3 years ago

Daniel Dehennin a écrit :

La sauvegarde sur grichka se passe correctement lorsque les VM sont suspendues.

Est-il possible de les remettre en route une fois la sauvegarde terminées ?

Elles devraient repartir après la sauvergarde. Je vais retester chez moi.

#14 Updated by Daniel Dehennin almost 3 years ago

Sur grichka Hâpy 2.8.1 :

  • sauvegarde d’un amon et d’un scribe en mode persistant OK (après avoir installé ruby-rsync qui manque en dépendance)
  • restauration des VMs, les diagnoses sont OK après la restauration (la restauration n’utilise pas rsync en revanche).
oneadmin@grichka:~$ time onerst
Restoring vm 13 from /mnt/sauvegardes/one/datastores/100/13
Restoring vm 15 from /mnt/sauvegardes/one/datastores/100/15

real    70m1,275s
user    16m33,001s
sys     6m18,995s

#15 Updated by Gilles Grandgérard almost 3 years ago

  • Status changed from Nouveau to Terminé (Sprint)

#16 Updated by Joël Cuissinat almost 3 years ago

  • Release set to EOLE 2.8.0.1

Also available in: Atom PDF