Migrare da una macchina virtuale (VM) a un sistema fisico


124

Alias: Come posso convertire un .vdi o .vmdk in una vera installazione su un disco fisico?

È possibile / fattibile migrare un'installazione di macchina virtuale di Ubuntu su una macchina fisica? Se possibile, quanto sarebbe difficile da realizzare e quali misure dovrei prendere per prepararmi alla migrazione.

Mi piacerebbe fare alcuni test su una VM e se funziona migrare quel sistema su hardware fisico invece di reinstallare tutto. È possibile?


Risposte:


98

Si è possibile. Non è nemmeno così difficile, ci vuole solo un po 'di tempo, un LiveCD di Ubuntu, un adesivo posteriore in plastica e un disco USB esterno (se non si dispone di più di un disco interno).

Fase preliminare: converti il ​​disco in qualcosa di utile

Sia VMWare che VirtualBox (tra gli altri) utilizzano formati di disco che non si prestano bene alla scrittura diretta su disco. È possibile , ma io personalmente sento che è più conveniente per scriverlo a un intermediario, immagine standard prima. Puoi farlo dal tuo sistema attuale senza dover avviare un LiveCD.

  • Carica un terminale e spara in:

    cd /media/wherever-the-image-is/
    
    # for VMWare
    sudo apt-get install qemu-kvm
    qemu-img convert your-vmware-disk.vmdk -O raw disk.img
    
    # For VirtualBox
    VBoxManage clonehd your-virtualbox-disk.vdi disk.img --format RAW
    
  • Spostati in un /media/wherever-the-image-is/disk.imgposto in cui non stai per scrivere. Se stai pianificando di scriverlo sul disco su cui è attualmente seduto, ti consigliamo di incollarlo su un disco interno separato o, peggio, arriva su un disco esterno.

  • Le seguenti istruzioni presuppongono che tu l'abbia spostato /media/dave/disk.img( daveè un disco USB esterno)

  • Prima di scrivere seriamente, assicurati di disporre di backup . È un cliché da dire, ma un errore di battitura e c'è una possibilità molto reale che tu possa danneggiare il tuo sistema. Supponi che le cose andranno male e che tu sia preparato. CloneZilla può aiutarti a eseguire backup di interi dischi se hai un posto dove archiviare quei dati.

Scrivi l'immagine su un disco tutto suo

Ti consigliamo di fare qualcosa del genere. Questo presuppone che sovrascriverete un intero disco. Se vuoi fare un'installazione accanto a Windows, non seguire queste istruzioni! Passa a dopo i proiettili.

  • Avviare in un CD live di Ubuntu e fare clic su Prova Ubuntu.

  • Montare il luogo in cui è memorizzata l'immagine vmdk (ad esempio il disco USB esterno come /media/dave). Evitare Non montare il luogo in cui si desidera scrivere.

  • Quindi andiamo a lavorare:

    sudo dd if=/media/dave/disk.img of=/dev/sdX
    

    Si desidera sostituire sdXcon il percorso corretto per il disco di destinazione. La sudopassword è vuota, basta premere Invio.

  • Puoi quindi aprire gpartedo qualcos'altro e dovresti vedere la tua partizione Ubuntu seduta sul disco. Dovresti essere in grado di espanderlo.

Scrivi l'immagine su un disco insieme a un altro sistema operativo

Questo è forse un modo del tutto più sicuro di fare le cose. L'idea è molto simile a parte fare una corretta installazione di Ubuntu e quindi sincronizzare i file da disk.img.

  • Questa volta il tuo LiveCD dovrà essere la stessa versione di Ubuntu della tua installazione virtuale. Avviare nel Live CD e, di nuovo, fare clic su Installa.

  • Segui l'installazione, ripartiziona le cose come ritieni opportuno. Circa 10 minuti dopo, sarai installato e ti chiederà di riavviare. Non riavviare. Non importa se lo fai accidentalmente, assicurati di tornare nel LiveCD per le istruzioni successive.

  • Montare la partizione della nuova installazione e il disco esterno in cui è stata archiviata la versione disk.imgprecedente (basta fare doppio clic su nautilus).

  • Montare l'ISO disk.img in un terminale:

    sudo mkdir /media/oldinstall
    sudo mount -o loop /media/dave/disk.img /media/oldinstall
    

    -Nota: dopo aver creato il file .img desiderato, a volte quando provi a montarlo come dispositivo loop potresti ricevere il seguente errore

    "Manca la firma NTFS. Impossibile montare '/ dev / loop0': argomento non valido Il dispositivo '/ dev / loop0' non sembra avere un NTFS valido."

    Un file .img a volte contiene un record di avvio principale e una tabella delle partizioni prima della partizione effettiva che potresti voler montare. Quindi è necessario scoprire l'offset della partizione richiesta. Per questo, è possibile utilizzare lo strumento parted . Per un esempio, guarda la risposta di sisco311 in questo link http://ubuntuforums.org/archive/index.php/t-1576011.html

    Quindi, se hai determinato che il tuo offset è 'xxx', puoi montare la tua partizione usando

    sudo mount -o loop,offset=xxx /media/dave/disk.img /media/oldinstall
    
  • Da lì puoi scegliere i file cherry-pick o semplicemente copiare tutto sopra la tua nuova installazione di Ubuntu usando qualcosa come:

    sudo rsync /media/oldinstall/ /media/my-new-install/
    
  • Riavvia e dovresti essere accolto con la vecchia installazione di VMWare, ma su bare metal. Se riscontri problemi con grub, puoi risolverlo tornando a Live CD, eseguendo il chrooting e correggendo le cose .


7
Sei a conoscenza di uno strumento che lo fa automaticamente?
the_drow

1
Per le configurazioni su Windows / VirtualBox, il VBoxManage internalcommands converttoraw your-virtualbox-disk.vdi /dev/sdXcomando continuerà a funzionare. Tutto ciò che serve è eseguire il cd Program Files\Oracle\VirtualBoxprima di eseguire il primo comando.
Agosto

2
@Aust Dubito che /dev/sdXsia un obiettivo valido in Windows. AFAIK sarà \\Device\Harddisk0o qualcosa del genere.
Danatela,

3
VBoxManage internalcommands converttoraw your-virtualbox-disk.vdi /dev/sdXnon funziona In Linux dà l'errore: VBoxManage: error: Cannot create destination file "/dev/sdX": VERR_ALREADY_EXISTS. È necessario utilizzare prima il VBoxManagecomando per inviarlo a un'immagine. Quindi utilizzare DD per mettere l'immagine sul disco fisico.
LD James,

8

Forse non è esattamente quello che stai chiedendo, ma potrebbe realizzare quello che vuoi fare.

Poiché tutte le impostazioni sono memorizzate nella directory principale, è possibile effettuare una copia di backup su un'altra partizione su un disco reale. Dopo aver installato un nuovo Ubuntu su un disco reale, basta eseguire nuovamente il programma di backup per ripristinare la directory principale con tutte le impostazioni intatte.

È possibile utilizzare un programma di backup davvero accurato chiamato Déjà Dup .

Informazioni dal centro software Ubuntu:

Déjà Dup è un semplice strumento di backup. Nasconde la complessità del backup nel modo giusto (crittografato, off-site e normale) e utilizza la duplicità come backend.

Caratteristiche:

  • Supporto per posizioni di backup locali, remote o cloud, come Amazon S3 o Rackspace Cloud Files

  • Crittografa e comprime in modo sicuro i tuoi dati

  • Backup incrementale, che consente di ripristinare da qualsiasi backup specifico

  • Pianifica backup regolari

  • Si integra bene nel desktop GNOME

inserisci qui la descrizione dell'immagine

Avrai finito in meno di due ore!

in bocca al lupo!


1
Sembra facile Posso confermare che funziona davvero in quel modo?
Mateng,

tra l'altro .... l'UID (numeri utente) potrebbe essere diverso a quel punto nel tempo.
Tomachi,

5

Prova UDPCast

L'idea è di trasmettere in streaming l'intero tuo vmdk dalla sua Macchina Virtuale alla macchina fisica, dove è scritto sul disco fisso fisico.

La procedura è descritta di seguito.

Dato che hai un file vmdk, potresti avere una VMWare Workstation a tua disposizione, anche una macchina virtuale completa a cui è collegato vmdk. Esegui la tua macchina virtuale con questo specifico vmdk collegato, ma invece di un normale avvio usa PartedMagic liveCD per eseguire l'avvio.

All'avvio di liveCD, accedere al menu principale e trovare UDPCast Disk Cloning. Le sue finestre di dialogo sono autoesplicative (vedi screenshot) Schermata iniziale della clonazione del disco UDPCast

Dopo aver selezionato questa macchina virtuale come sender, dovresti selezionare quale unità vuoi trasmettere (usando la notazione Unix, come / dev / sda).

Dopo aver avviato il sender, è necessario avviare receiveranche. Dato che hai un hdd fisico, suppongo, hai anche un PC completo con questo hdd collegato ad esso. Stessa cosa qui: è necessario avviare liveCD UDPCast Disk Cloningselezionando receiverquesta volta e l'hdd fisico appropriato.

Vale la pena notare che è necessario prendere tutte le disposizioni necessarie per disporre della connettività di rete tra la macchina virtuale e l'hardware fisico. Dovresti prendere le precauzioni necessarie se il tuo vmdk contiene dati privati, poiché i suoi contenuti sarebbero effettivamente in streaming sulla tua rete. Un'altra cosa è che il tuo hdd di destinazione non dovrebbe avere meno capacità di archiviazione, rispetto alla capacità del tuo vmdk. È ovvio, ma vale anche la pena notare che la tua immagine è disposta uno a uno sul tuo hdd di destinazione e devi eseguire operazioni adeguate con gparted o simili per sfruttare una maggiore capacità del tuo nuovo hdd.


Vorrei sottolineare che questo metodo è davvero semplice e relativamente facile da eseguire. Vale a dire, l'unica fase di preparazione che devi compiere è preparare il tuo LiveCD con UDPCast o qualsiasi altro LiveCD, che è sufficiente per scaricare ed eseguire UDPCast. Se hai qualche immagine hd virtuale, l'hai sicuramente utilizzata in una macchina virtuale, che è già impostata e pronta, d'altra parte hai preparato il tuo sistema fisico ed è anche pronto per l'attività.
PF4 Pubblico

C'è di più: UDPCast potrebbe essere eseguito direttamente da PXE. udpcast.linux.lu/bootloader.html#pxe
PF4 Pubblico

4

Se hai installato VirtualBox, puoi convertire il file VDI (immagine dell'unità VirtualBox) nel formato IMG usando il VBoxManagecomando, quindi copiarlo sul disco fisico, ad es.

VBoxManage clonehd --format RAW file.vdi file.img

Quindi è possibile utilizzare il ddcomando per copiare il file nella partizione fisica:

dd if=./file.img of=/dev/<partition_here>

Nota: utilizzare sudo se necessario. Fare attenzione quando si specifica il dispositivo giusto in / dev.


0

Se il nuovo disco fisico è collegato alla macchina su cui si trova il disco virtuale della VM, è possibile convertire VDI in fisico senza una conversione intermedia, probabilmente risparmiando un sacco di tempo e spazio su disco. Ciò presuppone che il disco fisico sia uguale o maggiore della dimensione massima del disco virtuale. Nel mio caso, l'obiettivo era convertire un VDI in uno zvol ZFS, ma l'approccio dovrebbe essere lo stesso con qualsiasi dispositivo a blocchi.

Per prima cosa crea un file VMDK che punta al tuo dispositivo a blocchi:

VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sdX

Quindi (con l'arresto della VM!) Puoi clonare il VDI sul VMDK:

VBoxManage clonemedium --existing virtual.vdi physical.vmdk

Ci vorrà un po 'di tempo ... Al termine, è possibile eliminare il file VMDK poiché è stato utilizzato solo come puntatore per VirtualBox per trovare il dispositivo fisico.

Nel mio caso, il nuovo zvol aveva esattamente le stesse dimensioni del disco virtuale. Dato che il tuo disco fisico è probabilmente diverso, dovresti utilizzare un qualche tipo di meccanismo di ridimensionamento della partizione per riempire l'intero disco. Gparted o qualcosa del genere. Dovresti essere in grado di indicarlo sul dispositivo fisico / dev / sdX mentre sei ancora collegato al computer VM in modo da non dover ricorrere all'avvio del CD come host fisico.

Una volta terminato il ridimensionamento, inserire l'unità nella macchina fisica, incrociare le dita e accendere.

Nel caso in cui si desideri continuare a utilizzare l'unità fisica con VirtualBox, tenere in giro VMDK e utilizzare VBoxManage storageattachper collegarlo alla VM.


Sembra che funzioni, ma i dati vengono danneggiati in qualche modo e il sistema operativo non si avvia correttamente.
Sarge Borsch,
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.