
Il m'est arrivé une mésaventure hier soir.
Sur mon ordinateur de bureau, j'ai une Gentoo et un Windows 7. Ce dernier, installé récemment, a comme tous les Windows, détruit mon boot. Ayant un peu la flemme ces derniers jours pour réparer celà, il s'est passé un peu près un mois avant que je ne me décide à réparer mon Grub.
Hier soir donc, je me suis décider à réparer tout ça. Je me suis emparé de mon dernier LiveCD de Gentoo, booté dessus, monté mes partitions, chrooté dedans puis lancé un petit grub-setup qui va bien. Impeccable, tout à fonctionné comme sur des roulettes. Je reboot donc sur ma Gentoo quelque peu délaissée et entreprend de la mettre à jour via un petit
desktop ~ # emerge --sync && emerge -uDN world
Ouchhh, plus de 300 paquets à mettre à jour ...
Tout se déroule à peu près correctement, et au bout d'une 50aine de paquets un message d'erreur apparait : plus d'espace disque.
desktop ~ # df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 9.2G 9.2G 0.0G 100% /
/dev/root 9.2G 9.2G 0.0G 100% /
rc-svcdir 1.0M 60K 964K 6% /lib64/rc/init.d
udev 10M 200K 9.9M 2% /dev
shm 2.0G 0 2.0G 0% /dev/shm
/dev/mapper/vg-home 9.9G 5.2G 4.2G 56% /home
/dev/mapper/vg-var 99G 21G 73G 23% /var
/dev/mapper/vg-tmp 9.9G 265M 9.1G 3% /tmp
/dev/mapper/vg-games 99G 26G 68G 28% /usr/games
desktop usr # rm -rf local
Bon, alors comment réparer tout ca ?
D'abord, je boot avec un LiveCD pour avoir un système propre (notez que mon système est toujours bootable et utilisable, même KDE fonctionne apparemment parfaitement, mais certaines commandes et logiciels peuvent avoir un comportement totalement imprévu voir crasher).
Ensuite, je peux monter ma partition racine, et reprendre le manuel d'installation de Gentoo.
mkdir /mnt/sda2 && mount /dev/sda2 /mnt/sda2
Voila, maintenant j'ai plus ou moins réparé ma bêtise. Ce n'est pas encore parfait car je repart avec un /usr/local de base et non celui issus de l'installation de nombreux logiciels. Mais c'est suffisant pour le moment. Attaquons nous à ce problème de taille de partition.
desktop ~ # fdisk -l /dev/sda
Disk /dev/sda: 500.1 GB, 500106780160 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x71527152
Device Boot Start End Blocks Id System
/dev/sda1 1 13 104391 83 Linux
/dev/sda2 14 1230 9775552+ 83 Linux
/dev/sda3 1231 59828 470688435 8e Linux LVM
/dev/sda4 59829 60801 7815622+ 82 Linux swap / Solaris
Avant de continuer, pour ceux qui ne connaissent pas, parlons de LVM :
LVM est un gestionnaire de volume logiques (Logical Volume Manager).
En fait, pour simplifier, on créer des partition de type 8e (Linux LVM), on indique ensuite à LVM d'utiliser ces partition en tant que volumes physique
desktop ~ # pvcreate /dev/sda3
desktop ~ # vgcreate vg /dev/sda3
desktop ~ # lvcreate -L10G -nusr vg
desktop ~ # mkfs.etx4 /dev/vg/usr
desktop ~ # mount /dev/vg/usr /usr
Revenons alors à mon cas. Je ne peux pas augmenter la taille de sda2. Cependant, j'ai d'autres disques dur et sda3 est une partition LVM. Donc, je créer un nouveaux volume physique sur un autre de mes disques dur, ca tombe bien, j'ai 500Go de libre sur mon disque dur de 1To acheté quelques jours avant l'installation de windows 7. J'ajoute mon volume physique au groupe "vg", puis j'indique à lvm qu'il faut libérer le volume physique sda3.
# ici je créer la partition sdb3 de 500Go et de type 8e
desktop ~ # fdisk /dev/sdb
# Ensuite je créer un volume physique avec cette partition
desktop ~ # pvcreate /dev/sdb3
# Puis je l'ajoute au groupe de volume "vg"
desktop ~ # vgextend vg /dev/sdb3
# Maintenant qu'il y a suffisemment de place dans vg, je retire le volume physique sda3, LVM va alors déplacer tout ce qui doit l'être pour ne perdre aucune données. Cette action peut prendre beaucoup de temps.
desktop ~ # vgreduce vg /dev/sda3
# Enfin, j'indique à LVM de ne plus utiliser sda3
desktop ~ # pvremove /dev/sda3
Et voilà, grâce à parted, je n'ai plus qu'a supprimer /dev/sda3, agrandir /dev/sda2 et recréer sda3 sur ce qui reste. Puis on refait les manipulations pour que sda3 soit de nouveau dans le VG.
Maintenant que le problème d'espace est résolut, il ne reste plus qu'a réinstaller tous les paquets du système pour finir de le réparer. Je parle ici d'une réinstallation via le gestionnaire de paquets, c'est à dire que vous pouvez tout à fait utiliser votre ordinateur pendant ce temps, du moins, tout ce qui ne crash pas.
desktop ~ # emerge -e world
Et voilà, c'est long, certes, mais cette aventure montre qu'il est possible de réparer un Linux tout brisé là où, sur Windows, on réinstalle tout. En plus ca permet de se rendre compte de l'utilité et de la puissance de LVM.
Commentaires
Poster un nouveau commentaire