Come aumentare le dimensioni di un disco su un'istanza in esecuzione su Amazon EC2


13

Ho avuto un'istanza corrente di una configurazione del server EC 2 con Ubunto. Qual è il modo migliore per aumentare le dimensioni del disco senza downtime e rischi minimi?

Leggendo le guide, un modo sarebbe quello di creare un nuovo disco, migrare i dati, disattivare il disco di scambio dell'istanza e riaccenderlo. Questo approccio sembra un po 'rischioso e richiederà tempi di inattività. Mi chiedo se esiste un approccio migliore?

Risposte:


14

Amazon AWS ha appena rilasciato (il 13 febbraio 2017) una nuova funzionalità che consente di modificare le dimensioni di un volume EBS.

fonte: https://aws.amazon.com/blogs/aws/amazon-ebs-update-new-elastic-volumes-change-everything/

Ciò consente di aumentare le dimensioni di un volume EBS su un'istanza esistente, mentre è in esecuzione.

È importante notare che cambiando la dimensione del volume, non cambia la dimensione del filesystem sul volume (per la maggior parte dei filesystem). Potrebbero essere necessari passaggi aggiuntivi (a seconda del filesystem) nel sistema operativo stesso. Ad esempio, una resizefssul ext4file system utilizzato dalla maggior parte del sistema operativo Linux di oggi.

La documentazione completa di AWS che descrive il processo è disponibile all'indirizzo http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html

In alcuni casi il dispositivo a blocchi ha mappato le partizioni e solo allora una (o più) delle partizioni include un filesystem. In questo caso la partizione dovrà prima essere ridimensionata e solo successivamente il filesystem. Questo processo è descritto anche nella documentazione .

La nuova funzionalità di ridimensionamento "online" descritta nel blog si applica solo alle istanze di generazione corrente e ci sono alcune altre considerazioni e limitazioni che devono essere verificate prima di tentare un ridimensionamento del volume.


Prima di ridimensionare il filesystem dovrai ridimensionare anche la partizione sottostante, che sta davvero bloccando le partizioni fisiche per un ridimensionamento a caldo.
Tensibai,

@Tensibai mi dispiace non capisco cosa significhi "blocco su partizioni fisiche per un ridimensionamento a caldo". Vuoi dire che la modifica della dimensione del volume usando le API AWS bloccherà le scritture / letture sul volume?
Evgeny

No, intendo che il disco sarà più grande, ma la partizione su di esso rimarrà la stessa, è necessario utilizzare fdiskper ridimensionarlo, per quanto riguarda la partizione radice, di solito non è possibile scrivere la tabella delle partizioni del disco mentre è montata, e non puoi smontarlo. Dovrai riavviare a un certo punto :)
Tensibai

Giusto, se usi più partizioni prima di aggiungere il livello del filesystem, dovrai prima ridimensionare le partizioni. Grazie, proverò ad aggiungerlo nella risposta citando una guida su come è stato fatto.
Evgeny

La domanda menzionata senza tempi di inattività. Tuttavia per ridimensionare un volume di root sembra che dovresti rimuovere l'istanza per eseguire questo passaggio?
Chris Stryczynski,

2

Quello che faccio (e che non risponde esattamente alla tua domanda) è il seguente:

  1. Creare un volume EBS e collegarlo al documento dell'istanza è qui
  2. Eseguire nuovamente la scansione dei bus scsi echo '- - -' > /sys/bus/scsi/devices/host1/scsi_host/host1/scan(potrebbe essere necessario adattare il numero host)
  3. Crea un volume fisico con pvcreatesul nuovo disco trovato ( fdisk -lper elencare tutto il disco)
  4. Creare un gruppo di volumi e quindi volume logico su di esso ( vgcreatee lvcreate)
  5. Formatta il volume logico con il filesystem desiderato
  6. tar il mountpoint di destinazione per ripristinarlo.
  7. Montare questo volume dove è necessario nuovo spazio.
  8. Ripristina il tar in questo spazio appena montato.

I passaggi 6 e 8 sono facoltativi se si utilizza un nuovo spazio prima di installare qualcosa. Se si desidera sostituire una directory esistente, bisogna assolutamente evitare di scrivere qualcosa tra la fine dell'archivio e il restauro.

È possibile ripetere i passaggi da 4 a 8 per punti di montaggio diversi, ciò consente di estendere lo spazio necessario e quindi di ridimensionare quei volumi in linea senza interruzioni.


0

Ridimensionamento dello storage del filesystem ZFS Zero Downtime su AWS (o altrove)

upsize

  1. Installa ZFS su EC2.

    http://serverascode.com/2016/09/05/aws-zfs-user-data.html

  2. Crea uno zpool per i tuoi dati in blocco utilizzando un volume EBS.
  3. Aggiungi un altro EBS per ottenere più spazio di archiviazione. (o imposta il pool autoexpand = true e fai crescere la tua EBS)
  4. Aggiungi la nuova EBS al tuo zpool per rendere disponibile lo spazio. (a meno che tu non abbia usato l'espansione automatica e aumentato la dimensione EBS)

downsize

  1. Crea un nuovo zpool sul nuovo EBS abbastanza grande da contenere i dati ridotti. (non ha ancora bisogno di essere montato, o anche sulla stessa EC2)
  2. istantanea il vecchio zpool troppo grande
  3. zfs-invia l'istantanea al nuovo zpool
  4. promuovere lo snapshot ricevuto sul nuovo pool e montarlo
  5. distruggere la vecchia piscina
  6. distruggere il vecchio pool EBS

0

Dopo aver ridimensionato il volume EBS, ecco cosa ho appena eseguito quando avevo bisogno di espandere un pool ZFS:

parted -l # Get the list of partitions 
parted /dev/xvdf rm 9 # Remove the buffer partition
parted /dev/xvdf resizepart 1 100% # Resize the partition
zpool online -e <zfs partition name> /dev/xvdf # Expand the zpool and the filesystem it holds
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.