Posso cambiare il dispositivo EBS root della mia istanza EC2 di Amazon?


107

Ho un'istanza Amazon EC2 supportata da EBS. Vorrei cambiare il dispositivo di root su questa istanza. Puoi consigliarmi il modo migliore per farlo?

Trovo solo documentazione sulla modifica di diversi attributi dei dispositivi a blocchi, ma non sembrano includere l'impostazione come dispositivo di root.

Risposte:


191

Sì, è semplicissimo:

  1. Ferma l'istanza.
  2. Scollega il volume EBS di root.
  3. Collega il volume EBS alternativo come root: /dev/sda1
  4. Avvia l'istanza.

Ciò presuppone che il volume EBS alternativo sia avviabile, ovviamente: deve contenere l'immagine del sistema operativo avviabile.


50
La chiave è "come la radice" - /dev/sda1anzi!
Aseem Kishore

6
Grazie, è fantastico. Un problema è che il DNS / IP può cambiare quando ciò accade, quindi assicurati di aggiornare tutti gli IP DNS / elastici, ecc. Ho passato un po 'di tempo a cercare di capire perché non potevo più usare ssh, e questo era il motivo.
mrooney

14
/dev/sda/dev/sda1ha funzionato per me, ma /dev/xvdaha fatto.
bhspencer

9
Amico, è stato spaventoso. /dev/sda- non ha funzionato. /dev/sda1, dev/sdf- ha funzionato, ma l'istanza non si è avviata. /dev/xvdalavorato.
Alex Fortuna

13
Il nome che dovresti usare è il risultato di questo comando: aws ec2 describe-instances --instance-id i-XXXXXXX | grep -i rootDeviceNamenel mio caso/dev/xvda
Neoecos

43

Non ho abbastanza rappresentante per aggiungere un commento alla risposta selezionata, ma voglio sottolineare che per me, /dev/sda1non ha funzionato (non è stato allegato come root), ma usando /dev/xvdalavorato (allegato come root). L'istanza è una delle più recenti t2.micro che utilizzano HVM.


Penso che le macchine che sono in VPC, i nomi dei dispositivi nel formato / dev / xv * funzionino e non sia necessario fornire nomi nel formato / dev / sd *. Questa è un'osservazione: non sono un esperto per dirlo con sicurezza.
Mayank Jaiswal

Ho un'istanza che corrisponde a questa descrizione, che non è in grado di avviarsi ("Impossibile trovare il dispositivo di root") dopo aver scollegato e ricollegato il dispositivo di root. Voglio provare questa risposta, ma se non la allego come /dev/sda1allora AWS si rifiuta di avviare la mia istanza. C'è qualche altra impostazione che devo configurare per utilizzare un nome di dispositivo di root alternativo?
Jack O'Connor

/ dev / sda1 per Linux / dev / xvda per Windows
Luis

whoopse, assicurati di identificare la partizione, / dev / sda 1 , /dev/sdanon è valida ma /dev/sda1va bene.
ThorSummoner

16

Per approfondire il commento di Diomidis Spinellis nel thread dei commenti della risposta accettata, è importante controllare l'etichetta del filesystem del dispositivo che stai tentando di passare come nuovo dispositivo di root. Durante la risoluzione dei problemi relativi alla migrazione del server, ho dovuto eseguire le seguenti operazioni prima che la mia istanza si avviasse:

Usa il e2labelcomando per cambiare l'etichetta sul filesystem ext2 / ext3 / ext4 che hai creato per il tuo nuovo dispositivo root.

Per prima cosa, controlla l'etichetta del filesystem per il tuo attuale dispositivo root.

$ sudo e2label /dev/xvda1
cloudimg-rootfs

Imposta il nuovo dispositivo in modo che abbia la stessa etichetta del file system.

$ sudo e2label /dev/xvdg 'cloudimg-rootfs'

Nel mio caso, l'etichetta lo era cloudimg-rootfs. A volte sarà semplicemente /.

È importante capire come funziona e2label; controlla la man e2labeltua macchina o visita http://linux.die.net/man/8/e2label per maggiori informazioni.


1
Questo è così incredibilmente importante, non riesco a capire perché questa risposta non si trova più comunemente.
ays0110

3

Questa è la soluzione suggerita da aws È possibile scollegare il volume di root dall'istanza originale dopo averla arrestata. Il volume di root è collegato a / dev / sda1. Una volta scollegato, allegalo alla nuova istanza. Dopo aver collegato il volume, potrebbe essere necessario montarlo dal sistema operativo. Dopo che è stato montato, dovresti vedere i dati al suo interno.

Dopo aver aggiunto la nuova chiave, puoi scollegarla e collegarla all'istanza originale in / dev / sda1.

Suggerisco di creare un'istantanea del volume di root prima di apportare modifiche.

Prima di provare qualsiasi soluzione, prova nei casi non importanti o nei casi spot


1

Se vuoi farlo tramite CloudFormation dovrai fare quanto segue:

  1. Crea snapshot dal volume root esistente (tramite console o CLI)
  2. Crea una nuova AMI da questa istantanea: aumenta la dimensione del volume di root qui, assicurati di selezionare il tempo di virtualizzazione corretto (paravirtuale o HVM).
  3. Nella tua risorsa AWS :: EC2 :: Instance, imposta il parametro ImageId sulla nuova AMI che hai appena creato

Distribuisci il tuo stack. Questo ricrea la tua istanza, quindi assicurati di utilizzare un indirizzo IP elastico o di avere accesso DNS.

Il motivo per cui devi eseguire questa soluzione alternativa è perché CF non ti consente di regolare la dimensione del volume di root su EC2 BlockDeviceMappings o di regolare SnapshotId del volume di root.


0

Quando il tuo volume è montato, riceve un post-fix con numeri, ad esempio: quando /dev/sdaè montato, è montato a /dev/sda1, /dev/sda2seconda delle partizioni che crei. Poiché stiamo montando il dispositivo di root stesso, si presume che il dispositivo sia già montato, quindi dobbiamo dare /dev/sda1per il montaggio del volume come dispositivo di root. Nota: non dovrebbe essere collegato alcun volume di root.

Segui questi passaggi: 1) Vai ai tuoi volumi, seleziona Collega volumi da Azione. 2) Seleziona la tua istanza 3) Per il montaggio come root, dai il nome del dispositivo come /dev/sda1 4) Avvia la tua istanza.

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.