Corrections de présentation et de contenu
This commit is contained in:
parent
45ad6a84f2
commit
ea8a9c10e5
|
@ -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.
|
Loading…
Reference in a new issue