Comment étendre une partition avec un LVM et le volume physique contenu et le volume logique?

33

Sur mon disque SSD de 240 Go, j’avais au début deux partitions, l’une contenant le volume logique avec Linux Mint et l’autre contenant une partition NTFS à partager avec Windows. Maintenant, j'ai supprimé la partition NTFS et je souhaite étendre mon groupe de volumes logiques pour utiliser l'espace disque libéré.

Comment étendre le groupe de volumes , mon volume logique contenant / home et le système de fichiers (ext4) sur / home? Est-ce possible de le faire en ligne?

PS: Oui, je sais que je dois sauvegarder mes données :)

/dev/sdb/  (240GB)
    linuxvg  (160GB) should use 100% of the disk space
        swap
        root
        home (ext4, 128GB) should be extended to use the remaining space

sortie de sudo vgdisplay:

  --- Volume group ---
  VG Name               linuxvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               160,00 GiB
  PE Size               4,00 MiB
  Total PE              40959
  Alloc PE / Size       40959 / 160,00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               ...

  --- Logical volume ---
  LV Path                /dev/linuxvg/swap
  LV Name                swap
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:32 +0200
  LV Status              available
  # open                 2
  LV Size                8,00 GiB
  Current LE             2048
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Path                /dev/linuxvg/root
  LV Name                root
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:43 +0200
  LV Status              available
  # open                 1
  LV Size                24,00 GiB
  Current LE             6144
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

  --- Logical volume ---
  LV Path                /dev/linuxvg/home
  LV Name                home
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:57 +0200
  LV Status              available
  # open                 1
  LV Size                128,00 GiB
  Current LE             32767
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2

  --- Physical volumes ---
  PV Name               /dev/sdb1     
  PV UUID               ...
  PV Status             allocatable
  Total PE / Free PE    40959 / 0

sortie de sudo fdisk -l:

Disk /dev/sdb: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 468862128 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1   468862127   234431063+  ee  GPT

Disk /dev/mapper/linuxvg-swap: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/mapper/linuxvg-root: 25.8 GB, 25769803776 bytes
255 heads, 63 sectors/track, 3133 cylinders, total 50331648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/mapper/linuxvg-home: 137.4 GB, 137434759168 bytes
255 heads, 63 sectors/track, 16708 cylinders, total 268427264 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
klingt.net
la source
2
Eh bien, le moyen le plus simple aurait été de créer simplement la partition NTFS et de l’utiliser vgextend, au lieu de la supprimer entièrement. Si vous agrandissez la partition PV existante, vous devrez probablement redémarrer l'ordinateur, car Linux refuse de relire la table de partition pendant que le disque est en cours d'utilisation. Travailler autour de cette ligne est maladroit. - S'il vous plaît montrer votre table de partition actuelle.
Frostschutz
Je peux redémarrer si nécessaire.
klingt.net

Réponses:

45

Vous pouvez le faire assez simplement. Un peu surpris qu'il n'y ait pas déjà de réponse à cela ici.

Vous pouvez effectuer tout ce processus en exécutant le système de fichiers que vous souhaitez redimensionner (oui, il est sécurisé et entièrement pris en charge). Il n’est pas nécessaire d’utiliser des CD de secours ou d’autres systèmes d’exploitation.

  1. Redimensionnez la partition (à nouveau, vous pouvez le faire avec le système en cours d'exécution). GParted est facile à utiliser et prend en charge le redimensionnement.
    Vous pouvez également utiliser un outil de niveau inférieur tel que fdisk. Mais vous devrez supprimer la partition et la recréer. Assurez-vous simplement que la nouvelle partition commence exactement au même endroit.
  2. Redémarrer. Comme la table de partition a été modifiée sur le système en cours d’exécution, elle ne prendra effet qu’après un redémarrage.
  3. Exécuter pvresize /dev/sdXYpour que LVM prenne le nouvel espace.
  4. Redimensionnez le volume logique avec lvextend. Si vous voulez utiliser la chose, lvextend -r -l +100%FREE /dev/VGNAME/LVNAME. Le -rredimensionnera également le système de fichiers.
    Bien que je recommande toujours de ne pas utiliser tout le groupe de volumes. Vous ne savez jamais ce dont vous aurez besoin à l'avenir. Vous pouvez toujours développer plus tard, vous ne pouvez pas réduire.
Patrick
la source
3
J'aimerais accepter votre réponse, mais je n'ai pas fonctionné comme vous l'avez suggéré, car GParted ne peut pas redimensionner la partition racine sur un système en cours d'exécution (du moins dans mon cas).
klingt.net
@ HalosGhost, j'ai annulé votre modification. partprobe -sne fait pas ce que vous pensez qu'il fait. Le noyau ne détectera pas le redimensionnement d'une partition en cours d'utilisation. partprobe -sne fonctionne que si la partition était en cours d'utilisation pendant le redimensionnement (donc lorsque fdisk a averti le noyau, elle a échoué), mais ce n'est plus le cas.
Patrick
@ Patrick, je n'ai pas ajouté l'idée pour cela; J'ai "amélioré" le montage en mettant la commande en arrière (la guerre pour le code échappe aux salaires!).
HalosGhost
Oh, désolé, lisez le nom du mauvais événement d'historique. @Qetesh ça vous concerne alors :-)
Patrick
1
Il est possible de ne pas redémarrer du tout en utilisant "partx -u" à l'étape 2, pour dire au noyau de mettre à jour la taille de la partition: fonctionne même sur les partitions actives et peut être vérifié en vérifiant /sys/.../sdXY/size before et après.
AB
11

Aucune des réponses ne rend justice à la puissance de LVM.

(Ceci est basé sur les commentaires de @frostchutz à la question ci-dessus.)

Voyons les faits:

  • OP a deux partitions, sdb1 et sdb2 est un volume physique pour LVM.
  • sdb1 est ntfs pour le moment, nous devons donner cet espace au homevolume logique dans le linuxvggroupe de volumes.

Les étapes LVM en utilisant la "manière pragmatique":

  • créer un volume physique sur sdb1: pvcreate /dev/sdb1
  • ajoutez sdb1 à linuxvg:vgextend linuxvg /dev/sdb1
  • étendre le volume logique homeavec tout l'espace libre:lvextend -l +100%FREE /dev/linuxvg/home
  • étendre ext4 fs: resize2f /dev/linuxvg/home

LVM permet un grand niveau d'indirection. Un volume logique se trouve dans un groupe de volumes, qui pourrait utiliser plusieurs disques.

home -> linuxvg -> (sdb1, sdb2, sdc1)

http://tldp.org/HOWTO/LVM-HOWTO/createvgs.html

MGP
la source
10

La question a été résolue après la lecture de ce billet de blog. Je vais écrire la solution sous forme courte:

  • démarrer à partir d'un live cd avec
  • utiliser gdisk(si vous utilisez GPT) sinon vous pourriez aller avec bon vieuxfdisk
  • notez vos paramètres de partition, dans mon cas gdisk -l /dev/sdb
  • supprimer votre partition avec
  • créer une nouvelle partition avec exactement le même alignement que la précédente (mon exemple commençant au bloc 2048)
  • écrivez votre nouvelle table de partition
  • exécuter partprobe -spour actualiser la table de partition sans redémarrage
  • redimensionnez votre volume physique avec pvresize /dev/sdb1ou quel que soit votre pv (utilisez-le pvspour déterminer si vous ne le savez pas)
  • maintenant redimensionner votre volume logique avec lvextend -l +100%FREE /dev/file/of/your/lv, dans mon cassudo lvextend -l +100%FREE /dev/linuxvg/home
  • redimensionner le système de fichiers sudo resize2fs /dev/linuxvg/home
  • d'abord vérifier la cohérence sudo e2fsck -f /dev/linuxvg/home
  • prendre plaisir :)
klingt.net
la source
En fait, vous pouvez supprimer environ la moitié de ces étapes et le faire en un seul redémarrage.
Patrick
GParted a refusé de redimensionner la partition, car celle-ci était verrouillée (symbole de cette clé).
klingt.net
4

Quelques bonnes réponses déjà.

Si vous utilisez xfs, utilisez la commande

xfs_growfs /mountpoint

plutôt que resize2fs. Vous pouvez le faire tant que le point de montage est actif, par exemple si vous avez développé la partition racine et qu'il n'est pas nécessaire de redémarrer après.

Paul M
la source