8. Convertir le système de fichiers racine en LVM 1

[Attention]Sauvegardez votre système

Il est fortement recommandé de faire une sauvegarde complète de votre système avant d'essayer de convertir votre racine en LVM 1.

[Avertissement]Complications des mises à jour

Avoir son système de fichiers racine en LVM 1 peut compliquer significativement les procédures de mise à jour (suivant les distributions) donc la décision ne doit pas être prise à la légère. Plus précisément, vous devez vous assurer que le module LVM 1 (s'il n'est pas compilé directement dans le noyau) ainsi que les utilitaires vgscan et vgchange sont disponibles avant, pendant et après la mise à jour.

[Avertissement]Complications des récupérations

Avoir son système racine sous LVM 1 peut compliquer significativement la récupération de systèmes de fichiers endommagés. Si vous perdez votre initrd, il sera très difficile de démarrer le système. Il faudra alors un disque de récupération contenant le noyau, le module et les utilitaires LVM 1 et tous les outils nécessaires pour récupérer un système de fichiers endommagé. Soyez sûr de faire des sauvegardes régulières et de garder une méthode de démarrage alternative qui permet la récupération de LVM.

Dans cet exemple, tout le système était installé sur une seule partition racine excepté /boot. Le système avait 2 Go de disque partitionnés de la façon suivante :

/dev/hda1  /boot
/dev/hda2  swap
/dev/hda3  /

La partition / remplissait tout le disque hormis la partition /boot et le swap. Un des pré-requis important pour cette procédure est que moins de la moitié de la partition racine soit remplie (pour pouvoir en faire une copie dans le volume logique). Si ce n'est pas le cas, un second disque devra être utilisé. La procédure est alors similaire, sauf qu'il n'est pas nécessaire de réduire la partition racine existante et /dev/hda4 doit être remplacé, par exemple, par /dev/hdb1 dans notre cas.

Le plus simple pour faire cela est d'utiliser GNU parted. Ce logiciel permet de réduire ou d'agrandir des partitions avec des systèmes de fichiers. Il est possible d'utiliser resize2fs et fdisk, mais GNU parted est moins sensible aux erreurs. S'il n'est pas inclus dans votre distribution, vous pouvez le télécharger à l'adresse : ftp://ftp.gnu.org/pub/gnu/parted.

Une fois que vous avez installé parted et QUE VOUS AVEZ SAUVEGARDÉ VOTRE SYSTÈME :

8.1. Démarrer en mode mono-utilisateur

Démarrez en mode mono-utilisateur (tapez linux S à l'invite de Lilo). Ceci est important car cela assure que le système de fichiers racine sera monté en lecture seule et qu'aucun programme n'accédera au disque.

8.2. Utiliser Parted

Utilisez parted pour réduire la partition racine. Cela doit permettre d'avoir assez de place sur le disque pour une copie complète de celui-ci dans un volume logique. Dans cet exemple, la partition de 1,8 Go est réduite à 1 Go. Cela montre les tailles et noms des partitions sur le disque.

# parted /dev/hda
(parted) p
.
.
.

Maintenant, retaillez la partition :

(parted) resize 3 145 999

Le premier nombre est le numéro de la partition (hda3). Le second est le numéro de début de partition de hda3 (en Mo depuis le début du disque), ne le changez pas. Le dernier numéro (en Mo depuis le début du disque) indique la fin de la partition et devrait la réduire d'à peu près à la moitié de sa taille actuelle.

Créez une nouvelle partition :

(parted) mkpart primary ext2 1000 1999

Cela crée une nouvelle partition pour contenir les données initiales de LVM 1. Elle devrait commencer juste à la suite de la partition réduite hda3 et terminer à la fin du disque.

Quittez parted :

(parted) q

8.3. Redémarrer

Redémarrez le système.

8.4. Vérifier les options de configuration du noyau

Assurez-vous que le noyau qui tourne actuellement fonctionne avec LVM 1 et est configuré avec les paramètres CONFIG_BLK_DEV_RAM et CONFIG_BLK_DEV_INITRD.

8.5. Ajuster le type de partition

Changez le type de la nouvelle partition de Linux à LVM (8e). Parted ne connaît pas les partitions LVM 1, donc il faut le faire avec fdisk.

# fdisk /dev/hda
Command (m for help): t
Partition number (1-4): 4
Hex code (type L to list codes): 8e
Changed system type of partition 4 to 8e (Unknown)
Command (m for help): w

8.6. Configurer LVM 1 pour la nouvelle configuration

  • Initialisez LVM 1 (vgscan) :

    # vgscan
    
  • Insérez la nouvelle partition dans un PV :

    # pvcreate /dev/hda4
    
  • Créez un nouveau groupe de volumes :

    # vgcreate vg /dev/hda4
    
  • Créez un volume logique pour contenir la nouvelle racine :

    # lvcreate -L250M -n root vg
    

8.7. Créer le système de fichiers

Créez un système de fichiers dans le volume logique et copiez-y les fichiers racines.

# mke2fs /dev/vg/root
# mount /dev/vg/root /mnt/
# find / -xdev | cpio -pvmd /mnt

8.8. Mise à jour de /etc/fstab

Ouvrez /mnt/etc/fstab de la nouvelle racine pour monter / sur /dev/vg/root. Par exemple :

/dev/hda3       /    ext2       defaults 1 1

devient :

/dev/vg/root    /    ext2       defaults 1 1

8.9. Créez une image disque RAM d'initialisation pour LVM 1

# lvmcreate_initrd

Retenez le nom du fichier créé par lvmcreate_initrd. Il doit être dans /boot.

8.10. Mise à jour de /etc/lilo.conf

Ajoutez une entrée dans /etc/lilo.conf pour LVM 1. Cela devrait ressembler à ceci :

image   = /boot/KERNEL_IMAGE_NAME
label   = lvm
root    = /dev/vg/root
initrd  = /boot/INITRD_IMAGE_NAME
ramdisk = 8192

où KERNEL_IMAGE_NAME est le nom de votre noyau avec LVM 1 et INITRD_IMAGE_NAME est le nom de l'image initrd créée par lvmcreate_initrd. Il se peut que la valeur pour ramdisk doive être augmentée si vous avez une grosse configuration LVM 1, mais 8192 devrait suffire pour la plupart des utilisateurs. La valeur par défaut de ramdisk est 4096. Dans le doute, vérifiez dans la sortie de la commande lvmcreate_initrd la ligne qui dit :

lvmcreate_initrd -- making loopback file (6189 kB)

et créez un ramdisk de la taille entre parenthèses.

Vous devez recopier ce nouveau lilo.conf dans le nouveau système de fichiers racine.

# cp /etc/lilo.conf /mnt/etc/

8.11. Lancez lilo pour écrire le nouveau secteur de boot

# lilo

8.12. Redémarrer avec LVM

Redémarrez et tapez « lvm » à l'invite de Lilo. Le système devrait démarrer sous Linux en utilisant le nouveau volume logique.

Si cela a fonctionné, vous devriez mettre lvm comme démarrage par défaut en ajoutant la ligne suivante dans la première section de /etc/lilo.conf :

default=lvm

Si cela n'a pas fonctionné, redémarrez normalement et penchez-vous sur le problème. Cela peut provenir d'une erreur de syntaxe dans lilo.conf ou de LVM 1 qui n'est pas disponible dans l'image disque RAM ou le noyau. Examinez soigneusement le message affiché au démarrage.

8.13. Ajoutez le reste du disque dans LVM

Une fois que vous êtes satisfait de la configuration, vous pouvez ajoutez le reste du disque dans LVM 1, y compris l'ancienne partition racine.

D'abord, il faut mettre le type de partition à 8e (LVM) :

# fdisk /dev/hda
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Unknown)
Command (m for help): w

Convertissez-la en PV et ajoutez-la au groupe de volumes :

# pvcreate /dev/hda3
# vgextend vg /dev/hda3

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:27