EC2 Impossibile ridimensionare il volume dopo aver aumentato le dimensioni


95

Ho seguito i passaggi per ridimensionare un volume EC2

  1. Arrestato l'istanza
  2. Ha acquisito un'istantanea del volume corrente
  3. Creato un nuovo volume dall'istantanea precedente con una dimensione maggiore nella stessa regione
  4. Ha scollegato il vecchio volume dall'istanza
  5. Collegato il nuovo volume all'istanza nello stesso punto di montaggio

Il vecchio volume era di 5 GB e quello che ho creato è di 100 GB. Ora, quando riavvio l'istanza ed eseguo, df -h Ivedo ancora questo

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde1            4.7G  3.5G 1021M  78% /
tmpfs                 296M     0  296M   0% /dev/shm

Questo è ciò che ottengo quando corro

sudo resize2fs /dev/xvde1

The filesystem is already 1247037 blocks long.  Nothing to do!

Se corro cat /proc/partitionsvedo

 202       64  104857600 xvde
 202       65    4988151 xvde1
 202       66     249007 xvde2

Da quello che ho capito se ho seguito i passaggi giusti xvde dovrebbe avere gli stessi dati di xvde1 ma non so come usarlo

Come posso usare il nuovo volume o umount xvde1 e montare invece xvde?

Non riesco a capire cosa sto facendo di sbagliato

Ho anche provato sudo ifs_growfs /dev/xvde1

xfs_growfs: /dev/xvde1 is not a mounted XFS filesystem

A proposito, questa è una scatola Linux con Centos 6.2 x86_64

Grazie in anticipo per il vostro aiuto

Risposte:


70

Grazie Wilman, i tuoi comandi hanno funzionato correttamente, è necessario considerare un piccolo miglioramento se stiamo aumentando gli EBS in dimensioni maggiori

  1. Ferma l'istanza
  2. Crea un'istantanea dal volume
  3. Crea un nuovo volume in base all'istantanea aumentando le dimensioni
  4. Controlla e ricorda il punto di montaggio del volume corrente (cioè /dev/sda1)
  5. Scollega il volume corrente
  6. Collega il volume creato di recente all'istanza, impostando il punto di montaggio esatto
  7. Riavvia l'istanza
  8. Accedi tramite SSH all'istanza ed esegui fdisk /dev/xvde

    ATTENZIONE: la modalità compatibile con DOS è deprecata. Si consiglia vivamente di disattivare la modalità (comando 'c') e modificare le unità di visualizzazione in settori (comando 'u')

  9. Premi pper mostrare le partizioni correnti

  10. Premi dper eliminare le partizioni correnti (se ce ne sono più di una, devi eliminarne una alla volta) NOTA: non preoccuparti, i dati non vengono persi
  11. Premi nper creare una nuova partizione
  12. Premi pper impostarlo come principale
  13. Premi 1per impostare il primo cilindro
  14. Imposta il nuovo spazio desiderato (se vuoto l'intero spazio è riservato)
  15. Premi aper renderlo avviabile
  16. Premi 1e wper scrivere le modifiche
  17. Riavviare l'istanza OPPURE utilizzare partprobe(dal partedpacchetto) per informare il kernel della nuova tabella delle partizioni
  18. Accedi tramite SSH ed esegui resize2fs / dev / xvde1
  19. Infine controlla il nuovo spazio che esegue df -h

1
"ATTENZIONE: la modalità compatibile con DOS è deprecata. Si consiglia vivamente di disattivare la modalità (comando 'c') e modificare le unità di visualizzazione in settori (comando 'u')" Questo non era necessario per me (Ubuntu 13.04). Aveva già disattivato la compatibilità DOS e utilizzava Sectors per impostazione predefinita. Premendo ce ueffettivamente passato alle modalità deprecate.
wisbucky

6
La soluzione ha funzionato bene ma l'istanza è stata bloccata su "1/2 controlli passati" con un punto esclamativo (ReadHat 6.5). Per risolvere questo problema ho impostato il "primo cilindro" a 16 (come in precedenza). Dopo di che l'istanza è iniziata normalmente con "2/2 controlli superati". Spero che questo aiuti qualcuno ...
user3586516

1
Anch'io ho dovuto cambiare il primo cilindro, ma ho dovuto cambiarlo in 2048. Consiglierei di controllare l'impostazione della partizione corrente prima di eliminarla.
Doyley

9
Dopo aver riavviato la mia istanza, non riesco a connettermi tramite SSH. La connessione è scaduta e la console aws mostra che non è possibile avviare i controlli dello stato. Penso che sia morto. Qualche idea su cosa fare?
Richard

5
Questa risposta è ora deprecata ora che AWS supporta il ridimensionamento online per i volumi EBS.
Dale Anderson

303

Non è più necessario arrestare l'istanza e scollegare il volume EBS per ridimensionarla!

13-feb-2017 Amazon ha annunciato: " Aggiornamento Amazon EBS - Nuovi volumi elastici cambiano tutto "

Il processo funziona anche se il volume da estendere è il volume di root dell'istanza in esecuzione!


Supponiamo di voler aumentare il disco di avvio di Ubuntu da 8G a 16G "al volo".

passaggio-1) accedi alla console Web AWS -> EBS -> fai clic con il pulsante destro del mouse su quello che desideri ridimensionare -> "Modifica volume" -> cambia il campo "Dimensioni" e fai clic sul pulsante [Modifica]

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


step-2) ssh nell'istanza e ridimensiona la partizione:

elenchiamo i dispositivi di blocco collegati alla nostra scatola:
lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0   8G  0 part /

Come puoi vedere / dev / xvda1 è ancora una partizione da 8 GiB su un dispositivo da 16 GiB e non ci sono altre partizioni sul volume. Usiamo "growpart" per ridimensionare la partizione 8G fino a 16G:

# install "cloud-guest-utils" if it is not installed already
apt install cloud-guest-utils

# resize partition
growpart /dev/xvda 1

Controlliamo il risultato (puoi vedere / dev / xvda1 ora è 16G):

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0  16G  0 part /

Molte risposte SO suggeriscono di utilizzare fdisk con eliminare / ricreare partizioni, che è un processo sgradevole, rischioso e soggetto a errori, specialmente quando cambiamo l'unità di avvio.


passaggio-3) ridimensionare il file system per crescere fino a utilizzare completamente il nuovo spazio di partizione
# Check before resizing ("Avail" shows 1.1G):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  6.3G  1.1G  86% /

# resize filesystem
resize2fs /dev/xvda1

# Check after resizing ("Avail" now shows 8.7G!-):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       16G  6.3G  8.7G  42% /

Quindi abbiamo zero tempi di inattività e molto nuovo spazio da utilizzare.
Godere!

Aggiornamento: Aggiornamento: usa sudo xfs_growfs / dev / xvda1 invece di resize2fs quando il filesystem XFS.


ridimensionare la partizione è stato di grande aiuto .... !! La cosa più meravigliosa è che ha funzionato anche per il volume di root.
piyushmandovra

4
Qualcuno accetterà questa come risposta corretta? Solo perché ... lo è.
eduardohl

Solido, grazie mille ... Ero così scettico nell'eseguire i passaggi menzionati nelle risposte sopra, ma questo è stato dannatamente bello ...
AAgg

4
Huh, i documenti ufficiali non menzionano growpart, motivo per cui non riuscivo a farlo funzionare prima. Grazie!
Ibrahim

1
@Shihas, sì. Questo è il punto. Anche l'unità montata "root" avviabile può essere aumentata in modo sicuro senza bisogno di riavvio!
Dmitry Shevkoplyas

42

Prefetto commento di jperelli sopra.

Oggi ho affrontato lo stesso problema. La documentazione di AWS non menziona chiaramente growpart. Ho capito nel modo più duro e infatti i due comandi hanno funzionato perfettamente su M4.large e M4.xlarge con Ubuntu

sudo growpart /dev/xvda 1
sudo resize2fs /dev/xvda1

la seconda risposta da allegare e questa risposta è per il ridimensionamento
Adiii

Sorprendente! ha funzionato sulla mia istanza t2.small. Whew. Ho pensato che sarebbe stato più sanguinoso di così. Grazie!
publicknowledge

Non riesco a installare cloud-guest-utils che contiene growpart. Linux versione 3.16.0-4-amd64
nettie

15

[RISOLTO]

Questo è quello che doveva essere fatto

  1. Ferma l'istanza
  2. Crea un'istantanea dal volume
  3. Crea un nuovo volume in base all'istantanea aumentando le dimensioni
  4. Controlla e ricorda il punto di montaggio del volume corrente (cioè / dev / sda1)
  5. Scollega il volume corrente
  6. Collega il volume creato di recente all'istanza, impostando il punto di montaggio esatto
  7. Riavvia l'istanza
  8. Accedi tramite SSH all'istanza ed esegui fdisk /dev/xvde
  9. Premi pper mostrare le partizioni correnti
  10. Premi dper eliminare le partizioni correnti (se ce ne sono più di una, devi eliminarne una alla volta) NOTA: non preoccuparti, i dati non vengono persi
  11. Premi nper creare una nuova partizione
  12. Premi pper impostarlo come principale
  13. Premi 1per impostare il primo cilindro
  14. Imposta il nuovo spazio desiderato (se vuoto l'intero spazio è riservato)
  15. Premi aper renderlo avviabile
  16. Premi 1e wper scrivere le modifiche
  17. Riavvia l'istanza
  18. Accedi tramite SSH ed esegui resize2fs /dev/xvde1
  19. Infine controlla il nuovo spazio in esecuzione df -h

Questo è

In bocca al lupo!


1
Nei volumi Amazon EBS sembra essere importante utilizzare lo stesso punto di montaggio in resize2fs come si usa con fdisk. df mostra qualcosa come / dev / xvda1 come volume EBS allegato, ma il comando resize2fs ha funzionato solo per me quando ho usato l'identificatore / dev / sdf1, che avevo usato quando ho fatto la nuova partizione in fdisk.
Garreth McDaid

Questo è nella documentazione di AWS. Ciò che è scadente è che le loro procedure sono ancora incomplete dopo 3 anni di questo lavoro. Se hai un'immagine puoi ripiegare, certo. È sempre possibile sospendere temporaneamente il nuovo disco da un'istanza che esegue anche un desktop, ma aver bisogno di montarlo per un ridimensionamento può essere un problema se stavi pensando di usare gparted. gcloud si ridimensiona al volo.
mckenzm

Il mio dispositivo di archiviazione (/ dev / xvda1) è partito dal settore 16065, non dal settore 1. Quindi il passaggio 13 (premere 1 per impostare il primo cilindro) doveva essere 16065 nel mio caso.
Simon Paarlberg

Non andare con queste soluzioni potresti perdere i tuoi dati. In realtà, ho capito di non scegliere l'opzione di eliminazione della partizione se mostra i valori dell'elenco delle partizioni nella tabella delle partizioni, perché se l'elenco è lì, elimina letteralmente la partizione, quindi i dati andranno persi anche se la risposta dice "Non lo farà Elimina". C'è un modo per estendere la dimensione della partizione, controlla in fondo che ci sono altre utilità che ti aiuteranno ad estendere la dimensione della partizione senza problemi.
piyushmandovra

6
  1. accedi alla console Web AWS -> EBS -> fai clic con il pulsante destro del mouse su quello che desideri ridimensionare -> "Modifica volume" -> cambia il campo "Dimensioni" e fai clic sul pulsante [Modifica]

  2. growpart /dev/xvda 1

  3. resize2fs /dev/xvda1

Questa è una versione immediata della risposta di Dmitry Shevkoplyas. La documentazione di AWS non mostra il growpartcomando. Funziona bene per Ubuntu AMI.


6
  1. sudo growpart / dev / xvda 1
  2. sudo resize2fs / dev / xvda1

i due comandi precedenti mi hanno fatto risparmiare tempo per le istanze ec2 di AWS ubuntu.



4

Nel caso in cui qualcuno qui per la piattaforma cloud di Google GCP,
prova questo:

sudo growpart /dev/sdb 1
sudo resize2fs /dev/sdb1

2

Hai creato una partizione su questo volume? Se lo hai fatto, dovrai prima espandere la partizione.


no, non l'ho fatto. Dovrei? Come posso farlo? Ricorda che questo nuovo volume che ho allegato dovrebbe contenere tutti i dati precedenti perché è un'istantanea del volume originale
Wilman Arambillete

No. Ma ho ricevuto quell'errore se c'era una partizione collegata. Vai e ricontrolla di aver impostato il volume della dimensione corretta e ricontrolla di aver montato il nuovo volume.
chantheman

Inoltre, non è necessario arrestare l'istanza per farlo. È sicuro se hai scritture su quel volume, ma puoi eseguire lo snapshot con l'istanza in esecuzione.
chantheman

1

Il flag di avvio (a) non ha funzionato nel mio caso (EC2, centos6.5), quindi ho dovuto ricreare il volume dall'istantanea. Dopo aver ripetuto tutti i passaggi TRANNE il flag di avvio, tutto ha funzionato perfettamente, quindi sono stato in grado di ridimensionare2fs dopo. Grazie!


1

Grazie, @Dimitry, ha funzionato a meraviglia con una piccola modifica per abbinare il mio file system.

fonte: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#recognize-expanded-volume-linux

Quindi utilizzare il seguente comando, sostituendo il punto di montaggio del file system (i file system XFS devono essere montati per ridimensionarli):

[ec2-user ~]$ sudo xfs_growfs -d /mnt
meta-data=/dev/xvdf              isize=256    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 262144 to 26214400

Nota Se si riceve un errore xfsctl: Impossibile allocare errore di memoria, potrebbe essere necessario aggiornare il kernel Linux sull'istanza. Per ulteriori informazioni, fare riferimento alla documentazione del sistema operativo specifico. Se ricevi un messaggio di errore Il filesystem è già lungo nnnnnnn blocchi. Niente da fare! errore, vedere Espansione di una partizione Linux.


0

Non ho abbastanza rappresentante per commentare sopra; ma nota anche per i commenti sopra che puoi danneggiare la tua istanza se inizi da 1; se premi "u" dopo aver avviato fdisk prima di elencare le tue partizioni con "p", questo ti darà il numero iniziale corretto in modo da non danneggiare i tuoi volumi. Per centos 6.5 AMI, anche come accennato sopra 2048 era corretto per me.


0

Quindi, nel caso in cui qualcuno avesse il problema in cui si è imbattuto in questo problema con il 100% di utilizzo e senza spazio per eseguire il comando growpart (perché crea un file in / tmp)

Ecco un comando che ho scoperto che bypassa anche mentre il volume EBS è in uso, e anche se non hai spazio sul tuo ec2 e sei al 100%

/sbin/parted ---pretend-input-tty /dev/xvda resizepart 1 yes 100%

vedere questo sito qui:

https://www.elastic.co/blog/autoresize-ebs-root-volume-on-aws-amis


Questo comando dovrebbe essere seguito da sudo resize2fs /dev/xvda1per aggiornare /etc/fstab, solo dopo che df -hmostrerà lo spazio su disco cresciuto
karmendra

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.