questo può essere fatto senza creare un nuovo AMI e senza lanciare un nuova istanza. Al termine, il volume di root originale rimane collegato su/dev/sda1 (o ovunque sia stato originariamente montato./Dev/sda1 è l'impostazione predefinita per molte AMI). Il volume di root originale non verrà montato sul filesystem: dovrai farlo tu stesso tramite il comando "mount".
La tecnica richiede i recenti kernel di Ubuntu, quelli che funzionano nelle loro versioni 10.04 e 10.10. Controlla alestic.com per i più recenti ID AMI per queste versioni di Ubuntu. Questi kernel recenti sono configurati per l'avvio da qualsiasi dispositivo collegato la cui etichetta di volume è "uec-rootfs". Se si sta utilizzando uno di questi kernel, è sufficiente modificare l'etichetta del volume del volume di root corrente (istanza-archivio) con un'altra, modificare l'etichetta del volume della nuova radice su uec-rootfs e quindi riavviare. Se non stai eseguendo uno di questi kernel, non puoi usare questa tecnica.
Ecco il codice. Mettere questo in un file (reroot.sh) nell'istanza:
#! /bin/bash
device=$1
# change the filesystem labels
e2label /dev/sda1 old-uec-rootfs
e2label $device uec-rootfs
In primo luogo si dovrebbe collegare il volume EBS che si desidera agire come la nuova radice di uno dei dispositivi disponibili /dev/sdf../dev/SDP. Questo può essere fatto con chiamate API EC2 dirette, con lo EC2 Command Line API tools (ec2-attach-volume), o con una libreria come boto o tramite l'interfaccia utente della Console di gestione AWS.
Poi, eseguire lo script reroot.sh come root, e di fornire il dispositivo è stato collegato il nuovo volume di root su, come segue:
sudo reroot.sh /dev/sdp
questo farà il lavoro sporco.Quindi riavviare semplicemente:
sudo shutdown -r now
Viola.
Per verificare ciò, è necessario creare un volume EBS che sapete si avvierà correttamente. Mi piace farlo facendo un'istantanea del volume di root delle AMI supportate da EBS da quelle AMI di Ubuntu sopra menzionate. Da tale istantanea è possibile creare un nuovo volume EBS avviabile in qualsiasi zona di disponibilità. Assicurarsi che si può dire la differenza tra volume di root originale del istanza in esecuzione e il nuovo volume di root EBS - prima di eseguire la procedura reroot sopra si può mettere in un file di "marker" sul vecchio volume di root:
cd
touch this-is-the-original-root-volume
Quindi, quando si riavvia e si riavvia, se quel file esiste nella propria directory home, si sta ancora utilizzando il volume di root originale. Se non c'è, allora il reroot-and-reboot ha funzionato.
Qui ci sono due casi esempio di utilizzo di questa tecnica, con spiegazioni approfondite:
http://shlomoswidler.com/2011/02/play-chicken-with-spot-instances.html
http://shlomoswidler.com/2011/02/recapture-unused-ec2-minutes.html
+1 belle istruzioni, anche se non credo che sia quello che il PO vuole. – kdgregory
Grazie mille per la risposta completa. È fantastico – Sug
Fondamentalmente abbiamo fatto lo stesso, ma usato rsync con escludi invece di dd, ha funzionato anche come un fascino. Un'altra cosa di cui occuparsi (so che è ovvio, ma succede più e più volte): quando si crea il volume EBS, assicurarsi di controllare che si trovi nella stessa regione dell'istanza a cui si desidera collegarlo; -) –