Come ridimensionare la partizione root LVM in Fedora senza LiveCD o riavvio


24

Ho una macchina virtuale che ha recentemente aumentato l'immagine del disco da 20 GB a 50 GB e fdisk -lverifica che la VM possa vedere questa nuova dimensione. Ora devo ridimensionare la mia partizione radice LVM per riempire i 30 GB extra.

Ho trovato diversi articoli sul ridimensionamento di LVM, ma i pochi che coprono il ridimensionamento della partizione di root sostengono che è necessario eseguire l'avvio da un LiveCD. C'è un modo per farlo senza smontare il server? Il server è fondamentale, quindi vorrei ridurre al minimo i tempi di inattività.

Modifica: output di fdisk -l:

[root@fedora-host ~]# sudo fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 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: 0x00097c90

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    83886079    41430016   8e  Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 36.1 GB, 36104568832 bytes
255 heads, 63 sectors/track, 4389 cylinders, total 70516736 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/VolGroup-lv_root doesn't contain a valid partition table

Disk /dev/mapper/VolGroup-lv_swap: 6308 MB, 6308233216 bytes
255 heads, 63 sectors/track, 766 cylinders, total 12320768 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/VolGroup-lv_swap doesn't contain a valid partition table

Modifica: come ridimensionare la partizione fisica? fdisk può vedere lo spazio libero, ma non so come ridimensionare la partizione LVM primaria per usarla. Ho provato ad avviare un LiveCD e usando il resizecomando parted'd , ma tutto ciò che mi dà è l'errore "Impossibile rilevare il file system". Ho trovato questa guida , che dice che devo eliminare la partizione e crearne una nuova della dimensione corretta, ma suona molto pericolosa.

Modifica finale: il resizecomando Parted non è stranamente in grado di ridimensionare le partizioni LVM. Vai a capire. Invece, ho semplicemente eliminato la vecchia partizione e ne ho creata una nuova con il nuovo intervallo, come indicato nel collegamento sopra, e che ha ridimensionato correttamente la partizione LVM. Ho quindi seguito i consigli di seguito per ridimensionare i volumi e i filesystem all'interno della partizione LVM.


Mostraci l'output di fdisk - l. Hai ridimensionato la partizione e non solo il volume giusto?
Zoredache,

@Zoredache, ho aggiunto quell'output alla domanda.
Cerin,

Risposte:


33

È possibile aumentare un volume logico online. Dovresti smontarlo per ridurlo (che richiede una modalità LiveCD / Rescue).

  1. pvresize /dev/sda2(supponendo che la partizione LVM sia sda2. Sostituire come richiesto.)
  2. lvextend /dev/mapper/root -l+100%FREE (o, qualunque sia il tuo volume logico di root chiamato.)
  3. resize2fs /dev/mapper/root (supponendo ext2 / 3/4)

1
Personalmente preferisco lvextend -L [size][unit] /dev/group/volume, se non altro perché posso estendere un volume di 10 gigabyte specificando-L +10G
Hubert Kario,

Sì, ma l'OP ha chiesto; Now I need to resize my root LVM partition to fill the extra 30GB.(Il che significa aumentare il volume logico dello spazio libero disponibile.)
Aaron Copley,

"Le nuove dimensioni (1076 estensioni) corrispondono alle dimensioni esistenti (1076 estensioni)"
Cerin,

7
Ho pensato che questo trucco fosse pulito: se aggiungi l' -ropzione a lvextend, si aggancerà fsadmper ridimensionare la FS. Ciò renderebbe ridondante il terzo passaggio.
Jodie C,

3
Si noti che questa risposta presuppone che la partizione sia già stata estesa per riempire lo spazio libero e che solo i volumi logici debbano essere aggiornati. Il pvresize /dev/sda2comando non fa nulla fino a quando la partizione / dev / sda2 non è stata ridimensionata con parted o fdisk. Ho dovuto ridimensionare il mio con fdisk in quanto separato sul mio sistema non avrebbe mostrato o non aveva un comando di ridimensionamento. Il ridimensionamento di Fdisk comporta l'eliminazione e la ricostruzione della partizione.
Jason,

2

Il tuo sistema è davvero cambiato da 20 a 50 GB? Sembra davvero strano dal momento che il tuo dispositivo sda2 è ~ 40 GB, lv_root mostra 36 GB e lo scambio mostra 6 GB.

L'output di fdisk -lmostra i settori totali di /dev/sdaè 104857600. L'ultimo settore utilizzato da /dev/sda2è 83886079. Questo mi dice che non hai regolato le dimensioni della partizione per utilizzare tutto lo spazio disponibile sull'unità. Il comando pvresize non cambia la tabella delle partizioni. È necessario modificare prima la tabella delle partizioni.


1

Installa gparted. Esegui come root (usa ssh -X o x2go se remoto). Seleziona la partizione. Dovrebbe mostrare spazio libero oltre la fine (a destra). In caso contrario, è necessario riavviare la macchina virtuale per vedere le nuove dimensioni del dispositivo virtuale. Questo dovrebbe essere un downtime minimo con systemd.

Fare clic con il tasto destro e selezionare ridimensiona. Trascina la fine alla fine del disco. Assicurati di non toccare l'inizio. gparted è in grado di spostare una partizione durante il ridimensionamento, ma questo ovviamente distruggerà un sistema in esecuzione. Ma spostare la fine va bene. Rivedi l'operazione in sospeso che gparted eseguirà per assicurarti di estendere e non spostare la partizione. Fai clic su Applica. gparted cambierà la partizione su disco, quindi emetterà il kernel ioctl per rileggere la tabella delle partizioni, cambiando anche le dimensioni del dispositivo a blocchi live. Quindi, poiché vede che è un PV LVM, gira su pvresize per te. Esci da gparted e vgs ora mostra il tuo nuovo spazio.

Ho sentito voci che si sono separate possono fare tutto ciò senza il sovraccarico di una GUI, ma non sono mai stato in grado di capire il voodoo. Parted deve essere una delle peggiori interfacce CLI che abbia mai provato a utilizzare.

Non usare fdisk, devi eliminare e riallocare la partizione per ridimensionare e, per impostazione predefinita, cancellerà la firma LVM2 in scrittura. Penso di aver visto un'opzione "avanzata" per disattivare quel comportamento distruttivo, ma non l'ho mai provato.

Puoi anche provare cfdisk (curses fdisk). Potrebbe avere un ridimensionamento della partizione utilizzabile. È abbastanza semplice eseguire pvresize manualmente e c'è un comando per dire al kernel di rileggere la tabella delle partizioni. Ma dovrei provare per assicurarmi che non cancelli la firma LVM come fdisk.


0

Se il volume fisico LVM si trova su una partizione, no, non è possibile ridimensionarlo senza riavviare.

È possibile modificare la tabella delle partizioni sull'unità, ma Linux rifiuterà di usarla fino al riavvio.

Se stai usando XFS, passa resize2fsa xfs_growfs.

È possibile visualizzare i PV utilizzati e i LV nel gruppo di volumi utilizzando pvse lvs.

PV su disco grezzo

pvresize /dev/sda
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>

PV su una partizione

Prima di tutto bisogna ridimensionare la partizione, l'uso parted, fdisko un attrezzo simile per questo. Ricorda che quegli strumenti modificano solo la descrizione delle partizioni, non spostano i dati. In altre parole, puoi facilmente estendere solo l'ultima partizione sul disco. Quindi riavviare il computer e successivamente si dovrebbe essere in grado di informare LVM che dispone di spazio aggiuntivo disponibile:

pvresize /dev/sda2
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>

Utilizzando un Live CD Gparted, sudo pvresize /dev/sda2riporta "1 volume / i fisico / i ridimensionato", ma sudo lvextend /dev/mapper/VolGroup-lv_root -L +10Gnon riesce con l'errore "spazio libero insufficiente: 320 interni necessari, ma solo 0 disponibili". sudo fdisk -lsegnala che ho 54G disponibili, mentre sudo pvdisplaysono in uso solo 40G. Perché lvextend sta fallendo?
Cerin,

1
@Cerin, hai perso la prima dichiarazione di Huberts per un PV su una partizione. Per prima cosa devi ridimensionare la partizione, usare parted, fdisk o uno strumento simile per quello .
Zoredache,

@Zoredache, Ok, beh, questa è sostanzialmente la mia intera domanda. Non so come farlo. Ho appena avviato un LiveCD Gparted e ho provato ad usare il resizecomando parted per aumentare la dimensione della partizione primaria, ma mi ha dato l'errore "Impossibile rilevare il filesystem". Come ridimensionare la partizione usando parted o fdisk?
Cerin,

@Cerin: cerca SF o fai un'altra domanda
Hubert Kario,

0

Prenderei in considerazione il controllo di ssm (system-storage-manager) se è disponibile sulla tua distribuzione.

Dai un'occhiata a questo per ulteriori informazioni: /unix//a/293173

ssm sembra semplificare il ridimensionamento dei volumi logici senza dover fare tutto da soli.

Sono stato in grado di utilizzare per estendere la mia partizione home con esso dopo aver riavviato il mio sistema operativo e aver effettuato l'accesso prima come root. (Ho dovuto riavviare due volte in totale, ma alla fine ha funzionato e ora ho 50G extra disponibili nella mia / home parition.)


0

Dopo aver combinato 25 howto, finalmente ho questa soluzione. Non richiede cd live, è completamente al volo.

Passaggio 1. formattare la partizione con parted (no gui). In questo esempio la dimensione massima del disco è aumentata da 8 GB a 32 GB nella scatola virtuale.

    # parted
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
       ....
    (parted) mkpart primary ext2 8590 100%
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
         3      8590MB  34,4GB  25,8GB   primary  ext2             lba
       ....
    (parted) set 3 lvm on
    (parted) set 3 lba off
    (parted) print
       ....
         3      8590MB  34,4GB  25,8GB   primary  ext2             lvm
       ....
    (parted) quit

Passaggio 2. Creare un volume fisico basato sulla nuova partizione

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.

Passaggio 3. Aggiungere il volume fisico al gruppo di volumi. In una semplice installazione di server fedora 28 il gruppo di volumi si chiama fedora.

# vgextend fedora /dev/sda3
  Volume group "fedora" successfully extended

Passaggio 4. Aggiungere lo spazio disponibile nel gruppo di volumi al volume logico. In una semplice installazione di server fedora 28 il volume logico è chiamato root.

# lvextend -l+100%FREE /dev/fedora/root
  Size of logical volume fedora/root changed from <6,20 GiB (1586 extents) to 30,19 GiB (7729 extents).
  Logical volume fedora/root successfully resized.

Passaggio 5. Indicare al filesystem nel volume logico di utilizzare lo spazio aggiuntivo. In fedora il filesystem è xfs.

Attenzione! xfs_growfs usa il mount point per identificare il filesystem, non il nome del filesystem che trovi nell'output df !!!!!!!

Il comando 'xfs_growfs / dev / mapper / fedora-root' ti dirà / dev / mapper / fedora-root non è un filesystem XFS montato. Se si utilizza un file system diverso, consultare https://www.tldp.org/HOWTO/LVM-HOWTO/extendlv.html

# xfs_growfs /
    data blocks changed from 1624064 to 7914496

Passaggio 6. Divertiti

# df
FileSystem               1K-blocks      Used   Available used% Mounted on
....
/dev/mapper/fedora-root   31647744   6492840    25154904  21% /
/dev/sda1                   999320    125576      804932  14% /boot
....

-1

Prova testdisk

sudo dnf installa testdisk

sudo testdisk

Basta impostare creare un file di registro Quindi elencherà le partizioni, - seleziona il supporto / partizione - quindi digita - e analizza - ricerca rapida - seleziona e scrivi

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.