LVM, ou Logical Volume Manager, est un puissant outil qui permet de redimensionner ses partitions "à chaud" et surtout postérieurement à l’installation de la machine. Cet outil créé une couche d’abstraction entre les disques durs physiques et les "volumes" que vous pouvez gérer à votre gré.
Ce court tutoriel nécéssite que vous sachiez ce que veulent dire VG (volume group) et LV (logical volume), au moins pour savoir ce que vous faites...
Je vais présenter ici une méthode pour ajouter un nouveau volume logique. J’en ai eu besoin sur mon serveur car j’avais mal calculé la taille que j’ai alloué pour mon ’/’ :
# df -h
Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur
/dev/sda3 4,0G 3,6G 237M 94% /
tmpfs 498M 0 498M 0% /lib/init/rw
tmpfs 498M 0 498M 0% /dev/shm
/dev/sda1 38M 7,5M 29M 21% /boot
/dev/mapper/vg-var--log
248M 181M 56M 77% /var/log
/dev/mapper/vg-var--www
5,0G 172M 4,6G 4% /var/www
/dev/mapper/vg-opt 9,7G 2,5G 6,7G 28% /opt
(...)
A cause de cette place trop limitée, mon upgrade de serveur ne marchait plus. La solution que j’ai mis en place a été de "sortir" le /home et de le mettre sous lvm :
# du -sh /*
985M home
1,1G usr
1,1G var
(...)
Cette solution est "sématiquement correcte" et permettra de gagner 1Go sur le ’/’.
# cfdisk
Name (...) FS Type (...) Size (MB)
-------------------------------------------------------------------------------
sda1 Linux ext3 41,13
sda2 Linux swap / Solaris 2146,80
sda3 Linux ext3 4293,60
sda4 Linux LVM 153557,76
Il y a 153Go MB sous LVM
# pvdisplay
--- Physical volume ---
PV Name /dev/sda4
VG Name vg
PV Size 143,01 GB / not usable 4,08 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 36610
Free PE 19016
Allocated PE 17594
PV UUID E0pb6D-aAEk-ciyl-CQnT-Qf8t-iIfq-e7qt3g
143Go sont occupés par le volume logique. La place disponible sur ce VG est de 4096*19016 Ko = 74Go.
On peut donc créer un espace de 10Go dédié au /home :
# lvcreate -L10000 -n home vg
Logical volume "home" created
Il faut ensuite le formater en ext3 :
# mkfs.ext3 /dev/vg/home
mke2fs 1.41.0 (10-Jul-2008)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
640848 i-noeuds, 2560000 blocs
128000 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=2621440000
79 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8112 i-noeuds par groupe
Superblocs de secours stockés sur les blocs :
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Écriture des tables d'i-noeuds : complété
Création du journal (32768 blocs) : complété
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété
Le système de fichiers sera automatiquement vérifié tous les 39 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.
Maintenant nous avons 2 /home, un sur la partition de ’/’ (sda3) qui est monté, un autre sur la partition LVM (sda4) qui n’est pas encore monté.
Il va falloir déplacer les données du /home de sda3 à sda4. N’étant pas un expert en la matière, j’ai utilisé des ’move’ en passant par un répertoire temporaire mais je penses qu’il doit être possible de copier un répertoire vers un FS qui n’est pas monté...
Bref, voici ce que j’ai fait ensuite :
on sauvergade le home dans un répertoire qui va faire la transition :
# mv /home /temporary/folder
on recréé le répertoire /home :
# mkdir /home
on monte le LV avec 10Go d’espace libre sur le /home :
# mount /dev/vg/home /home
et, enfin, on remet les données du home :
# mv /path/home/* /home
Notez que cette méthode vous fait "perdre" le /home pendant le temps de la manipulation, c’est pourquoi elle n’est pas optimale.
Pour un montage permanent, ajoutez dans le fichier /etc/fstab :
/dev/vg/home /home ext3 defaults 0 0