Récupération de données d’un disque Linux utilisant LVM
Gérant la demande d’une personne chez qui j’avais installé un serveur personnel, j’ai dû m’intéresser de nouveau aux méthodes de récupération des données depuis des disques dur Linux avec gestion de volume logique LVM. Le serveur est effectivement parti en fumée. Le disque dur de backup qui était connecté en USB a subi le même sort, il aurait dû permettre normalement de récupérer les données sans difficulté. Malchance, problème électrique ? Qu’importe puisque le disque dur du serveur semble encore fonctionnel.
Le serveur était basé sur un OS équivalent à mon propre système : Sme Serveur 7, lui même basé sur un OS linux Centos 4 qui est une version open source d’une distribution RedHat.
J’avais déjà eu l’occasion de gérer cela il y a plusieurs années, avec difficulté du fait du manque d’outils simples.
Parlons directement de la solution pour ceux qui ont un problème équivalent : le logiciel gratuit Linux reader de la société Diskinternals. Ce logiciel sous Windows permet de lire les disques dur formattés en ext3 / ext4 / …. Mais plus encore il gère aujourd’hui les volumes LVM. Avec ce logiciel il est donc possible de relire les données et les transférer en lieu sûr, tout cela en toute simplicité sans suivre un tutoriel complexe.
D’autres outils plus complets et payants de Diskinternals sont également capables de récupérer des données de disques corrompus ou abîmés, et cela pour différents formats.
Pour les moins pressés intéressons nous au système de volume LVM, ainsi qu’aux méthodes plus anciennes de récupération de données.
LVM ( Logical volume management )
La gestion de volumes logiques est une surcouche hardware ou software qui s’intercale entre le disque dur physique ( décomposé en secteurs ) et les différents systèmes de fichiers que l’on crée sur celui-ci. Les OS allouent à chacun des systèmes de fichiers soit une lettre pour les systèmes Windows ( C: D: , … ), soit un point de montage pour les systèmes linux.
Le système le plus connu de gestion de volumes logiques est le RAID software dont vous avez déjà dû entendre parler :
- La gestion de disque par RAID a été créé à l’origine comme une fonction hardware permettant de gérer la redondance et l’extension de systèmes ayant plusieurs disques physiques.
- Le système LVM est une fonction nativement software permettant de gérer dynamiquement des systèmes de fichiers sur 1 ou plusieurs disques.
Néanmoins l’évolution de ces deux normes au cours des années fait qu’ils ont aujourd’hui des fonctionnalités très proches ( voir cet article pour un comparatif ). Par exemple le RAID est aujourd’hui couramment géré par software, quand au LVM il est capable de gérer tous les cas de redondances à l’égal des systèmes RAID.
Voyons quelques cas concrets pour lesquels la gestion de volumes logiques est très utile sur un serveur linux :
- étendre la taille d’un système de fichiers dynamiquement.
Plusieurs volumes sont créés sur un disque contenant chacun un système de fichiers. Un ensemble de blocs non alloués à ces volumes est gardé sur le disque dur. Ces blocs peuvent par la suite être réalloués aux volumes qui nécessitent un espace de stockage supplémentaire. Les fonctions LVM permettent d’ailleurs d’augmenter la taille des systèmes de fichiers (EXT3 / EXT4 / … ) sans perte de données. La réduction de taille d’un volume logique est cependant moins bien géré et peut nécessiter un reformatage. - Effectuer un « snapshot » du système de fichier
Il s’agit de faire une copie à l’instant T d’un ou plusieurs volumes. Ces copies peuvent être temporaires, pour par exemple effectuer un backup du système linux tout en gardant l’intégrité des données. La création d’un snapshot temporaire ne nécessite aucune copie physique des données sur le disque, la création prend moins d’une seconde.
La copie peut être également réutilisée à long terme comme un duplicata des données initiales. - étendre une système de fichiers sur plusieurs disques
Un volume logique peut s’étendre sur plusieurs disques et donc également le système de fichiers qui y est installé. Ces disques peuvent être de nature et de capacité différentes.
L’organisation du LVM est basé sur trois couches qui se superposent :
- Les « Physical Volumes » ( commandes LVM commençant par pv* ) qui correspondent aux partitions réelles sur les différents disques physiques présents.
C’est le point de liaison entre la couche Hardware et la gestion LVM - Les « Volume Groups » ( commandes LVM commençant par vg* ) qui permettent de rassembler plusieurs partitions provenant de un ou plusieurs disques dur différents en une seule entité.
- Les « Logical Volumes » ( commandes LVM commençant par lv* ) sont les volumes virtuels que nous créerons dans ces volume groups. De fait ces volumes logiques peuvent être réparties sur plusieurs partitions / plusieurs disques de façon naturelle.
C’est le point de liaison avec les systèmes de fichiers de l’OS : chacun de ces volumes logiques sera formaté selon ses besoins ( ext 3, ext 4, fat32, … )
Accès aux données LVM sans l’outil Linux Reader
Il y a quelques années aucun outils sous Windows ne permettait de lire des volumes logiques LVM. Il fallait employer d’autres solutions, celles-ci forcément sous Linux. La solution la plus simple est d’utiliser un CD/DVD bootable proposant un environnement linux compatible avec LVM.
La meilleure solution dans ce cas est SystemRescueCD qui propose tout l’environnement et les outils permettant de dépanner un ordinateur sous Linux. SystemRescueCD est compatible LVM, il existe d’ailleurs des tutoriaux à ce sujet sur leur site.
Ne cherchez cependant pas d’interface graphique, tout est à effectuer par ligne de commande. Il y a trois façons d’accéder aux outils de gestion lvm :
- En appelant l’executable lvm.
Un prompt apparaît alors permettant de lancer des commandes spécifiques lvm. Ctrl+C pour quitter le prompt lvm
Exemple de commande très utile : « help » 🙂 - en appelant une fonction particulière de l’exécutable lvm en argument
Exemple : « lvm help » - en utilisant un raccourci système de la commande lvm
la commande « pvdisplay » devrait par exemple être connue directement dans votre environnement linux, elle est équivalente à la commande « lvm pvdisplay »
Une liste des commandes utiles est disponible ici par exemple.
Les premières commandes pour démarrer seront sans doute « help » puis « pvdisplay », « vgdisplay » et « lvdisplay » pour avoir un aperçu de l’organisation LVM présente sur vos disques dur.
Vous pouvez trouver de nombreux tutoriaux sur internet indiquant la marche à suivre pour réaliser la tâche voulue. Ces aides sont plus nombreuses sur les sites relatifs aux distributions RedHat et Centos car ces distributions utilisent nativement LVM depuis longtemps.