Mettre à jour sereinement son système grâce à LVM

Magazine
Marque
Linux Pratique
Numéro
103
|
Mois de parution
septembre 2017
|
Domaines


Résumé
Qui n’a jamais eu de problèmes lors de la mise à jour de son système ? Qui n’a jamais espéré pouvoir annuler sa dernière mise à jour de façon relativement simple. Découvrez comment faire cela simplement sous CentOS 7 avec les instantanés LVM.

Body

Outils utilisés : lvm2 / CentOS 7

Introduction

Linux Volume Manager (LVM) est un outil installé et configuré par défaut à l’installation de nombreuses distributions, dont CentOS. Il est cependant nécessaire de faire une modification sur le mode de partitionnement initial de la distribution pour profiter pleinement de la fonctionnalité de prise d’instantané (ou snapshot) fournie par cet outil.

Étape 1 : Préparer le terrain

Par défaut, CentOS 7 s’installe et configure /boot sur une partition xfs séparée. Cela peut avoir certains avantages, mais pas dans notre cas. Pour remédier à cela, nous allons avoir besoin d’intégrer le contenu de cette partition dans la partition root. Cela peut se faire ainsi (sous réserve que rsync soit installé sur votre machine) :

# rsync -avz /boot/ boot/

# umount /boot

# rsync -avz boot/ /boot/

# grub2-mkcong -o /boot/grub2/grub.cfg

Il faut ensuite commenter la ligne correspondant au montage de /boot dans le fichier /etc/fstab. Il suffit de mettre un # en début de ligne. Cela va donner une ligne comme celle-ci :

#UUID=27dbd38a-52c7-4207-a44a-3484327e9067           /boot                 xfs     defaults        0 0

On peut redémarrer la machine pour s’assurer que la modification est bien fonctionnelle.

Étape 2 : Prendre son premier instantané

Listons les groupes de volumes disponibles et les volumes logiques pour avoir un aperçu de notre LVM.

# vgs

  VG         #PV #LV #SN Attr   VSize  VFree

  centos   1   1   1 wz--n- 19.00g 9.00g

# lvs

  LV                      VG         Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  root                    centos owi-aos--- 10.00g                     

Ici, il n’y a qu’un groupe de volumes, centos avec 9Go d’espace non alloué, et il y a un volume logique (j’ai désactivé le swap durant l’installation). Il est nécessaire d’avoir de l’espace libre dans le groupe de volumes pour pouvoir utiliser les instantanés LVM.

Créons notre premier instantané du volume logique root grâce à la commande lvcreate. Il portera le nom root-20170628 pour se souvenir facilement de la date à laquelle il a été effectué. Nous allons lui allouer 2Go sur les 9 disponibles.

# lvcreate -s -L 2G -n root-20170628 /dev/centos/root

  Using default stripesize 64,00 KiB.

  Logical volume "root-20170628" created.

# lvs

  LV                      VG         Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  root                    centos owi-aos--- 10.00g                                                    

root-20170628 centos swi-a-s--- 2.00g root 0.00

La taille d’un snapshot représente la taille des modifications autorisées par rapport au volume logique d’origine. C’est cette dernière valeur qui est la plus difficile à déterminer. Il est d’autant plus important de bien choisir cette valeur qu’ un snapshot rempli à 100 % est corrompu et devient donc inutilisable. Dans le cas de mises à jour système, le différentiel entre le volume logique d’origine et l’instantané peut augmenter très vite si les mises à jour ne sont pas réalisées régulièrement.

Étape 3 :Modifier le volume logique d’origine

# curl -L -O https://download.fedoraproject.org/pub/fedora/linux/releases/25/Workstation/x86_64/iso/Fedora-Workstation-netinst-x86_64-25-1.3.iso

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0

100  464M  100  464M    0     0  1653k      0  0:04:47  0:04:47 --:--:-- 1363k

# lvs

  LV            VG         Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  root          centos owi-aos--- 10.00g                                                    

  root-20170628 centos swi-a-s---  2.00g      root   20.38        

Ici nous téléchargeons un fichier image de taille importante pour voir quel est l’effet sur le snapshot. Comme on peut le voir, l’instantané est indiqué comme rempli à 20 % après l’ajout du fichier. Ce qui est logique, on vient de rajouter 450 Mo (sur 2 Go autorisés), et donc cette quantité de données diffère donc du volume logique de base et remplie donc le snapshot.

On peut ensuite supprimer le volume instantané grâce à la commande lvremove.

# lvremove /dev/centos/root-20170628

Do you really want to remove active logical volume centos/root-20170628? [y/n]: y

  Logical volume "root-20170628" successfully removed

Étape 4 : Installer un logiciel

Nous allons installer un logiciel sur notre système, grâce à l’outil de gestion de paquets yum. La première étape est de créer un volume logique de type snapshot comme au paragraphe 1, préalablement à l’installation.

# lvcreate -s -L 2G -n root-20170628 /dev/centos/root

# yum install httpd

[la sortie de l’installation ne nous intéresse pas]

# rpm -qa | grep httpd

httpd-tools-2.4.6-45.el7.centos.4.x86_64

httpd-2.4.6-45.el7.centos.4.x86_64

Étape 5 ... et revenir en arrière !

Nous cherchons maintenant à revenir à l’état du système avant l’installation. Pour cela, nous allons utiliser la commande lvconvert avec l’option --merge.

# lvconvert --merge /dev/centos/root-20170628

  Can't merge until origin volume is closed.

  Merging of snapshot centos/root-20170628 will occur on next activation of fedora/root.

Rien de grave concernant ce message, il indique simplement que le volume logique et son snapshot seront fusionnés (et donc retrouverons l’état dans lequel était le volume logique root à la création du snapshot) à la prochaine activation du volume logique. Pour finaliser l’opération, nous devons redémarrer le système. Il n’y a plus de traces de httpd sur le système de fichiers.

Étape 6 : Mettre à jour son système

Pour cela, il faut donc prendre un instantané avant la mise à jour, de façon automatique, en effet quoi de plus facile que d’oublier de taper une commande. On peut créer dans un premier temps, un alias comme celui-ci :

# alias update='lvcreate -s -L 2G -n root-update-$(date +%s) /dev/centos/root && yum update'

Cela marche sans problème, mais présente plusieurs problèmes que l’on va tâcher de régler ensuite. Le premier est que le snapshot est créé que l’on accepte ou non les mises à jour présentées. Ce qui peut faire rapidement croître leur nombre. Deuxièmement, on peut tout simplement oublier de passer par l’alias, bien sûr on ne s’en rendra compte que le jour où il y aura un problème.

Étape 7 : Utiliser le plugin yum pour automatiser la prise d’instantané

Il existe un plugin pour yum qui répond spécifiquement à notre besoin : yum-plugin-fs-snapshot. Une fois installé, /etc/yum/pluginconf.d/fs-snapshot.confpermet de le paramétrer.

Le fichier suivant prendra un instantané de la partition root dont la taille est 20 % de la partition root. Il est possible de spécifier la taille précise du snapshot avec l’option -L au lieu de -l.

[main]

enabled = 1

create_snapshots_in_post = 0

[lvm]

enabled = 1

# 'lvcreate_size_args' option must specify the snapshot LV size using -L or -l

lvcreate_size_args = -l 20%ORIGIN

Voici ce qu’on obtient à l’utilisation :

# yum install rsync

[...]

Total size: 360 k

Installed size: 732 k

Downloading packages:

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

fs-snapshot: snapshotting / (/dev/centos/root): root_yum_20170628230947

  Installing : rsync-3.0.9-17.el7.x86_64                                                                                         1/1

  Verifying  : rsync-3.0.9-17.el7.x86_64                                                                                         1/1

Installed:

  rsync.x86_64 0:3.0.9-17.el7           

                                                                                                               

Complete!

Un snapshot est créé de façon automatique lorsqu’on installe ou met à jour avec yum.

Attention cependant lorsqu’on l’utilise en condition réelle on peut apercevoir la notification suivante :

fs-snapshot: WARNING: creating LVM snapshot of root LV.  If a kernel is

                      being altered /boot may need to be manually restored

                      in the event that a system rollback proves necessary.

La manipulation permet de ne pas tenir compte de cet avertissement.

Il est important de réaliser que le retour en arrière fait perdre toutes les données qui ont été modifiées sur le volume depuis la mise à jour, c’est pourquoi il peut être intéressant de séparer ses partitions de données, comme /home ou /var pour qu’elles ne soient pas impactées lors de la fusion du volume root avec son instantané. Cela peut également amener quelques incohérences dans les logs par exemple.

Aller plus loin

Les instantanés ont tendance à s’accumuler rapidement au fur et à mesure des mises à jour. Il peut être intéressant d’avoir un script lancé par cron qui les supprime régulièrement, à vous de trouver la bonne fréquence.

Yum est peu à peu remplacé dans les distributions, Fedora par exemple est passée à dnf pour lequel il n’existe pas encore de plugin équivalent, sauf à utiliser des volumes lvm à allocation fine (thin provisionning) et le plugin Snapper.

Certains systèmes de fichiers permettent de faire la même chose, comme Btrfs par exemple, toujours avec le plugin Snapper.


Sur le même sujet

Crostini : débridez Chrome OS avec les applications Linux

Magazine
Marque
Linux Pratique
Numéro
120
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Chrome OS est basé sur un système Linux (Gentoo), mais l'approche adoptée par Google est de limiter les possibilités de paramétrage et d'installation d'applications. Pour améliorer la polyvalence de son système sans remettre en cause son modèle sécuritaire, Google a, par la suite, introduit Crostini : une solution basée sur LXC pour que les utilisateurs de Chrome OS puissent travailler avec Linux dans un conteneur.

Analysez, diagnostiquez et dépannez votre système avec Sysdig

Magazine
Marque
Linux Pratique
HS n°
Numéro
47
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Un système ne manque pas d’avoir des problèmes matériels, de plantage système, de performances, au niveau utilisateur ou noyau. Et malheureusement, les systèmes Linux ne sont pas exempts de ces problèmes à dépanner. Mais heureusement, Linux n’est pas en reste d’outils pour vous aider à diagnostiquer les problèmes. Des outils simples comme top pour surveiller l’usage CPU, ou ps pour les processus. Vous voulez tracer un appel système d’un processus : strace est votre ami. tcpdump, ou tshark vous aideront à inspecter le trafic réseau en ligne de commandes. Vous avez donc beaucoup d’outils à disposition, dans l’esprit « un outil précis pour une tâche unique », cher à Linux. Le problème c’est que lorsque l’on dépanne un système, on n’a pas le temps de se souvenir de tous les outils à disposition et taper toutes ces commandes en live. Outils qui ont chacun une philosophie différente, une interface d’entrée et de sortie différentes, ce qui peut poser soucis dans des situations stressantes et créer de la confusion lors d’occasions qui demandent de réagir dans l’urgence. Surtout que la plupart de ces outils ne sont pas pensés et optimisés pour être utilisés dans des conteneurs, plateformes de plus en plus utilisées et répandues.

Mettez en place une gestion efficace de vos journaux système avec Loki

Magazine
Marque
Linux Pratique
HS n°
Numéro
47
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Bien avant les métriques et les graphiques de performances, les journaux système étaient la première source pour dépanner un système ou un service qui posait problème. Et ils le sont toujours : par défaut, sans aucune configuration, n’importe quel système Linux ou service journalise son activité et ses erreurs. Mais tout comme les métriques, si vous commencez à avoir à administrer plusieurs systèmes, la question se pose de centraliser ces journaux pour pouvoir les consulter simplement. Et quel stockage utiliser ? Des solutions, privées comme Splunk, ou libres comme Kibana sont déjà très populaires. Mais leur type de stockage (ElasticSearch pour Kibana), avec un indexage pour la recherche plein texte, prend beaucoup de place à l’utilisation et en sauvegarde, pour un intérêt limité dans la majorité des cas d’utilisation. Dans cet article, nous allons découvrir Loki, une solution toute récente, plus légère, pour gérer vos journaux.

Basez votre supervision sur des logs de qualité avec Rsyslog

Magazine
Marque
Linux Pratique
HS n°
Numéro
47
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Les événements systèmes (aussi nommés logs dans la suite de l’article) sont des éléments déterminants pour la supervision du bon fonctionnement du système d’exploitation. Leur intérêt est souvent sous-coté aussi bien du point de vue maintenance du système que de sa sécurité. Cet article a pour ambition de poser les bases d’une bonne gestion des logs.

Neovim : dépoussiérez votre Vim

Magazine
Marque
Linux Pratique
HS n°
Numéro
47
|
Mois de parution
juillet 2020
|
Domaines
Résumé

Une application historique, puissante, populaire avec une base utilisateurs énorme, une compatibilité multiplateforme ultra-large, un code et une API quasi inmaintenables, dirigée par un Dictateur Bienveillant À Vie comme chef de projet et unique développeur : Vim présente toutes les caractéristiques d’un projet libre à succès. Et donc aussi tous les problèmes qui irritent ses utilisateurs et les contributeurs qui auraient le courage de participer à son développement. Dans cet article, nous allons découvrir Neovim, un fork de Vim né de la frustration d’utilisateurs de l’éditeur.

Par le même auteur

Réaliser une sauvegarde et la restaurer avec Btrfs

Magazine
Marque
Linux Pratique
Numéro
114
|
Mois de parution
juillet 2019
|
Domaines
Résumé

Disponible depuis maintenant presque 10 ans, Btrfs est un système de fichiers mature qui est poussé par SUSE, il est devenu le système de fichiers par défaut lors de son installation. Il offre des possibilités intéressantes par rapport aux systèmes de fichiers historiques. Démonstration avec une sauvegarde/restauration à l’aide de la fonctionnalité d’instantané (snapshot).