Corrections de présentation et de contenu

This commit is contained in:
jlecour 2017-01-26 14:50:11 +01:00
parent 45ad6a84f2
commit ea8a9c10e5

View file

@ -1,30 +1,35 @@
### Migration à chaud d'une .img via volumes drbd stacké ---
title: DRBD cas pratique : empilement de ressources (avec méta-données externes)
---
**Ce « retour » est incomplet et invalide !** ## Migration à chaud d'une .img via volumes DRBD empilés
On ne peut pas « empiler » un volume drbd sur un autre, sans utiliser les directives prévu à cet effet. Il faut donc forcément utiliser la méthode officielle : <http://www.drbd.org/en/doc/users-guide-83/s-three-nodes> **Attention : ce « retour d'expérience » est incomplet et invalide !** ; on ne peut pas « empiler » un volume drbd sur un autre, sans utiliser les directives prévues à cet effet. Il faut donc forcément utiliser la méthode officielle : <http://www.drbd.org/en/doc/users-guide-83/s-three-nodes>.
Dans ce scénario, on dispose de VMs avec leur stockage sur un fichier.img. L'idée est de migrer le disque .img à chaud sur un autre hyperviseur en utilisant drbd en mode « stacké ». ----
Soit 3 hyperviseurs : foo, bar et baz
Dans ce scénario, on dispose de VMs avec leur stockage sur un fichier ".img". L'idée est de migrer le disque .img à chaud sur un autre hyperviseur en utilisant DRBD en mode « stacked » (empilé).
Nous utilisons 3 hyperviseurs : **foo**, **bar** et **baz**.
~~~ ~~~
Fichier .img → loop device → drbd entre foo et bar → drbd entre bar et baz Fichier .img → loop device → drbd entre foo et bar → drbd entre bar et baz
~~~ ~~~
On monte l'image sur un loop device. On monte l'image sur un _loop device_.
~~~ ~~~
foo# losetup /dev/loop0 qux.img foo# losetup /dev/loop0 qux.img
~~~ ~~~
On monte un drbd entre foo:/dev/loop0 et bar:/dev/drbd0 (bar:/dev/drbd0 étant entre bar et baz). On monte un DRBD entre `foo:/dev/loop0` et `bar:/dev/drbd0` (`bar:/dev/drbd0` étant entre bar et baz).
Il faudra stocker les meta-donées en externe. On calcule la taille nécessaire. Il faudra stocker les meta-données en externe. On calcule la taille nécessaire.
<http://serverfault.com/questions/433999/calculating-drbd-meta-size> <http://serverfault.com/questions/433999/calculating-drbd-meta-size>
metacalc.sh : metacalc.sh :
~~~ ~~~{.bash}
#!/bin/bash #!/bin/bash
which bc >/dev/null 2>&1 which bc >/dev/null 2>&1
@ -63,7 +68,7 @@ Meta Data: 1 MiB
~~~ ~~~
On pourra ajouter une marge au cas où… On pourra ajouter une marge au cas où…
Si pas de possibilité LVM, on utilisera un fichier plus un loop device : Si on n'a pas la possibilité d'utiliser LVM, on utilisera un fichier plus un loop device :
~~~ ~~~
foo# dd if=/dev/zero of=./qux.img.drbd.metadata bs=1M count=2 foo# dd if=/dev/zero of=./qux.img.drbd.metadata bs=1M count=2
@ -72,9 +77,9 @@ foo# losetup /dev/loop1 qux.img.drbd.metadata
Si l'on peut utiliser LVM, il suffira de créer un volume dédié. Si l'on peut utiliser LVM, il suffira de créer un volume dédié.
Maintenant que l'on a un device pour les meta-données, on créer la ressource drbd. Maintenant que l'on a un _device_ pour les meta-données, on créer la ressource DRBD.
Sur foo : Sur **foo** :
~~~ ~~~
resource "qux" { resource "qux" {
@ -108,8 +113,7 @@ resource "qux" {
} }
~~~ ~~~
Attention si vous n'utiliser pas la même version de drbd… La config est différente. Attention si vous n'utilisez pas la même version de DRBD, la config est différente. Exemple avec la version 8.3 :
En 8.3 :
~~~ ~~~
resource "qux" { resource "qux" {
@ -138,7 +142,7 @@ resource "qux" {
} }
~~~ ~~~
Sur bar : Sur **bar** :
~~~ ~~~
resource "qux" { resource "qux" {
@ -172,13 +176,13 @@ resource "qux" {
} }
~~~ ~~~
On arrête la vm qux. On arrête la VM **qux**.
~~~ ~~~
foo# virsh stop qux foo# virsh stop qux
~~~ ~~~
On active la nouvelle ressource drbd. On active la nouvelle ressource DRBD.
~~~ ~~~
foo# drbdadm create-md qux foo# drbdadm create-md qux
@ -190,12 +194,13 @@ bar# foo# drbdadm attach qux
foo# drbdadm -- --overwrite-data-of-peer primary qux foo# drbdadm -- --overwrite-data-of-peer primary qux
~~~ ~~~
On édite sa config pour être mettre /dev/drbdX en tant que disque. Et on démmare On édite sa config pour être mettre `/dev/drbdX` en tant que disque. Et on démarre
~~~ ~~~
foo# virsh edit foo# virsh edit
foo# vrish start foo# vrish start
~~~ ~~~
Une fois la synchro terminé. On pourra éteindre la VM et la démarrer sur bar. Une fois la synchro terminé. On pourra éteindre la VM et la démarrer sur **bar**.
On pourra supprier la ressources drbd qui a servi à la migration ainsi que le disque de méta-données.
On pourra supprimer la ressources DRBD qui a servi à la migration ainsi que le disque de méta-données.