Que faire si tous l'espace disque de votre système Linux est attribué et que vous ayez besoin de place pour créer un nouveau point de montage ou creer un nouveau périphérique ? Si
vous avez pris soin d’installer votre système Linux en utilisant les volumes logiques (LVM ) vous pouvez garder espoir, sinon vous pouvez arrêter la lecture ici !.
Dans mon cas il me fallait récupérer de la place pour créer des devices qui seront ensuite utilisées pour y stoker des machines virtuelles. (C'est plus efficace que de stoker la machine virtuelle dans un gros fichier)
1) ANALYSE
1) ANALYSE
Vérifiez la
configuration avec la commande “vgdisplay”
On obtient des infos sur chaque groupe (VG) ce qui correspond en gros aux ancienne partitions .Le résultat ressemble à ceci :
On obtient des infos sur chaque groupe (VG) ce qui correspond en gros aux ancienne partitions .Le résultat ressemble à ceci :
--- Volume group ---
VG Name vg_srv0
Format lvm2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size 929.12 GiB
PE Size 32.00 MiB
Total PE 29732
Alloc PE / Size 29732 / 929.12 GiB
Free PE / Size 0 / 0 <== PAS DE PLACE LIBRE ! C'EST LE PROBLÈME
Pour plus détails
sur ce qui il y a dans le(s) groupe(s) utiliser la commande "lvdisplay" qui
donnera l’info sur chaque volume (LV) se situant dans chaque groupe.
--- Logical volume ---
LV Name /dev/vg_srv0/lv_swap
VG Name vg_srv0
LV Write Access read/write
LV Status available
LV Size 5.44 GiB
--- Logical volume ---
LV Name /dev/vg_srv0/lv_home
VG Name vg_srv0
LV Write Access read/write
LV Status available
LV Size 873.69 GiB
--- Logical volume ---
LV Name /dev/vg_srv0/lv_root
VG Name vg_srv0
LV Write Access read/write
LV Status available
LV Size 50.00 GiB
Ici les “LV Name” donnent une idée de ce qu’il y a dans
ces volumes. Ce n'est pas toujours le cas ... Mais on peut
le vérifier avec la commande mount, (et un peut de filtrage)
mount | grep ^/dev/ | awk '{print $1 " " $3}'
Le résultat ressemble
alors à ceci:
/dev/mapper/vg_srv0-lv_root /
/dev/sda2 /boot
/dev/mapper/vg_srv0-lv_home /home
On constate que la
racine du système est dans le volume lv_root et que /home est
dans le volume lv_home.
lvmdisplay nous a montré que lv_home fait 873.69 GiB
C’est ce volume
qu’on va diminuer pour faire de la place.
IMPORTANT: On ne peut pas diminuer la taille d’un volume qui est monté. On ne peut donc pas diminuer la taille de la racine, pour cela il faudrait booter sur un cd de rescue.
2) DIMINUTION
Donc on va
commencer par retirer le volume lv_home de /home
Ce qui sous entend
qu’aucun process ou utilisateur n’utilise /home
(le vérifier avec
“lsof | grep /home” qui ne doit rien afficher.)
unmount /home
Vérifier que le
volume est sain avec la commande e2fsck
e2fsck -f
/dev/mapper/vg_srv0-lv_home
On va ramener la taille lv_home de 873.69 Go à 200Go libérant ainsi 673Go
On commence par diminuer le file-system (regrouper les fichiers)
(cela peut prendre
plus ou moins de temps suivant le nombre de fichiers à déplacer)
resize2fs -p /dev/mapper/vg_srv0-lv_home 200G
Enfin on réduit la taille du volume
lvreduce -L 200G /dev/mapper/vg_srv0-lv_home
Avec la commande ‘vgdisplay’ on vérifie qu’il y a bien de la place libre et avec ‘lvdisplay’ que la taille du volume réduit est bien la valeur attendue.
Dernier test
e2fsck -f
/dev/mapper/vg_srv0-lv_home
On réactive /home
mount /home
3) AJOUT
Maintenant on a
de la place, on va pouvoir ajouter de nouveau volumes. Commençons par un volume
de 20G, nommé lv_vm1 et qui sera dans le groupe vg_srv0, donc accessible
via le device /dev/vg_srv0/lv_vm1 ou /dev/mapper/vg_srv0-lv_vm1
lvcreate -L 20G -n lv_vm1 vg_srv0
Puis un second volume lv_vm2
lvcreate -L 20G -n
lv_vm2 vg_srv0
Ces 2 volumes lv_vm1 et lv_vm2 seront utilisé pour y installer 2 machines virtuelles d’où leur nom vm.... Dans ce cas le travail s’arrête là.
Pour pouvoir les monter et y stoker des fichiers il faut les formater avec:
mkfs.ext4 /dev/mapper/vg_srv0-lv_vm1