Redimensionner la partition racine. (LVM)

Bonjour à tous,

Je n’ai pas bien calculé quand j’ai installé ma Debian Jessie, du coup j’arrive à saturation pour ma partition racine ( “/” ) et aussi sur la partition var ( “/var” ).

Est-il possible de régler le problème sans tout réinstaller ? Faut-il passer par un linux en live ? Ou bien peut-on faire ça au vol comme dans ce tutoriel sur system-linux.eu ?

Petit détail : Les partitions sont chiffrées. (Donc je tape un mot de passe au boot.)

Quelques commandes pour y voir clair :

esprit@debian8:~$ uname -a Linux debian8 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU/Linux

esprit@debian8:~$ df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur /dev/dm-1 8,2G 8,1G 0 100% / udev 10M 0 10M 0% /dev tmpfs 784M 9,1M 775M 2% /run tmpfs 2,0G 1,1M 2,0G 1% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 2,0G 0 2,0G 0% /sys/fs/cgroup /dev/mapper/debian8--vg-tmp 360M 15M 323M 5% /tmp /dev/mapper/debian8--vg-var 2,7G 2,0G 546M 79% /var /dev/mapper/debian8--vg-home 440G 86G 332G 21% /home /dev/sda1 236M 57M 167M 26% /boot tmpfs 392M 12K 392M 1% /run/user/119 tmpfs 392M 12K 392M 1% /run/user/1000

[code]esprit@debian8:~$ cat /etc/fstab

/dev/mapper/debian8–vg-root / ext4 errors=remount-ro 0 1

/boot was on /dev/sda1 during installation

UUID=cac5dcc9-262a-4281-bf4a-f9706b2cc855 /boot ext2 defaults 0 2
/dev/mapper/debian8–vg-home /home ext4 defaults 0 2
/dev/mapper/debian8–vg-tmp /tmp ext4 defaults 0 2
/dev/mapper/debian8–vg-var /var ext4 defaults 0 2
/dev/mapper/debian8–vg-swap_1 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0[/code]

[code]esprit@debian8:~$ sudo lvdisplay -a
— Logical volume —
LV Path /dev/debian8-vg/root
LV Name root
VG Name debian8-vg
LV UUID MC5YiV-wUXI-Nh44-Udq6-YQmN-mAwR-N7Uecl
LV Write Access read/write
LV Creation host, time debian8, 2014-12-14 10:45:37 +0100
LV Status available

open 1

LV Size 8,38 GiB
Current LE 2145
Segments 1
Allocation inherit
Read ahead sectors auto

  • currently set to 256
    Block device 254:1

— Logical volume —
LV Path /dev/debian8-vg/var
LV Name var
VG Name debian8-vg
LV UUID YRCkdy-VOWz-t3H2-huJX-hCw9-pWm2-jbBG9x
LV Write Access read/write
LV Creation host, time debian8, 2014-12-14 10:45:37 +0100
LV Status available

open 1

LV Size 2,79 GiB
Current LE 715
Segments 1
Allocation inherit
Read ahead sectors auto

  • currently set to 256
    Block device 254:2

— Logical volume —
LV Path /dev/debian8-vg/swap_1
LV Name swap_1
VG Name debian8-vg
LV UUID ERtEPy-c1OG-40cD-kM54-2ps0-SSXB-8LxSqX
LV Write Access read/write
LV Creation host, time debian8, 2014-12-14 10:45:37 +0100
LV Status available

open 2

LV Size 7,40 GiB
Current LE 1894
Segments 1
Allocation inherit
Read ahead sectors auto

  • currently set to 256
    Block device 254:3

— Logical volume —
LV Path /dev/debian8-vg/tmp
LV Name tmp
VG Name debian8-vg
LV UUID wfeLSX-gxSz-RJDw-nsW0-b4aL-1Ck3-xZWdsR
LV Write Access read/write
LV Creation host, time debian8, 2014-12-14 10:45:37 +0100
LV Status available

open 1

LV Size 380,00 MiB
Current LE 95
Segments 1
Allocation inherit
Read ahead sectors auto

  • currently set to 256
    Block device 254:4

— Logical volume —
LV Path /dev/debian8-vg/home
LV Name home
VG Name debian8-vg
LV UUID JQOVHb-9Vqc-8Q2B-MvJV-k7kf-GERT-P3vPyz
LV Write Access read/write
LV Creation host, time debian8, 2014-12-14 10:45:37 +0100
LV Status available

open 1

LV Size 446,57 GiB
Current LE 114323
Segments 1
Allocation inherit
Read ahead sectors auto

  • currently set to 256
    Block device 254:5[/code]

esprit@debian8:~$ sudo vgdisplay debian8-vg --- Volume group --- VG Name debian8-vg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 6 VG Access read/write VG Status resizable MAX LV 0 Cur LV 5 Open LV 5 Max PV 0 Cur PV 1 Act PV 1 VG Size 465,52 GiB PE Size 4,00 MiB Total PE 119172 Alloc PE / Size 119172 / 465,52 GiB Free PE / Size 0 / 0 VG UUID Hq9PNE-bl1Y-3T0c-Uaki-6v9n-xfhK-ZZJuIZ

J’ai envie de faire :

esprit@debian8:~# lvextend -L +5G /dev/debian8-vg/root

et

esprit@debian8:~# lvextend -L +3G /dev/debian8-vg/var

Mais j’ai l’impression qu’il n’y a pas d’espace disponible (" Free PE / Size 0 / 0" ?) et que je devrais d’avoir réduire la partition “/dev/debian8-vg/home” ? Sans doute avec “lvreduce” ?

Bref, merci de me rassurer et merci d’avance pour vos lumières!
(Et Joyeux Noël! :114 )

Tu as eu la bonne idée d’utiliser LVM pour le système, ce qui offre beaucoup de souplesse. Par contre tu as négligé de laisser de l’espace libre dans le VG, ce qui va compliquer les choses car il est plus facile d’agrandir un volume que de le réduire. En effet on peut seulement agrandir un système de fichiers ext4 monté, mais il faut le démonter pour le réduire.

Les opérations de base sont les suivantes :

  1. Démonter /dev/mapper/debian8–vg-home de /home.
  2. IMPORTANT : réduire le système de fichiers de /dev/mapper/debian8–vg-home avec [mono]resize2fs[/mono]
  3. Ensuite seulement, réduire le volume /dev/mapper/debian8–vg-home avec [mono]lvreduce[/mono] ou [mono]lvresize[/mono].
  4. Agrandir le volume /dev/mapper/debian8–vg-root avec [mono]lvrextend[/mono] ou [mono]lvresize[/mono].
    5)Agrandir le système de fichiers sur /dev/mapper/debian8–vg-home avec [mono]resize2fs[/mono]

Notes et conseils :

  • Démonter /home n’est possible que si rien ne l’utilise, donc si aucune session d’utilisateur standard (non root) n’est ouverte. A faire en console texte directement avec le compte root. Si le compte root n’est pas utilisable directement (mais seulement via [mono]sudo[/mono]), il faudra lui définir un mot de passe ou passer par un système live.
  • Réduire un volume ou une partition sans avoir préalablement réduit son contenu provoquerait des pertes de données.
  • Lors de la réduction, s’assurer que la nouvelle taille du volume supérieure ou égale à la nouvelle taille du système de fichiers.
  • Pour l’avenir, il est souhaitable de ne pas utiliser tout l’espace libéré mais d’en laisser pour d’éventuels agrandissements ultérieurs d’autres volumes, ce qui est faisable à chaud sans rien démonter (sauf le swap).

Merci pour ces explications précises! :wink:

J’avais en effet lu que c’était une bonne idée d’utiliser LVM mais c’est la première fois que ça va me servir. Jusqu’ici j’ai juste pensé que ça ajoutait une petite dose de complexité sans en voir les avantages… Maintenant je sais.

Je tente ça dès que possible et je reviens donner les résultats.

[Edit: Ce que j’ai fait :
Redémarrage de l’ordinateur et passage en console au lieu de me logger normalement ( ctrl + alt + F2 ).
Connexion avec “root”.

(e2fsck est demandé par resize2fs )

# e2fsck -f /dev/mapper/debian8--vg-home

Réduction de “home” de ~14G :

[code]# resize2fs /dev/mapper/debian8–vg-home 430G

lvreduce -L 430G /dev/mapper/debian8–vg-home[/code]

J’ai ensuite essayé d’augmenter la partition root avec lxextend et lvresize mais ça a planté avec un “status code 5”. J’ai essayé de me connecter sous mon utilisateur principal au lieu de root et de le lancer avec un sudo après avoir démonté la partition “root” mais l’erreur est identique :

$ sudo umount /dev/mapper/debian8--vg-root $ sudo lvextend -L 13G /dev/mapper/debian8--vg-root Command failed with status code 5.

L’état des lieux :

$ df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur /dev/mapper/debian8--vg-root 8,2G 8,1G 0 100% / udev 10M 0 10M 0% /dev tmpfs 784M 9,1M 775M 2% /run tmpfs 2,0G 144K 2,0G 1% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 2,0G 0 2,0G 0% /sys/fs/cgroup /dev/sda1 236M 57M 167M 26% /boot /dev/mapper/debian8--vg-var 2,7G 2,1G 510M 81% /var /dev/mapper/debian8--vg-tmp 360M 2,2M 335M 1% /tmp /dev/mapper/debian8--vg-home 424G 86G 316G 22% /home tmpfs 392M 8,0K 392M 1% /run/user/1000

[code]$ sudo lvdisplay -a
— Logical volume —
LV Path /dev/debian8-vg/root
LV Name root
VG Name debian8-vg
LV UUID MC5YiV-wUXI-Nh44-Udq6-YQmN-mAwR-N7Uecl
LV Write Access read/write
LV Creation host, time debian8, 2014-12-14 10:45:37 +0100
LV Status available

open 1

LV Size 8,38 GiB
Current LE 2145
Segments 1
Allocation inherit
Read ahead sectors auto

  • currently set to 256
    Block device 254:1

— Logical volume —
LV Path /dev/debian8-vg/var
LV Name var
VG Name debian8-vg
LV UUID YRCkdy-VOWz-t3H2-huJX-hCw9-pWm2-jbBG9x
LV Write Access read/write
LV Creation host, time debian8, 2014-12-14 10:45:37 +0100
LV Status available

open 1

LV Size 2,79 GiB
Current LE 715
Segments 1
Allocation inherit
Read ahead sectors auto

  • currently set to 256
    Block device 254:2

— Logical volume —
LV Path /dev/debian8-vg/swap_1
LV Name swap_1
VG Name debian8-vg
LV UUID ERtEPy-c1OG-40cD-kM54-2ps0-SSXB-8LxSqX
LV Write Access read/write
LV Creation host, time debian8, 2014-12-14 10:45:37 +0100
LV Status available

open 2

LV Size 7,40 GiB
Current LE 1894
Segments 1
Allocation inherit
Read ahead sectors auto

  • currently set to 256
    Block device 254:3

— Logical volume —
LV Path /dev/debian8-vg/tmp
LV Name tmp
VG Name debian8-vg
LV UUID wfeLSX-gxSz-RJDw-nsW0-b4aL-1Ck3-xZWdsR
LV Write Access read/write
LV Creation host, time debian8, 2014-12-14 10:45:37 +0100
LV Status available

open 1

LV Size 380,00 MiB
Current LE 95
Segments 1
Allocation inherit
Read ahead sectors auto

  • currently set to 256
    Block device 254:4

— Logical volume —
LV Path /dev/debian8-vg/home
LV Name home
VG Name debian8-vg
LV UUID JQOVHb-9Vqc-8Q2B-MvJV-k7kf-GERT-P3vPyz
LV Write Access read/write
LV Creation host, time debian8, 2014-12-14 10:45:37 +0100
LV Status available

open 1

LV Size 430,00 GiB
Current LE 110080
Segments 1
Allocation inherit
Read ahead sectors auto

  • currently set to 256
    Block device 254:5[/code]

$ sudo vgdisplay debian8-vg --- Volume group --- VG Name debian8-vg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 0 Cur LV 5 Open LV 5 Max PV 0 Cur PV 1 Act PV 1 VG Size 465,52 GiB PE Size 4,00 MiB Total PE 119172 Alloc PE / Size 114929 / 448,94 GiB Free PE / Size 4243 / 16,57 GiB VG UUID Hq9PNE-bl1Y-3T0c-Uaki-6v9n-xfhK-ZZJuIZ

On voit bien cette fois qu’il y a de la place dans le “volume group” ( 16,57GiB ) donc j’ai bien rétréci la partition “home”. Quelqu’un pour m’expliquer pourquoi je n’ai pas su agrandir la partition “root” ? :think:

Petit up! :blush:

Quelqu’un peut m’expliquer pourquoi augmenter la taille de la partition /root n’a pas fonctionné ?

Evite d’éditer un ancien message pour ajouter de nouvelles informations car il n’apparaît pas comme nouveau et reste marqué comme déjà lu. On ne voit donc pas qu’il a été modifié si on ne va pas dans la discussion, ce qu’on n’a aucune raison de faire s’il n’y a pas de nouveau message non lu. D’où l’absence de réponse.

Oui, j’oublie toujours ce détail mais [mono]resize2fs[/mono] le rappelle.

Le LV home avait 330 Go d’espace libre. J’avais recommandé de réduire large pour laisser un maximum d’espace non alloué dans le VG, et pas juste de quoi agrandir le LV trop petit. Agrandir un LV monté peut se faire à chaud en deux commandes (lvextend et resize2fs) alors que pour réduire il faudra recommencer tout ce cirque.

Tu t’es connecté à ton compte utilisateur normal avec /home non monté ?
On ne peut pas démonter la partition racine, et de toute façon ce n’est pas nécessaire pour l’agrandir.
Je ne connais pas cette erreur, tu peux ajouter l’option [mono]-v[/mono] (1 à 3 fois) pour avoir plus de détails.
LVM écrit dans /etc, il se pourrait que le manque total d’espace libre sur la racine l’empêche de fonctionner.

Merci pour ta réponse!

Ça me semble plus clair pour ceux qui arrivent sur le poste mais effectivement, ça n’attire pas le regard pour ceux qui ont déjà lu…

Je pensais agrandir /root de 5Go et /var de 3Go, ce qui me laisse 6 Go de marge. Ça m’a semblé suffisant. Au pire, ça fera un bon rappel la prochaine fois. :wink:

J’étais bien connecté sur mon utilisateur normal mais j’ai un doute sur le fait que la partition /home n’était pas montée… Je vais réessayer cette après-midi en faisant attention à ça et si ça ne marche pas, je demanderai plus de détails à la commande. (Pourtant je connais l’option “verbose” mais plus pensé…)

Résolu! :016

J’ai lu quelques articles sur LVM, notamment celui sur developpez.com et j’ai modifié les arguments donnés à la commande “lvextend”. (Précisions: les partitions étaient montées et j’étais connecté sur l’utilisateur normal.)

Ce qui n’a pas marché l’autre jour :

$ sudo lvextend -L 13G /dev/mapper/debian8--vg-root Command failed with status code 5.

Ce qui a marché aujourd’hui :

$ sudo lvextend -L+5G /dev/mapper/debian8--vg-root Size of logical volume debian8-vg/root changed from 8,38 GiB (2145 extents) to 13,38 GiB (3425 extents). Logical volume root successfully resized

Il ne faut pas oublier d’ensuite refaire resize2fs :

$ sudo resize2fs /dev/mapper/debian8--vg-root resize2fs 1.42.12 (29-Aug-2014) Le système de fichiers de /dev/mapper/debian8--vg-root est monté sur / ; le changement de taille doit être effectué en ligne old_desc_blocks = 1, new_desc_blocks = 1 Le système de fichiers sur /dev/mapper/debian8--vg-root a maintenant une taille de 3670016 blocs (4k).

J’ai cherché à comprendre pourquoi je n’avais pas pu mettre une taille “absolue” et en relisant le man de lvextend, il est bien mis qu’on peut préciser la taille en absolu ou en relatif.

[quote]-L, --size [+]LogicalVolumeSize[bBsSkKmMgGtTpPeE]
Extend or set the logical volume size in units of megabytes. A size suffix of M for megabytes, G for gigabytes, T for
terabytes, P for petabytes or E for exabytes is optional. With the + sign the value is added to the actual size of the
logical volume and without it, the value is taken as an absolute one.[/quote]

En fait, le problème venait de l’espace entre -L et 13G ! J’ai donc réessayé et voici ce qui aurait du marcher l’autre jour :

$ sudo lvextend -L14G /dev/mapper/debian8--vg-root Size of logical volume debian8-vg/root changed from 13,38 GiB (3425 extents) to 14,00 GiB (3584 extents).Logical volume root successfully resized

Problème résolu! J’ai appris pas mal de trucs, je suis content. Merci PascalHambourg !

Je ne souviens pas de cette restriction concernant l’espace après -L…
En tout cas tu as pu constater qu’agrandir un LV est très simple et facile tant qu’il y a de l’espace libre dans le VG, d’où l’intérêt de ne pas tout allouer au départ. Néanmoins il ne faut pas non plus attendre qu’un système de fichiers soit plein à 90% pour l’agrandir, sinon sa fragmentation va augmenter et ses performances diminuer.

J’ai été un peu surpris aussi pour cette histoire d’espace… Je n’ai pas réessayé sans l’espace pour être certain que c’était bien ça. Mais je ne vois rien d’autres. :think:

C’est vrai que c’est assez simple d’agrandir un LV. Et même si c’est un peu plus compliqué de réduire la taille, ça reste faisable. (Probablement plus embêtant à faire sur un serveur en production qu’un ordinateur personnel, c’est sûr…)

Je ferai attention pour la taille allouée la prochaine fois.

Merci encore pour tes explications.

Ici c’était relativement simple mais cela peut être beaucoup plus compliqué.

Par exemple, certains types de systèmes de fichiers comme XFS ne peuvent pas être réduits, même à froid (démontés). Il faut donc sauvegarder les données, réduire le LV, recréer le système de fichiers et restaurer les données.

Quand le système de fichiers doit être démonté pour être réduit (cas de ext2/3/4), il n’est pas aussi simple de le démonter quand il s’agit par exemple de /var ou /usr au lieu de /home. Par chance c’est souvent /home qu’on veut réduire. Mais même pour démonter /home, cela peut être plus compliqué ; par exemple dans le cas où il n’y a pas de mot de passe root et on utilise [mono]sudo[/mono], on ne peut pas ouvrir de session root directement et il faut passer par une session de compte utilisateur standard qui va utiliser /home et empêcher de le démonter.

Dans un certains nombre de cas, il faudra démarrer un autre système qui n’utilise pas la partition à réduire pour pouvoir la réduire. Sur une machine distante, ce n’est pas toujours possible.

En anticipant les besoins d’agrandissements ultérieurs dès l’installation, on s’évite tous ces tracas.

Encore une fois merci pour toutes ces précisions et explications. Je saurai à quoi faire attention lors de ma prochaine installation. :wink: