Installer la Mandriva 2010.0 - Suite : gérer les LV
La Mandriva est installée, il nous faut maintenant la configurer pour qu'elle puisse gérer les Volumes Logiques.
Cet article fait suite à "Installer la Mandriva 2010.0" . Cela a son importance car ce n'est pas la voie la plus simple pour installer une Mandriva (ou n'importe quelle autre distribution Linux d'ailleurs) sur des Volumes Logiques. Mais l'idée ici était surtout de s'amuser un peu et de montrer que l'on pouvait rattraper le coup en post-installation.
Les seules commandes que je développerai ici, sont celles qui vont nous permettre de transférer nos répertoires sous des Logicals Volumes (LV). Seuls /boot et le swap ne sont pas concernés (le /boot parce que ce n'est pas possible : on ne peut démarrer sur une partition que le boot doit monter ! et le swap parce que ce n'est pas trop nécessaire : sa taille n'a pas à bouger, et si vraiment c'était nécessaire l'outil de redimensionnement de cette partition ne pose pas de problème).
Par ailleurs, vous trouverez des explications plus complètes sur la gestion LVM en lisant cet article.
1 - Activer le module dm-mod au boot
Avant d'oublier, et d'aboutir à un plantage, il nous faut activer au boot le module permettant le "device-mapper", c.a.d l'association d'un volume logique à un point de montage. En effet, par défaut ce module est bien prévu dans le kernel, mais n'est pas démarré au boot, et dans ce cas, au mieux, vous ne retrouverez pas les montages de vos LV, au pire vous planterez votre système. Donc autant le faire de suite en lançant la commande suivante :
# echo "dm-mod" >> /etc/modprobe.preload
Cette commande en administrateur (#) ajoute à la fin (>>) du fichier (/etc/modprob.preview) ce que renvoie la commande echo (dm-mod). Cela peut se faire aussi avec un éditeur de texte. Lors du prochain redémarrage de la machine, ce fichier de configuration indiquera au noyau qu'il doit lancer le module. Vous pourrez vérifier sa présence par :
# lsmod | grep dm
Notez que la commande vous retourne un dm_mod (et non un dm-mod)
Si vous voulez l'installer de suite (mais il ne survivra pas à l'extinction de la machine), il vous faut lancer :
# modprobe dm-mod
2 - Installer le paquetage lvm2
Pour gérer des volumes logiques, il nous faut le logiciel qui va bien, il s'appelle lvm2. Pour l'installer, sans passer par l'interface graphique, il suffit de lancer un :
# urpmi lvm2
3 - Création d'un Groupe de Volume (VG)
La première chose à faire est d'affecter tout l'espace disque disponible à un groupe de volumes que nous appellerons vg01. Pour cela, il nous faut d'abord repérer la partition libre et lui mettre un fs correspondant à LV (soit code hexa 8E), cela se fait avec la commande fdisk sur le disque supportant le système que vous avez repérez précédemment lors de l'installation, chez moi il s'agit de sda (si vous avez un disque PATA/IDE, vous aurez hdx, avec x = a ou b, c, d, ... selon le nombre de disques IDE en place):
# fdisk /dev/sda
La table de partitions est alors celle-ci (commande 'p')
On voit la capacité du disque : 320 Go (comme je n'ai que celui-là d'installé, c'est forcément le bon !), on reconnaît la partition de boot (/dev/sda1), notre partition de swap (/dev/sda5) et notre partition globale / (/dev/sda6).
Mais pourquoi cette numérotation 5 et 6, et quid de la partition /dev/sda2) ? En fait c'est assez simple : on ne peut monter que 4 partitions dites "primaires" (un vieil héritage !), soit sda1, sda2, sda3, sda4, mais on peut monter des partitions dites étendues sous chaque partition primaire. Donc ici nous avons 2 partitions primaires sda1 et sda2, et 2 partitions étendues sda5 et sda6 sous la partition primaire sda2.
Toujours sous fdisk, nous allons maintenant créer une nouvelle partition (commande 'n') primaire qui sera la sda3. Les valeurs par défaut de début et de fin sont celles qu'il faut retenir pour couvrir tout le reste d'espace mémoire disponible.
Ensuite, toujours sous fdisk, il faut lui donner le type LVM : commande 't', code 8E.
Nous avons alors la table de partition suivante, qu'il nous reste plus qu'à écrire avec la commande 'w' :
Voilà notre partition est prête, il nous faut maintenant créer notre Volume Physique (PV) qui va rejoindre un Groupe de Volume (VG). Un PV peut-être constitué d'un disque réel ou d'une ou plusieurs partitions. Ici nous nous contenterons pour notre PV de cette seule partition /dev/sda3 :
# pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created
Vous pourrez voir les infos de ce PV grâce à la commande :
# pvdisplay /dev/sda3 "/dev/sda3" is a new physical volume of "284,34 GB" --- NEW Physical volume --- PV Name /dev/sda3 VG Name PV Size 284,34 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID yIFnPL-MwiS-i9jT-jM7k-gFnr-D2vt-nXIos6
N'appartenant pas encore à un VG les informations sont réduites. Mais notez les lignes avec PE qui signifie Physical Extend (Extension Physique). Chaque VG, et donc chaque PV le constituant est découpé en tranches appelées PE. C'est l'unité de base de travail du LVM.
Créons maintenant notre Groupe de Volumes (VG) dont le groupe sera ici constitué d'un seul volume /dev/sda3.
# vgcreate vg01 /dev/sda3 Volume group "vg01" successfully created
Pour afficher les propriétés d'un VG, simple, lancer :
# vgdisplay vg01
L'option -v vous donnera plus de détails et comme pour pvdisplay la commande vous affiche tout ce qu'elle trouve si vous ne précisez rien.
4 - Déplacement de dossiers sur des Volumes Logiques
Nous avons créé notre Groupe de Volume (VG), nous allons maintenant pouvoir y créer des Volumes Logiques (LV) et y transférer nos dossiers.
4.1 - Déplacer son dossier /home et d'autres
La méthode de transfert est la même quelque soit le dossier (enfin presque !), et elle est plus détaillée dans cet article Comment déplacer un dossier, exemple /home ? . Ici je ne ferai que rappeler l'ensemble des commandes à passer, pour un dossier particulier /home.
# lvcreate -n lv_home -L 100g vg01 ... # mkfs -t ext4 /dev/vg01/lv_home ... # mkdir /mnt/home # mount /dev/vg01/lv_home /mnt/home/
Comme vous le voyez nous avons créé notre LV, et l'avons monté sur /mnt/home. Maintenant nous allons pouvoir copier les fichiers de /home/ sur /mnt/home
# cp -a /home/ /mnt/
Assurez-vous que vos fichiers ont bien été copiés sous /mnt/home (avec ls par ex). En principe c'est le cas, puisque l'option -a pour archive, inclut la récursivité et le maintien des droits et propriétaires. Si tout est bon, on peut procéder à la suite :
# rm -Rf /home/ # ou pour les plus prudents mv /home /home_old # mkdir /home/ # umount /mnt/home # mount /dev/vg01/lv_home /home/
Et voilà nous avons déplacé notre dossier home sur un espace mémoire sous gestion LVM.
Vous pouvez faire de même pour le dossier /usr/src. En effet ce dossier, vide à l'installation, peut grossir très vite, notamment lorsque vous voudrez modifier votre noyau. En effet il contiendra les sources mais également les fichiers temporaires de compilation et bien sûr le résultat de la compilation. Avec un dizaine de Go vous devriez être tranquille (et si ce n'est pas assez vous agrandirez votre LV !)
Le dossier /var est aussi intéressant à mettre sur un LV, car comme son nom le laisse supposer sa taille peut-être assez variable selon les applications que vous faites tourner sur votre système.
On récapitule :
- /home , /usr/src, /var sont sur des LV
- /boot et le swap reste sur leur partition disque
- quid du reste '/' ?
Pour la racine système et ce qu'elle comporte encore c'est plus compliqué et plus risqué. Car vous vous doutez que toucher aux fichiers système alors que vous êtes en train de travailler dessus ne va pas être possible. C'est pour cela que je conseille d'arrêter là.
Cependant les plus téméraires pourront s'inspirer de ce lien ou de cet autre. L'idée générale est de faire les mêmes manip mais à partir d'un autre système de type liveCD.
Bon c'est pas tout, mais on a pas fini.
4.2 - Inscrire le tout dans /etc/fstab
Il nous reste une étape importante avant de redémarrer notre micro : il nous faut inscrire nos nouveaux points de montage dans /etc/fstab, sinon plantage assuré !
Pour chaque nouveau point de montage, il faudra ajouter une ligne du genre :
/dev/vg01/lv_home /home ext4 relatime 1 2
Si vous creusez le sujet, vous découvrirez qu'aujourd'hui on ne donne plus le chemin du device (dans l'exemple ci-dessus : /dev/vg01/lv_home) mais son UUID (Universaly Unique IDentifier). Sauf que j'ai essayé pour des LV (l'UUID est donné par lvdisplay) et cela ne marche pas, donc ... retour au path classique.
Voilà nous avons terminé. Mais il me faut reconnaître que ce n'est pas la façon la plus simple d'installer une Mandriva sur des LV. Le plus simple est en effet de le prévoir dès l'installation lors du choix des partitions. Nous verrons cela avec l'article "Créer une clé USB de secours"
5 - Les problèmes, les erreurs
5.1 - "File descriptor" ... "leaked on pvcreate"
Cela inquiète, mais en fait ce n'est pas un réel problème, car vous découvrirez vite que tout fonctionne normalement. L'apparition de ce message est lié au fait que selon la façon dont on appelle LVM, il laisse ouvert les fichiers descripteur (je l'ai eu sur une machine mais pas sur une autre ??).
5.2 - Les LVM ne se montent pas automatiquement au démarrage
Là il me faut un article entier pour expliquer comment y remédier, cf. Comment activer et monter automatiquement des Volumes Logiques (LV) ?
5.3 - "Cannot enter home directory. Using /" puis "kstartupconfig4 does not exist or fails"
En clair votre session graphique ne démarre pas. Dans un premier temps vous avez une fenêtre qui indique "Cannot enter home directory. Using /" puis après avoir cliqué sur OK (seule option) vous obtenez une nouvelle fenêtre avec "kstartupconfig4 does not exist or fails. The error code is 3. Check".
Si ce n'est pas le problème précédent (qui vous renvoie en mode console), c'est que vous avez certainement copié votre home en étant vous-même connecté en session graphique : oui c'est vrai, dans ce qui est dit au-dessus, je ne le précise pas (contrairement à l'article Comment déplacer un dossier, exemple /home ? ).
Ce qui est assez surprenant, c'est qu'une 2ième tentative fonctionne. Sur le net, vous trouverez de nombreux threads sur cette erreur, mais je n'en ai pas trouvé un qui donne l'explication du pourquoi. Par contre vous trouverez ce remède qui a marché pour moi :
$ chown -R <myusername>:<myusername> /home/<myusername>/.kde4
Vous le faites pour le user sous lequel vous avez copié le /home, et curieusement cela fonctionne, et ce pour tous les utilisateurs !? (alors que toute première connexion échouait !)