Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| fr:lvm_snapshot [2016/12/23 09:49] – zatalyz | fr:lvm_snapshot [2023/06/19 05:42] (Version actuelle) – Erreur pour refaire un snapshot zatalyz | ||
|---|---|---|---|
| Ligne 31: | Ligne 31: | ||
| * TAILLE : taille, par exemple 500m, 10g ou 1t | * TAILLE : taille, par exemple 500m, 10g ou 1t | ||
| * NOM_VG : nom du groupe de volume dans lequel le LV va être. | * NOM_VG : nom du groupe de volume dans lequel le LV va être. | ||
| + | |||
| + | Si le volume est à utiliser pour du stockage, il faut le formater et lui attribuer un système de fichier : | ||
| + | mkfs.ext4 / | ||
| + | |||
| + | Vérifier que tout va bien en la montant : | ||
| + | |||
| + | mkdir /mnt/lv | ||
| + | mount / | ||
| + | |||
| + | L' | ||
| + | |||
| + | / | ||
| Pour supprimer un volume, s' | Pour supprimer un volume, s' | ||
| Ligne 43: | Ligne 55: | ||
| Il faut que la taille du volume soit en rapport avec la table de partition du volume. | Il faut que la taille du volume soit en rapport avec la table de partition du volume. | ||
| - | ==== lvextend ==== | + | ==== lvextend |
| On commence par augmenter la taille du volume. On peut soit dire combien on veut ajouter ('' | On commence par augmenter la taille du volume. On peut soit dire combien on veut ajouter ('' | ||
| Ligne 73: | Ligne 85: | ||
| * http:// | * http:// | ||
| - | ==== lvresize ==== | + | ==== lvresize |
| - | <WRAP center round important 60%> | + | '' |
| - | Bien que la proposition suivante soit dans la doc d'Ubuntu, | + | |
| - | '' | + | Il faut d'abord réduire la taille du système |
| - | </WRAP> | + | |
| + | Si la partition est en ext2, 3 ou 4, on utilise resize2fs. | ||
| + | |||
| + | Pour connaître la taille minimale de la partition : | ||
| + | resize2fs -P /nom/de/la/partition | ||
| + | Pour réduire à 50G par exemple : | ||
| + | resize2fs / | ||
| Utiliser '' | Utiliser '' | ||
| - | lvresize -L 100g / | + | lvresize |
| + | |||
| + | En théorie, avec l' | ||
| <WRAP center round important 90%> | <WRAP center round important 90%> | ||
| Pourquoi sur " | Pourquoi sur " | ||
| - | > Avec LVM en version 1, c'est bien / | + | > Avec LVM en version 1, c'est bien / |
| </ | </ | ||
| Ligne 108: | Ligne 128: | ||
| </ | </ | ||
| - | Avant de créer un snapshot, il faut s' | + | Avant de créer un snapshot, il faut s' |
| < | < | ||
| Ligne 115: | Ligne 135: | ||
| </ | </ | ||
| - | Donc, ici, prévoir un snapshot de 5Go sera largement assez pour démarrer. | + | Donc, ici, prévoir un snapshot de 10Go sera largement assez pour démarrer. |
| + | |||
| + | lvcreate -L 10g -s -n lv_test_20110617 / | ||
| + | |||
| + | Va créer un snapshot du LV " | ||
| + | Attention ! Le snapshot se remplit à mesure que l' | ||
| + | |||
| + | Lien : https:// | ||
| + | |||
| + | Lors de la création d'un volume logique, l' | ||
| + | |||
| + | Un snapshot conserve toutes les modifications apportées au LV d' | ||
| + | |||
| + | <WRAP center round tip 90%> | ||
| + | Si le volume logique est utilisé pour une VM, il vaut mieux éteindre la VM, faire le snapshot, puis rallumer la VM. Cela évitera d' | ||
| + | |||
| + | Cela reste un risque faible (le snapshot est relativement rapide) mais éteindre la VM évitera de potentiels problèmes. | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Utilisation du snapshot pour cloner une VM ==== | ||
| + | |||
| + | Ici je vais expliquer comment dupliquer une VM en utilisant des snapshots pour réduire le temps d' | ||
| + | |||
| + | |||
| + | === Création du snapshot === | ||
| + | |||
| + | La création du snapshot sert pour deux raisons : | ||
| + | * La copie d'un disque en train d' | ||
| + | * La copie d'une partition complète est longue, et pendant la copie la VM l' | ||
| + | |||
| + | < | ||
| + | root@groska: | ||
| + | root@groska: | ||
| + | root@groska: | ||
| + | </ | ||
| + | |||
| + | La création du snapshot prenant quelques secondes, la VM est arrêté moins d'une minute. | ||
| + | |||
| + | === Copie du LV === | ||
| + | |||
| + | Le snapshot contenant l' | ||
| + | |||
| + | On pourrait aussi vouloir faire une copie du système de fichier, en montant les partitions et en utilisant cp ou tar. Je n'ai pas testé dans ce cas précis, mais c'est envisageable, | ||
| + | |||
| + | On va préparer la création de spofu en créant également le LV destiné au swap. On se place dans un screen afin de pouvoir se déconnecter sans avoir à attendre la fin de la copie. | ||
| + | |||
| + | < | ||
| + | root@groska: | ||
| + | root@groska: | ||
| + | root@groska: | ||
| + | root@groska: | ||
| + | root@groska: | ||
| + | </ | ||
| + | |||
| + | La dernière commande étant très longue, on peut aller faire autre chose. | ||
| + | |||
| + | === Création de la VM === | ||
| + | |||
| + | On va reprendre la configuration et les données de lirria, en modifiant ce qui est nécessaire, | ||
| + | |||
| + | < | ||
| + | root@groska: | ||
| + | root@groska: | ||
| + | root@groska: | ||
| + | </ | ||
| + | |||
| + | On peut vérifier à la main que tout soit bien. | ||
| + | |||
| + | < | ||
| + | root@groska: | ||
| + | root@groska: | ||
| + | root@groska: | ||
| + | root@groska: | ||
| + | </ | ||
| + | |||
| + | J'ai mis ici une version avec sed qui me paraît plus lisible. Le but étant de remplacer l' | ||
| + | |||
| + | Il ne reste plus qu'à lancer la VM: | ||
| + | < | ||
| + | root@groska: | ||
| + | </ | ||
| + | <WRAP center round info 60%> | ||
| + | Notez que dans le cas exact de la création de spofu, j'ai également diminué la taille de la mémoire allouée à la VM, pour des raisons de mémoire disponible sur groska. | ||
| + | </ | ||
| + | <WRAP center round tip 60%> | ||
| + | Pour une mise à jour de spofu à partir de liria, ou une réinitialisation, | ||
| + | |||
| + | Ainsi, pas besoin de toucher au fichier spofu.cfg ou de re-créer des LV. | ||
| + | </ | ||
| + | |||
| + | ==== Alternative : copier le clone sur un autre serveur ==== | ||
| + | <WRAP center round important 60%> | ||
| + | En cours de test. Copier une VM est très long, ce n'est pas forcément la façon la plus rapide de procéder, mais parfois, c'est utile. | ||
| + | </ | ||
| + | |||
| + | Une fois le snapshot créé, le copier (= en faire un clone) pour pouvoir relancer la VM de base rapidement. | ||
| + | |||
| + | Dans l' | ||
| + | |||
| + | On commence par éteindre liria, faire son snapshot, puis copier ce dernier (sur le même disque dur) avant de relancer liria. Copiez avec '' | ||
| + | |||
| + | Sur le serveur de destination (nuxru), on prépare l' | ||
| + | screen -DR | ||
| + | lvcreate -L 50G -n spofu-disk groska | ||
| + | lvcreate -L 4G -n spofu-swap groska | ||
| + | mkswap / | ||
| + | |||
| + | Sur le serveur d' | ||
| + | screen -DR | ||
| + | xl shutdown lirria | ||
| + | lvcreate -s -L 50G -n liria-disk-snap / | ||
| + | lvcreate -L 50G -n spofu-disk groska | ||
| + | dd if=/ | ||
| + | xl create / | ||
| + | |||
| + | |||
| + | |||
| + | Ensuite, on vérifie que nos deux serveurs peuvent [[fr: | ||
| + | |||
| + | La commande suivante est à exécuter depuis le serveur primaire vers le serveur secondaire (toujours sous screen ou tmux pour qu'une déconnexion ssh ne casse pas la commande) : | ||
| + | dd if=/ | ||
| + | |||
| + | Il faut ensuite vérifier que le transfert s'est bien passé et donc comparer le checksum des deux volumes : | ||
| + | md5sum / | ||
| + | md5sum / | ||
| + | |||
| + | Le swap a été créé plus haut ; il suffit de copier le fichier ''/ | ||
| + | xl create -c / | ||
| + | |||
| + | ==== Autre usage des snapshots : utilisation du merge ==== | ||
| + | |||
| + | Une autre utilisation possible du snapshot est de tester quelque chose et de revenir en arrière si ça se passe mal. Dans ce cas, on va commencer comme à l' | ||
| + | |||
| + | On arrête donc la VM, puis on merge le snapshot, afin d' | ||
| + | |||
| + | < | ||
| + | root@groska: | ||
| + | </ | ||
| + | |||
| + | Le snapshot, devenu inutile, est détruit dans l' | ||
| + | |||
| + | |||
| + | ==== Problèmes divers ==== | ||
| + | === LVS liste des disques qui ont disparus === | ||
| + | Cas typique : vous voulez lancer une VM avec Xen et la réponse ressemble à ça : | ||
| + | |||
| + | < | ||
| + | Parsing config from / | ||
| + | libxl: error: libxl_device.c: | ||
| + | libxl: error: libxl_create.c: | ||
| + | libxl: error: libxl.c: | ||
| + | libxl: error: libxl.c: | ||
| + | libxl: error: libxl.c: | ||
| + | </ | ||
| + | |||
| + | La commande '' | ||
| + | < | ||
| + | etherpad2-disk | ||
| + | etherpad2-swap | ||
| + | etherpad2_snap_2019-05-07 nuxru swi-a-s--- | ||
| + | etherpad2_snap_2020-02-20 nuxru swi-a-s--- | ||
| + | </ | ||
| + | |||
| + | (Ici notre groupe de volumes logique s' | ||
| + | |||
| + | Pourtant, un '' | ||
| + | |||
| + | < | ||
| + | total 0 | ||
| + | lrwxrwxrwx 1 root root 7 Feb 20 11:19 etherpad2-swap -> ../dm-9 | ||
| + | </ | ||
| + | Il y a encore le swap... mais pas le disque ou les snapshots. | ||
| + | |||
| + | Ici, la commande '' | ||
| + | |||
| + | < | ||
| + | nuxru-etherpad2_snap_2020--02--20-cow (254: | ||
| + | nuxru-etherpad2--disk (254: | ||
| + | nuxru-etherpad2_snap_2020--02--20 (254: | ||
| + | nuxru-etherpad2_snap_2019--05--07 (254: | ||
| + | nuxru-etherpad2_snap_2019--05--07-cow (254: | ||
| + | nuxru-etherpad2--disk-real (254: | ||
| + | nuxru-etherpad2--swap (254: | ||
| + | </ | ||
| + | |||
| + | <WRAP center round info 60%> | ||
| + | '' | ||
| + | </ | ||
| + | |||
| + | Le deuxième chiffre entre parenthèse correspond à celui du " | ||
| + | |||
| + | En cas de doute, on peut monter temporairement le disque en question : | ||
| + | < | ||
| + | mount /dev/dm-11 / | ||
| + | ls / | ||
| + | umount / | ||
| + | |||
| + | Il reste à refaire le lien symbolique (reprenez bien le terme listé dans lvs) : | ||
| + | < | ||
| + | cd / | ||
| + | ln -s ../dm-11 etherpad2-disk</ | ||
| + | |||
| + | Il faut aussi remettre les snapshots en place, qui ont sauté aussi à cette occasion. Ici, il y a une subtilité, car nous avons deux dm qui peuvent correspondre pour la même date (attention c'est dans le désordre quand tout est listé) : | ||
| + | < | ||
| + | nuxru-etherpad2_snap_2020--02--20 (254: | ||
| + | nuxru-etherpad2_snap_2019--05--07 (254: | ||
| + | nuxru-etherpad2_snap_2019--05--07-cow (254: | ||
| + | |||
| + | Il ne faut pas faire un lien vers les volumes se terminant en '' | ||
| + | < | ||
| + | ln -s ../dm-15 etherpad2_snap_2020-02-20 | ||
| + | ln -s ../dm-13 etherpad2_snap_2019-05-07 | ||
| + | </ | ||
| + | |||
| + | Après ça, la VM peut être relancée. | ||
| + | |||
| + | <WRAP center round important 60%> | ||
| + | Attention, si le lien vers un volume logique a sauté, ce ne sera probablement pas le seul. Vérifier la concordance entre tous les volumes listés dans '' | ||
| + | </ | ||
| + | |||
| + | Si jamais vous avez des disques listés comme " | ||
| + | |||
| + | < | ||
| + | nuxru-kuckla--disk (254: | ||
| + | nuxru-kuckla--disk-real (254: | ||
| + | nuxru-kuckla--swap (254: | ||
| + | |||
| + | < | ||
| + | total 0 | ||
| + | lrwxrwxrwx 1 root root 7 Feb 20 11:19 kuckla-disk -> ../dm-4 | ||
| + | lrwxrwxrwx 1 root root 7 Feb 20 11:19 kuckla-swap -> ../ | ||
| + | |||
| + | Donc, s'il y avait besoin, ce serait '' | ||
| + | |||
| + | === Impossible de refaire un snapshot === | ||
| + | Après un merge, et malgré un reboot, il y a parfois un souci, et l' | ||
| + | Snapshots of an origin that has a merging snapshot are not supported. | ||
| + | |||
| + | '' | ||
| - | lvcreate | + | Cela viendrait d'une incohérence dans le potage. Pour corriger ça, une petite mise à jour des données de LVM via |
| + | lvchange | ||
| - | Va créer un snapshot du LV " | + | Cette fois '' |





