Nessuna delle altre soluzioni funzionerà se il volume viene utilizzato come dispositivo root (avviabile).
Nel disco appena creato manca la partizione di avvio, quindi dovrebbe avere GRUB installato e alcuni flag impostati correttamente prima che un'istanza possa utilizzarlo come volume di root.
La mia (ad oggi, funzionante ) soluzione per ridurre un volume di root è:
Sfondo: abbiamo un'istanza A, il cui volume principale vogliamo ridurre. Chiamiamo questo volume VA. Vogliamo ridurre VA da 30 GB per dire 10 GB
- Crea una nuova istanza ec2, B, con lo stesso sistema operativo dell'istanza A. Come memoria, scegli un volume dello stesso tipo di VA, ma con una dimensione di 10 GB. (o qualunque sia la tua dimensione target). Quindi ora abbiamo un'istanza B che utilizza questo nuovo volume (chiamiamolo VB) come volume di root.
- Una volta che la nuova istanza (B) è in esecuzione. Fermalo e scollega il suo volume di root (VB).
NOTA: I seguenti passaggi sono principalmente presi dalla soluzione di @bill:
Interrompere l'istanza che si desidera ridimensionare (A).
Creare un'istantanea del volume VA e quindi creare un volume "SSD per uso generico" da quella istantanea. Questo volume lo chiameremo VASNAP.
Gira una nuova istanza con Amazon Linux, chiameremo questa istanza C. Utilizzeremo solo questa istanza per copiare il contenuto di VASNAP su VB. Probabilmente potremmo anche usare l'istanza A per fare questi passaggi, ma preferisco farlo in una macchina indipendente.
Collegare i seguenti volumi all'istanza C. / dev / xvdf per VB. / dev / xvdg per VASNAP.
Riavvia l'istanza C.
Accedere all'istanza C tramite SSH.
Crea queste nuove directory:
mkdir /source /target
- Formatta la partizione principale di VB con un filesystem ext4:
mkfs.ext4 /dev/xvdf1
Se non si ottengono errori, passare al punto 11. Altrimenti, in caso contrario /dev/xvdf1
, è necessario creare la partizione procedendo come segue:
i) Se /dev/xvdf1
non esiste per qualsiasi motivo, è necessario crearlo. Prima inserisci:
sudo fdisk /dev/xvdf
.
ii) Pulisci il disco inserendo:
wipefs
iii) Crea una nuova partizione inserendo:
n
iv) Invio p
per creare la partizione primaria
v) Continuare a premere invio per continuare con le impostazioni predefinite.
vi) Quando richiede di nuovo un comando, inserisci w
per scrivere le modifiche ed esci.
vii) Verifica di avere la /dev/xvdf1
partizione facendo:
lsblk
Dovresti vedere qualcosa del tipo:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 250G 0 disk
└─xvda1 202:1 0 250G 0 part
xvdf 202:80 0 80G 0 disk
└─xvdf1 202:81 0 80G 0 part
xvdg 202:96 0 250G 0 disk
└─xvdg1 202:97 0 250G 0 part
Ora vai al passaggio 11.
- Montalo su questa directory:
mount -t ext4 /dev/xvdf1 /target
- Questo è molto importante, il file system ha bisogno di un e2label per Linux per riconoscerlo e avviarlo, usare "e2label / dev / xvda1" su un'istanza attiva per vedere cosa dovrebbe essere, in questo caso l'etichetta è: "/"
e2label /dev/xvdf1 /
- Montare VASNAP su / sorgente:
mount -t ext4 /dev/xvdg1 /source
- Copia il contenuto:
rsync -vaxSHAX /source/ /target
Nota: non è presente "/" seguito "/ target". Inoltre, potrebbero esserci alcuni errori su symlink e attrs, ma il ridimensionamento ha avuto ancora successo
- Umount VB:
umount /target
Di nuovo in AWS Console: Dettach VB dall'istanza C e anche dettach VA da A.
Collegare il nuovo volume (VB) all'istanza come: "/ dev / xvda"
Avvia l'istanza A, ora il suo dispositivo di root è 10 GB :)
Elimina entrambe le istanze B e C e anche tutti i volumi tranne VB, che ora è il volume principale dell'istanza A.