Come posso estendere una partizione con un LVM e il volume fisico contenuto e il volume logico?


33

Sul mio SSD da 240 GB avevo all'inizio due partizioni, una contenente il volume logico con Linux Mint e l'altra conteneva una partizione NTFS da condividere con Windows. Ora ho rimosso la partizione NTFS e voglio estendere il mio gruppo di volumi logici per utilizzare lo spazio su disco rilasciato.

Come estendo il gruppo di volumi , il mio volume logico contenente / home e il filesystem (ext4) su / home? È possibile farlo online?

PS: Sì, lo so che devo fare il backup dei miei dati :)

/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

uscita di 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

uscita di 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

2
Bene, il modo semplice sarebbe stato semplicemente creare la partizione NTFS e utilizzarla vgextend, invece di rimuovere completamente la partizione. Se cresci la partizione PV esistente invece probabilmente dovrai riavviare, poiché Linux rifiuta di rileggere la tabella delle partizioni mentre il disco è in uso. Aggirare questo online è imbarazzante. - Si prega di mostrare la tabella delle partizioni corrente.
frostschutz,

Posso riavviare se necessario.
klingt.net,

Risposte:


45

Puoi farlo abbastanza semplicemente. Un po 'sorpreso che non ci fosse già una risposta per questo qui.

È possibile eseguire l'intero processo durante l'esecuzione sul filesystem che si desidera ridimensionare (sì, è sicuro e completamente supportato). Non sono necessari CD di ripristino o sistemi operativi alternativi.

  1. Ridimensiona la partizione (di nuovo, puoi farlo con il sistema in esecuzione). GParted è facile da usare e supporta il ridimensionamento.
    Puoi anche usare uno strumento di livello inferiore come fdisk. Ma dovrai eliminare la partizione e ricrearla. Basta fare in modo che la nuova partizione inizi esattamente nella stessa posizione.
  2. Reboot. Poiché la tabella delle partizioni è stata modificata sul sistema in esecuzione, non avrà effetto fino al riavvio.
  3. Corri pvresize /dev/sdXYper fare in modo che LVM raccolga il nuovo spazio.
  4. Ridimensionare il volume logico con lvextend. Se si desidera utilizzare il tutto, lvextend -r -l +100%FREE /dev/VGNAME/LVNAME. Il -rridimensionerà il filesystem pure.
    Anche se consiglio sempre di non utilizzare l'intero gruppo di volumi. Non sai mai di cosa avrai bisogno in futuro. Puoi sempre espandere in seguito, non puoi restringere.

3
Vorrei accettare la tua risposta, ma non ho funzionato come da te suggerito, perché GParted non può ridimensionare la partizione di root su un sistema in esecuzione (almeno nel mio caso).
klingt.net,

@HalosGhost Ho ripristinato la tua modifica. partprobe -snon fa quello che pensi che faccia. Il kernel non prenderà il ridimensionamento di una partizione in uso. partprobe -sFunziona solo se la partizione era in uso durante il ridimensionamento (quindi quando fdisk ha notificato il kernel non è riuscito), ma non lo è più.
Patrick,

@Patrick, non ho aggiunto l'idea per questo; Ho "migliorato" la modifica inserendo il comando nei backtick (la guerra per il codice sfugge ai salari!).
HalosGhost il

Oh, scusa, leggi il nome dell'evento storico sbagliato. @Qetesh che si applica a te allora :-)
Patrick

1
È possibile non riavviare affatto usando "partx -u" per il passaggio 2, per dire al kernel di aggiornare le dimensioni della partizione: funziona anche su partizioni attive e può essere verificato controllando /sys/.../sdXY/size prima e dopo.
AB

11

Nessuna delle risposte rende giustizia al potere di LVM.

(Questo si basa sul commento di @frostchutz alla domanda sopra.)

Prendiamo i fatti:

  • OP ha due partizioni, sdb1 e sdb2 è un volume fisico per LVM.
  • sdb1 è ntfs in questo momento, dobbiamo dare quello spazio al homevolume logico all'interno del linuxvggruppo di volumi.

Passaggi LVM usando il "modo pragmatico":

  • crea volume fisico su sdb1: pvcreate /dev/sdb1
  • aggiungi sdb1 a linuxvg:vgextend linuxvg /dev/sdb1
  • estendi il volume logico homecon tutto lo spazio libero:lvextend -l +100%FREE /dev/linuxvg/home
  • estendere ext4 fs: resize2f /dev/linuxvg/home

LVM consente un elevato livello di riferimento indiretto. Un volume logico si trova all'interno di un gruppo di volumi, che potrebbe utilizzare diversi dischi.

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

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


10

La domanda è stata risolta, dopo aver letto questo post sul blog. Scriverò la soluzione in forma abbreviata:

  • avvio da un cd live con
  • usa gdisk(se usi GPT) altrimenti potresti andare con un buon vecchiofdisk
  • nota le tue impostazioni di partizione, nel mio caso gdisk -l /dev/sdb
  • cancella la tua partizione con
  • creare una nuova partizione con lo stesso allineamento esatto della precedente (nel mio esempio a partire dal blocco 2048)
  • scrivi la tua nuova tabella delle partizioni
  • eseguito partprobe -sper aggiornare la tabella delle partizioni senza riavviare
  • ridimensiona il tuo volume fisico con pvresize /dev/sdb1o ovunque sia il tuo pv (usa pvsper determinare se non lo sai)
  • ora ridimensiona il tuo volume logico con lvextend -l +100%FREE /dev/file/of/your/lv, nel mio casosudo lvextend -l +100%FREE /dev/linuxvg/home
  • ridimensionare il filesystem sudo resize2fs /dev/linuxvg/home
  • prima controlla la coerenza sudo e2fsck -f /dev/linuxvg/home
  • godere :)

In realtà puoi tagliare circa la metà di questi passaggi e farlo con solo 1 riavvio.
Patrick,

GParted ha rifiutato di ridimensionare la partizione, perché era bloccata (questo simbolo chiave).
klingt.net,

4

Alcune ottime risposte già.

Se stai usando xfs, allora usi il comando

xfs_growfs /mountpoint

anziché ridimensionare2fs. Puoi farlo mentre quel mountpoint è attivo, ad esempio se hai sviluppato la partizione di root e non è necessario riavviare dopo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.