Come estendere una partizione ext4 e un filesystem?


44

Ho un disco da 400 GB con una partizione ext4 da 320 GB. Vorrei far crescere la partizione ext4 per utilizzare lo spazio sinistro (80 GB di spazio libero).

+--------------------------------+--------+
|             ext4               |  Free  |
+--------------------------------+--------+

Come potrei farlo?

Ho visto persone che usano resize2fsma non capisco se ridimensiona la partizione.

Un'altra soluzione sarebbe quella di usare, fdiskma non voglio cancellare la mia partizione e i dati persi. Come potrei semplicemente far crescere la partizione senza perdere alcun file?

Nota: sto parlando di una partizione di dati non montata senza LVM e ho dei backup, ma vorrei evitare di dedicare un po 'di tempo al recupero.


Questo tipo di domanda è stata posta e ha risposto un numero di volte di cui sono a conoscenza. Hai consultato gli archivi qui?
mdpc,

Risposte:


45

È necessario iniziare con la partizione non montata. Se non riesci a smontarlo (ad es. È la tua partizione di root o qualcos'altro che il sistema deve eseguire), usa invece qualcosa come System Rescue CD .

  1. Esegui partedo gpartedse preferisci una GUI e ridimensiona la partizione per utilizzare lo spazio aggiuntivo. Preferisco gpartedperché ti dà una bella rappresentazione grafica, molto simile a quella che hai disegnato nella tua domanda.

  2. resize2fs /dev/whatever

  3. e2fsck /dev/whatever (solo per scoprire se sei al sicuro)

  4. Rimonta la tua partizione.

Anche se non ho mai visto questo errore, eseguire prima il backup dei dati!


5
La resize2fspagina man dice: Se il filesystem è montato, può essere usato per espandere le dimensioni del filesystem montato, supponendo che il kernel supporti il ​​ridimensionamento online. (Al momento della stesura di questo documento, il kernel Linux 2.6 supporta il ridimensionamento online per i filesystem montati usando ext3 ed ext4.). Tuttavia, il ridimensionamento di un filesystem montato è un'operazione più pericolosa, dal momento che il kernel potrebbe facilmente bloccarsi o bloccarsi durante l'esecuzione di codice raramente esercitato, lasciando il file system in uno stato non valido.
200_successo

1
Vero - ma non vuoi fare casino con la tua tabella delle partizioni con il filesystem montato. Ecco perché ho iniziato con la smontata.
Flup,

1
Per ext4, potrebbe essere resize4fsinvece su RHEL 5.
Zac Thompson,

1
La crescita della partizione con il file system di root dovrebbe funzionare bene a condizione che: 1.Non si cambi il numero del settore iniziale. 2.Riavvia dopo aver modificato la tabella delle partizioni prima di procedere con il passaggio successivo.
Kasperd,

parted si rifiuta di ridimensionare una partizione ext4 su CentOS 6.
reinierpost,

21

Sì, puoi espandere EXT4 fs online se hai una partizione già ordinata. La partizione è stata ordinata? Hai LVM?

sudo resize2fs /dev/drive_to_grow

fdiskridimensionerà la tua partizione, vero, ma se questa è una partizione di root (o se effettivamente una partizione montata) dovrà prima essere smontata. Quindi molto probabilmente offline!

Come per qualsiasi cosa relativa alle operazioni su disco / fs, consiglio vivamente di avere un processo di backup e testato, ben compreso, di recupero.


Se usi fdiskassicurati di controllare di utilizzare MBR e non GPT (ad esempio con MBR ibrido).
stek29,

2
Sul mio server Debian XEN ho ridimensionato il mio volume logico con lvextend +40G /dev/vg0/volumeName, allora il login come root nella VM ed è entrato resize2fs /dev/xvda2, che cresce il filesystem di root in esecuzione al nuovo max. Non sono sicuro che fosse necessario, ma ho riavviato il VM dopo questa azione. Sembra tutto a posto.
rubo77,

1
@ rubo77 No, non è necessario riavviare,
Chris l'

5

Nota, su alcuni server VDS potresti avere una partizione di root non primaria e devi prima ridimensionare il contenitore di partizioni estese

Ad esempio, hai appena aggiornato il tuo piano e hai qualcosa come:

Disk /dev/vda: 83886080s
Number  Start    End        Size       Type      File system  Flags
1      2048s    194559s    192512s    primary   ext2         boot
2      196606s  51197951s  51001346s  extended
5      196608s  51197951s  51001344s  logical   ext4

Qui / dev / vda2 - è il tuo contenitore esteso. E / dev / vda5 - partizione principale di cui abbiamo bisogno per ridimensionare a pieno spazio disponibile.

Il modo più semplice:

apt-get -y install parted
parted /dev/vda unit s print all # print current data for a case
parted /dev/vda resizepart 2 yes -- -1s # resize /dev/vda2 first
parted /dev/vda resizepart 5 yes -- -1s # resize /dev/vda5
partprobe /dev/vda # re-read partition table
resize2fs /dev/vda5 # get your space

Ciò che mi ha veramente aiutato è stato vedere che puoi impostare ENDun numero negativo. Di solito non si conosce l'esatta dimensione di Linux di una partizione ridimensionata - non si sa come impostare l' ENDargomento resizepart. Impostandolo su -1sridimensionerai la tua partizione al massimo.
srigi,

Errore: token non valido -1s
starbeamrainbowlabs

3

Parted non funziona su ext4 su Centos. Ho dovuto usare fdisk per cancellare e ricreare la partizione, che (ho convalidato) funziona senza perdere dati. Ho seguito i passaggi su http://geekpeek.net/resize-filesystem-fdisk-resize2fs/ . Eccoli, in breve:

$ sudo fdisk /dev/sdx 
> c
> u
> p
> d
> p
> w
$ sudo fdisk /dev/sdx 
> c
> u
> p
> n
> p
> 1
> (default)
> (default)
> p
> w

1
Benvenuti in Server Fault! Si prega di riassumere i passaggi nella risposta stessa, per evitare la putrefazione del collegamento.
200_successo

Ha usato questo processo ma ha usato gdisk per creare la partizione. Questo mi ha permesso di salvare i dati e di creare una partizione> 2 TB
pcnate

2

partedpuò resizepartizioni e i loro filesystem.


Grazie, stavo usando quello grafico e non supporta il ridimensionamento delle partizioni. Ho visto l'opzione sul programma cli, ma potresti dirmi come usarlo sicuramente senza perdere dati? In resize NUMBER START END, START e END sono i numeri di settore? Come lo saprei?
mimipc,

Si consiglia sempre di eseguire il backup dei dati prima di eseguire qualsiasi operazione rischiosa come il ridimensionamento di una partizione. partedsupporta una scelta di unità: ad esempio, utilizzare il ssuffisso per settori Bo GBbyte, %per percentuale delle dimensioni del dispositivo e cylper cilindri.
200_successo

2

Puoi usare fdisko cfdiskper modificare (o ricreare) la partizione (assicurati solo di non cambiarne il limite iniziale), quindi riavviare e resize2fs. Ma in generale è preferibile utilizzare LVM-2 invece di MBR / GPT in quanto consente di apportare tali modifiche senza il riavvio del kernel.


1

Giusto per chiarire come lo faccio per chiunque stia ancora leggendo questo thread.
Se è la partizione di avvio che si desidera ridimensionare, è necessario eseguire l'avvio da un'unità di "ripristino" bootcd o bootusb che è solo un Live Linux. Ciò consente di eseguire Linux sul computer diverso dall'unità in cui si desidera apportare modifiche.

Penso che il miglior cd o usb di "ripristino" in questo caso sia un caso USB o CD con partizione di avvio
in cui è necessaria un'immagine di salvataggio
1. La partizione da espandere è l'ultima partizione, ma è stata avviata da essa e non è possibile smontarla.
sda1 = boot (o swap)
sda2 = swap (o boot)
sda3 = /
Spazio inutilizzato

  1. Se la partizione da espandere NON è l'ultima partizione, è necessario utilizzare l'immagine di avvio gparted per spostare o ridimensionare le partizioni.
    sda1 = boot
    sda2 = / (la partizione da espandere non è ultima)
    sda3 = scambia
    spazio inutilizzato

Se si desidera modificare una partizione montata che non è la partizione "root" (/), come / home che è una partizione diversa, non è necessario utilizzare un'immagine di ripristino. Ciò è particolarmente vero se è l'ultima partizione.
sda1 = avvio
sda2 = /
sda3 = / home
inutilizzato spazio
oppure
sda1 = /
sda2 = / home
spazio inutilizzato

Questa è la situazione che ho quando prendo un'immagine da un'unità o SSD più piccola e la sposto su un SSD più grande.

In questo caso, devi solo smontare / home mentre lo estendi. Ma per smontare / home, devi assicurarti di non aver effettuato l'accesso a nessun account utente la cui home directory sia al suo interno. Poiché la directory home dell'utente "root" si trova direttamente nella directory principale di sistema / come in / root, se è possibile accedere a root, è possibile smontare / home

Esco da una sessione della GUI (KDE / Gnome / etc) e uso [CTRL] + [ALT] + [F1] per visualizzare una sessione di shell.
Se si è appena disconnessi da un accesso utente, potrebbero essere necessari 20-30 secondi per terminare la chiusura di qualsiasi file, quindi è possibile che si verifichino errori nel tentativo di smontare / home.
1. umount / home (ritento questo comando se fallisce per un massimo di 30 secondi, quindi vado a guardare altre sessioni per vedere se sono "cd / home / xxx" da qualche parte.)
2. parted / dev / sda
a. ridimensiona x (x = partizione che vuoi ridimensionare, usa "p" per ottenere un elenco di partizioni)
b. Immettere l'ultimo settore di ridimensionamento = "-1" (meno 1 significa 1 settore dalla fine del disco)
c. q (esce da parted)
3 resize2fs / dev / sda "x" (x = partizione da ridimensionare. Rimonta anche il filesystem)
4. df -m (controllo / home per verificarne il ridimensionamento)
Non ho mai perso i file o danneggiato l'unità usando questo metodo.

In bocca al lupo


Eppure, non esegui backup.
Deer Hunter il
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.