Aumentare la dimensione della partizione su cui è installato Ubuntu?


60

Ho Ubuntu installato su un disco. Il problema è che sta esaurendo lo spazio su disco. Questo è installato su VMware. Ho espanso il disco virtuale e ho avviato Ubuntu. Ma quando ho aperto gparted (sudo gparted), l'opzione sposta / ridimensiona non è disponibile. Questa è la partizione su cui è installato Ubuntu, ma devo ridimensionarlo. Qualche idea? Sono a mio agio con la riga di comando


Puoi vedere come lo fanno raspi-configper Raspberry Pi, dove espandere il file system di root è qualcosa che fai quasi ogni volta che configuri un nuovo Raspberry Pi. github.com/RPi-Distro/raspi-config/blob/…
sshow

Risposte:


16

Ci sei quasi.
Non puoi ridimensionare la partizione usando GParted mentre Ubuntu è in esecuzione.
Dovrai collegare gli ISO GParted come CD alla macchina VM e riavviare la macchina in modo che GParted venga caricato invece di Ubuntu (penso che puoi avviare dal CD virtuale premendo F12 immediatamente dopo l'avvio della macchina).
Una volta avviato in GParted, l'opzione per spostare / ridimensionare verrà abilitata poiché Ubuntu non è attualmente in esecuzione.


139

È un dato di fatto, PUOI ingrandire il filesystem di root mentre Ubuntu è in esecuzione (l'ho imparato di recente qui da solo ) - sembra incredibile ma è vero :)

Ecco l'elenco dei passaggi per un semplice scenario in cui hai due partizioni, /dev/sda1è una partizione ext4 da cui il sistema operativo viene avviato ed /dev/sdb2è swap. Per questo esercizio vogliamo rimuovere la partizione di swap e estenderla /dev/sda1all'intero disco.

  1. Come sempre, assicurati di avere un backup dei tuoi dati - poiché stiamo modificando la tabella delle partizioni c'è la possibilità di perdere tutti i tuoi dati se fai un refuso, per esempio.

  2. Correre sudo fdisk /dev/sda

    • utilizzare pper elencare le partizioni. Prendere nota del cilindro di avvio di/dev/sda1
    • usare dper cancellare prima la partizione di swap ( 2) e poi la /dev/sda1partizione. Questo è molto spaventoso ma in realtà è innocuo in quanto i dati non vengono scritti sul disco fino a quando non si scrivono le modifiche sul disco.
    • utilizzare nper creare una nuova partizione primaria. Assicurati che il suo cilindro di avviamento sia esattamente lo stesso del vecchio /dev/sda1. Per il cilindro di fine concordare con la scelta predefinita, che è quella di rendere la partizione per estendere l'intero disco.
    • utilizzare aper attivare / disattivare il flag di avvio sul nuovo/dev/sda1
    • rivedere le modifiche, fare un respiro profondo e utilizzare wper scrivere la nuova tabella delle partizioni su disco. Verrà visualizzato un messaggio che informa che il kernel non è stato in grado di rileggere la tabella delle partizioni perché il dispositivo è occupato, ma va bene.
  3. Riavvia con sudo reboot. Quando il sistema si avvia, avrai un filesystem più piccolo che vive all'interno di una partizione più grande .

  4. Il prossimo comando magico è resize2fs. Esegui sudo resize2fs /dev/sda1: per impostazione predefinita, questo modulo consente al filesystem di occupare tutto lo spazio disponibile sulla partizione.

Ecco fatto, abbiamo appena ridimensionato una partizione su cui è installato Ubuntu, senza eseguire l'avvio da un'unità esterna.


@EliahKagan: per favore, dai un'occhiata alla risposta (di Gilles) a cui ho collegato. L'idea è che è possibile utilizzare fdiskper ingrandire la partizione , mentre il sistema operativo continua a utilizzare il filesystem più piccolo. Poi. dopo un riavvio, dopo che il kernel ha riletto la tabella delle partizioni aggiornata, possiamo ridimensionare il filesystem perché ora risiede in una partizione più grande.
Sergey,

1
@Isaac: Sì, dobbiamo ancora riavviare per consentire al kernel di rileggere la tabella delle partizioni. Tuttavia, un riavvio rapido in molti scenari è un problema molto più piccolo rispetto all'avvio da un supporto esterno (si pensi a macchine remote, macchine senza testa, VPS ecc.)
Sergey

2
Due brevi note: 1. Puoi usare dfper mostrare lo spazio "risultante" dopo questo (conferma che ha funzionato), e 2. ricorda di ricreare dello spazio di scambio!
Christian Rondeau,

1
Grazie mille. Ubuntu non ha mai usato lo spazio che ho dato al disco virtuale VirtualBox. Ora so perché. Grazie molto!
penderi,

1
@Sid: è molto importante che il cilindro di avvio sia esattamente lo stesso. Se lo spazio libero è ovunque ma immediatamente dopo la partizione è necessario utilizzare un altro metodo (che richiederebbe l'avvio da un'altra unità)
Sergey

21

Due metodi

1. Testato su Ubuntu Server dal 16.04 al 18.10

Dopo aver esteso il volume in VMware ESXi (arresto vm, backup / esportazione vm, rimozione di tutte le istantanee, quindi aumento del numero nella dimensione del disco, eseguire nuovamente l'istantanea di vm prima di seguire i passaggi successivi in ​​modo da poter ripristinare errori / errori).

L'esempio seguente estende il volume sulla partizione root su un sistema che sta già utilizzando LVM.

  1. sshnel sistema, passa a root ed esegui cfdisk
    # cfdisk

  2. inserisci qui la descrizione dell'immagine

  3. inserisci qui la descrizione dell'immagine

  4. inserisci qui la descrizione dell'immagine

  5. inserisci qui la descrizione dell'immagine

  6. inserisci qui la descrizione dell'immagine

  7. inserisci qui la descrizione dell'immagine

  8. inserisci qui la descrizione dell'immagine

  9. inserisci qui la descrizione dell'immagine

  10. inserisci qui la descrizione dell'immagine

  11. inserisci qui la descrizione dell'immagine

  12. inserisci qui la descrizione dell'immagine

  13. Dopo essere uscito da cfdisk

     # fdisk -l /dev/sda 
     Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 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
     Disklabel type: dos
     Disk identifier: 0xc8b647ff
    
     Device     Boot    Start      End  Sectors  Size Id Type
     /dev/sda1  *        2048   999423   997376  487M 83 Linux
     /dev/sda2        1001470 16775167 15773698  7.5G  5 Extended
     /dev/sda3       16775168 41943039 25167872   12G 8e Linux LVM (***** See new partition /dev/sda3*****)
     /dev/sda5        1001472 16775167 15773696  7.5G 8e Linux LVM
    
  14. Riavvia il sistema prima del passaggio successivo (altrimenti potresti ottenere Device /dev/sda3 not found (or ignored by filtering))

     # shutdown now -r
    
  15. Inizializza il nuovo volume

     # pvcreate /dev/sda3
       Physical volume "/dev/sda3" successfully created
    
  16. Ottieni il nome del volume da estendere

     # vgdisplay
       --- Volume group ---
       VG Name               linuxetc1-vg (***** this is vg i'm extending*****)
       System ID             
       Format                lvm2
       Metadata Areas        1
       Metadata Sequence No  3
       VG Access             read/write
       VG Status             resizable
       MAX LV                0
       Cur LV                2
       Open LV               2
       Max PV                0
       Cur PV                1
       Act PV                1
       VG Size               7.52 GiB
       PE Size               4.00 MiB
       Total PE              1925
       Alloc PE / Size       1925 / 7.52 GiB
       Free  PE / Size       0 / 0  
       ...
    
  17. Estendi il gruppo di volumi

     # vgextend linuxetc1-vg /dev/sda3
       Volume group "linuxetc1-vg" successfully extended
    
  18. Estendi radice

     # lvextend -l+100%FREE /dev/linuxetc1-vg/root
       Size of logical volume linuxetc1-vg/root changed from 6.52 GiB (1669 extents) to 18.52 GiB (4741 extents).
       Logical volume root successfully resized.
    
    
     Or if you only wanted to give 5 more GB to root
     # lvextend -L +5g /dev/linuxetc1-vg/root
    
  19. Ottieni il nome del file system per il passaggio successivo

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root  6.3G  2.5G  3.5G  42% /            (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    
  20. Estendi il filesystem

     # resize2fs /dev/mapper/linuxetc1--vg-root
     resize2fs 1.42.13 (17-May-2015)
     Filesystem at /dev/mapper/linuxetc1--vg-root is mounted on /; on-line resizing required
     old_desc_blocks = 1, new_desc_blocks = 2
     The filesystem on /dev/mapper/linuxetc1--vg-root is now 4854784 (4k) blocks long.
    
  21. Vedi le dimensioni aumentate

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root   19G  2.5G   15G  15% /         (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    

2. Metodo più rapido testato in Ubuntu Server 18.04.3 LTS

Questo metodo è un po 'più veloce del primo. Ciò è dovuto a una nuova opzione nel cfdiskmenu denominata "Ridimensiona" che consente di salvare alcuni passaggi.

Dopo aver esteso il volume in VMware ESXi (arresto vm, backup / esportazione vm, rimozione di tutte le istantanee, quindi aumento del numero nella dimensione del disco, eseguire nuovamente l'istantanea di vm prima di seguire i passaggi successivi in ​​modo da poter ripristinare errori / errori).

L'esempio seguente estende il volume sulla partizione root su un sistema che sta già utilizzando LVM.

  1. sshnel sistema, passa a root ed esegui cfdisk.

  2. Scegli la partizione da estendere e seleziona "Ridimensiona". inserisci qui la descrizione dell'immagine

  3. Imposta la "Nuova dimensione". inserisci qui la descrizione dell'immagine

  4. Dopo aver premuto Invio, verrà visualizzata la schermata con la seguente nota "Partition [someNumber] ridimensionata": inserisci qui la descrizione dell'immagine

  5. Successivamente dovrai "scrivere" (salvare) le tue modifiche: inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

  6. Quit cfdisk. All'uscita potresti visualizzare il messaggio "sincronizzazione dei dischi". inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

  7. Ho riavviato il mio sistema a questo punto, ma potrebbe non essere necessario. Ora puoi prelevare dal passaggio 19 dal primo metodo (ripetuto di seguito).

  8. (19) Ottieni il nome del filesystem per il passaggio successivo

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root  6.3G  2.5G  3.5G  42% /            (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    
  9. (20) Estendi il filesystem

     # resize2fs /dev/mapper/linuxetc1--vg-root
     resize2fs 1.42.13 (17-May-2015)
     Filesystem at /dev/mapper/linuxetc1--vg-root is mounted on /; on-line resizing required
     old_desc_blocks = 1, new_desc_blocks = 2
     The filesystem on /dev/mapper/linuxetc1--vg-root is now 4854784 (4k) blocks long.
    
  10. (21) Vedi le dimensioni aumentate

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root   19G  2.5G   15G  15% /         (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    

Articoli:
https://wiki.ubuntu.com/Lvm
http://www.geoffstratton.com/expand-hard-disk-ubuntu-lvm


Wow. Questo è stato estremamente utile. Vorrei poter votare più di una volta. Grazie!
Mario Tacke,

1
Ha funzionato perfettamente su 18.10 in esecuzione su ESXi. Grazie!
John Vinopal,

Assolutamente favoloso, proprio quello di cui avevo bisogno come noob di Linux. .
bigbadmouse

Ottima guida! Seguito questo per espandere l'archiviazione su Ubuntu in esecuzione come Proxmox VM.
tokenizer_fsj

Fantastico! Grazie per questo. Questo ha funzionato per 18.04 in esecuzione su ESXi.
one.time

0

La risposta di Sergey è stata eccellente. Se lo spazio vuoto non è direttamente nel dispositivo successivo, tuttavia, sarà necessario eliminare altri dispositivi. Per esempio:

Device     Boot    Start       End  Sectors Size Id Type
/dev/sda1  *        2048  33556477 33554430  16G 83 Linux
/dev/sda2       33556478  41940991  8384514   4G  5 Extended
/dev/sda3       41940992 125829119 83888128  40G 83 Linux
/dev/sda5       33556480  41940991  8384512   4G 82 Linux swap / Solaris

Nel caso di cui sopra, se si desidera unire /dev/sda3con /dev/sda1, si avrebbe bisogno di rimuovere /dev/sda1, /dev/sda2e /dev/sda3(con dil comando), e aggiungere nuovamente /dev/sda2e aggiornare il suo tipo (con ne tcomandi).


0

Sono riuscito ad allargare la mia partizione ext4 primaria usando la metodologia descritta qui .

Alcune note della mia esperienza personale:

  • L'esempio di collegamento è per ridurre la partizione, quindi l'ordine è prima ridimensionare2fs e poi fdisk. Quando si ingrandisce la partizione (come nel mio caso), l'ordine deve essere prima fdisk, riavviare e quindi ridimensionare2fs. Inoltre, quando si utilizza fdisk, le partizioni primaria e estesa devono essere rimosse e ridefinite.
  • Ho avviato Ubuntu da un'altra unità e poi ho lavorato su questa unità che in realtà era mirror (usando dd) dell'unità precedente. Reso avviabile usando GParted
  • La versione corrente di resize2fs (sto usando Ubuntu 12.04LTS) supporta ext4 - non c'è bisogno di fare le azioni descritte nel link per cambiarla ext2.

1
Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Braiam,
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.