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.