Importare manualmente i dischi di avvio


Il metodo consigliato per importare le immagini del disco di avvio in Compute Engine dai data center fisici, dalle macchine virtuali (VM) sulla tua workstation locale o dalle VM in esecuzione su un'altra piattaforma cloud è utilizzare lo strumento di importazione dei dischi virtuali, che automatizza tutti i passaggi descritti in questa guida.

Se preferisci non utilizzare lo strumento automatico, puoi seguire le istruzioni manuali passo passo riportate in questa guida.

Questa procedura di importazione delle immagini può importare un solo disco alla volta e questa guida si concentra su come importare le immagini dei dischi di avvio.

Importa i dischi di avvio esistenti solo se non riesci a eseguire la compilazione o la migrazione delle tue app in modo che vengano eseguite sulle immagini pubbliche di Compute Engine. Le immagini pubbliche sono già configurate per l'esecuzione nell'ambiente Compute Engine, quindi puoi eseguire app su queste immagini senza doverti preoccupare delle configurazioni del bootloader e del sistema operativo. Tuttavia, potresti dover importare le tue immagini del disco di avvio nei seguenti scenari:

  • Le tue app richiedono un sistema operativo che non è fornito come immagine pubblica.
  • Hai già un insieme di immagini di base che utilizzi per creare VM in un'altra piattaforma cloud.
  • Il lavoro necessario per eseguire la migrazione del codice dell'app a una delle immagini pubbliche è maggiore del lavoro necessario per completare la procedura di importazione dell'immagine del disco di avvio.

In alternativa, puoi ricevere assistenza per la migrazione delle tue VM utilizzando i servizi di partner. Per ulteriori informazioni, consulta la pagina Migrazione delle VM in Compute Engine.

Panoramica

Per importare un'immagine del disco di avvio in Compute Engine, segui la procedura riportata di seguito:

  1. Pianifica il percorso di importazione. Devi identificare dove preparerai l'immagine del disco di avvio prima di caricarla e come ti connetterai a quell'immagine dopo l'avvio nell'ambiente Compute Engine.
  2. Prepara il disco di avvio in modo che possa avviarsi nell'ambiente Compute Engine e che tu possa accedervi dopo l'avvio.
  3. Crea e comprime il file immagine del disco di avvio.
  4. Carica il file immagine su Cloud Storage e importa l'immagine in Compute Engine come nuova immagine personalizzata.
  5. Utilizza l'immagine importata per creare un'istanza VM e assicurati che sia avviata correttamente.
  6. Se l'immagine non si avvia correttamente, puoi risolvere il problema collegando l'immagine disco di avvio a un'altra istanza e riconfigurandola.
  7. Ottimizza l'immagine e installa l'ambiente guest in modo che l'immagine del sistema operativo importato possa comunicare con il server di metadati e utilizzare funzionalità aggiuntive di Compute Engine.

Requisiti

Requisiti per il disco di avvio

Per poter essere importati in Compute Engine, i dischi di avvio devono soddisfare i seguenti requisiti:

  • Ti consigliamo di installare tutti gli aggiornamenti disponibili nella VM di origine.
  • Se hai creato un kernel del sistema operativo personalizzato, questo deve soddisfare i requisiti di configurazione hardware e del kernel. La maggior parte delle distribuzioni Linux standard soddisfa già questi requisiti, pertanto questo requisito è rivolto solo agli utenti avanzati che creano i propri sistemi operativi personalizzati da eseguire su Compute Engine.
  • Il disco di avvio non deve essere più grande di 2048 GB (2 TB).
  • Il disco di avvio importato deve avere una tabella delle partizioni MBR funzionale o una configurazione ibrida di una tabella delle partizioni GPT con un bootloader MBR.
  • La partizione principale del disco di avvio può essere in qualsiasi formato, purché si avvii correttamente dal bootloader MBR.
  • Il bootloader sul disco di avvio non deve avere argomenti della riga di comando del kernel quiet, rhgb o splashimage=. Compute Engine non supporta le schermate di benvenuto all'avvio. Puoi rimuovere questi valori dalla configurazione GRUB durante il passaggio di configurazione del bootloader.
  • Il sistema operativo sul disco di avvio deve supportare ACPI.

Requisiti per il file immagine

Il file immagine importato deve soddisfare i seguenti requisiti:

  • Esegui un controllo di coerenza sull'immagine del disco utilizzando il comando qemu-img check sul disco.
  • Per esportare il disco virtuale, utilizza la funzione di esportazione del software di gestione della VM. Non copiare il file VMDK dal file system del gestore delle VM.
  • Il file immagine deve essere di un'immagine supportata.
  • Il nome file dell'immagine disco deve essere disk.raw.
  • Il file immagine RAW deve avere una dimensione in un incremento di 1 GB. Ad esempio, il file deve avere dimensioni pari a 10 GB o 11 GB, ma non 10,5 GB.
  • Il file compresso deve essere un file .tar.gz che utilizzi la compressione gzip e l'opzione --format=oldgnu per l'utilità tar (manuale).

Requisiti per il progetto

Quando crei un'istanza VM da un'immagine importata, l'istanza deve essere in grado di accedere al repository dei pacchetti esterni per il sistema operativo configurato sul disco di avvio.

Puoi accedere a questo repository direttamente dal fornitore del sistema operativo o tramite una connessione di rete alla tua infrastruttura on-premise che ospita questi repository.

Per configurare l'accesso al repository esterno, completa uno dei seguenti passaggi nel tuo progetto:

Limitazioni

Per importare i dischi utilizzando reti che non consentono indirizzi IP esterni, devi soddisfare requisiti di rete aggiuntivi. Per ulteriori informazioni, consulta Importare i dischi utilizzando reti che non consentono indirizzi IP esterni.

Costi di importazione delle immagini

Prima di iniziare, comprendi i costi della procedura di importazione. Non è previsto alcun costo per il trasferimento di dati di rete in entrata per il caricamento del file immagine del disco di avvio su Cloud Storage e non è previsto alcun costo per l'importazione dell'immagine come immagine personalizzata di Compute Engine. Tuttavia, esistono costi per alcuni passaggi specifici della procedura di importazione:

  • Il costo per archiviare temporaneamente i file di immagini compresse in un bucket standard Cloud Storage. Devi utilizzare un bucket Cloud Storage temporaneo per archiviare i file prima di poterli importare come immagini Compute Engine personalizzate. Puoi rimuovere il bucket dopo aver completato la procedura di importazione.
  • Il costo per l'archiviazione delle immagini personalizzate dopo aver completato l'importazione in Compute Engine.
  • Il potenziale costo per i trasferimenti di dati in uscita sul tuo data center esistente, sul tuo fornitore di servizi di rete o sul tuo attuale servizio cloud. I file immagine possono essere molto grandi anche dopo la compressione, pertanto la loro copia su Compute Engine potrebbe comportare costi significativi per il trasferimento di dati in uscita su alcune piattaforme.
  • Il costo dei dischi permanenti e delle istanze VM di Compute Engine in cui puoi configurare l'immagine dopo averla importata in Compute Engine.

Pianifica e prepara il percorso di importazione

Il metodo di importazione del disco dipende dalla configurazione attuale del sistema che vuoi spostare su Compute Engine. Devi disporre di un sistema in cui puoi creare e comprimere il file immagine del disco di avvio, nonché di un sistema in cui puoi caricare il file immagine su Cloud Storage. Prendi in considerazione i seguenti elementi quando pianifichi il percorso di importazione:

  • Il percorso di importazione dell'immagine richiede la configurazione del disco di avvio in un ambiente operativo funzionante. Questo processo può causare l'impossibilità di avviare il disco di avvio al di fuori di un ambiente Compute Engine. È tua responsabilità assicurarti di non perdere dati sui dischi o di interrompere le app aziendali funzionali durante l'importazione del sistema in Compute Engine.
  • Identifica la configurazione di accesso al sistema esistente e pianifica come accedere al sistema dopo averlo importato in Compute Engine.
    • Se il tuo sistema ha configurazioni SSH o di accesso utente esistenti, puoi configurare solo il bootloader e in un secondo momento configurare l'immagine in modo che funzioni in modo ottimale su Compute Engine. Puoi accedere all'istanza tramite la configurazione SSH esistente o tramite un accesso diretto dell'utente nella console seriale interattiva.
    • Se il sistema non dispone di configurazioni SSH o di accesso utente esistenti, devi configurare il disco di avvio in modo da potervi accedere dopo l'avvio su Compute Engine.
  • La durata del processo di importazione può richiedere diverse ore o giorni, a seconda delle dimensioni del disco di avvio e della velocità della connessione di rete.
  • Il sistema in cui crei e comprimi l'immagine del disco di avvio deve avere spazio di archiviazione sufficiente per creare i file immagine su un dispositivo di archiviazione diverso dal disco di avvio stesso. In genere, i file immagine e tar.gz occupano 2-3 volte lo spazio del disco di avvio stesso.
  • Comprendi la struttura del file system del sistema esistente che vuoi importare.
    • Se i file del sistema operativo e delle app sono distribuiti su più dischi, importali singolarmente e utilizza ogni immagine per creare un disco permanente univoco per l'istanza VM Compute Engine.
    • Se i sistemi hanno volumi di avvio in una configurazione RAID in cui più dischi agiscono come un singolo volume logico, crea una singola immagine dall'intero array anziché creare un'immagine per ogni disco nell'array. I dischi permanenti di Compute Engine eliminano la necessità di configurazioni RAID.
  • Se il sistema cripta i contenuti del disco di avvio con un Trusted Platform Module o con crittografia a livello di software, decripta il disco di avvio prima di creare il file immagine del disco di avvio. Google non può leggere le immagini se sono criptate. Crittografiamo le immagini dopo il caricamento e ti consentiamo di fornire le tue chiavi di crittografia per i dischi permanenti e i bucket Cloud Storage.

Dopo aver identificato o creato un sistema in cui puoi completare il processo di importazione, connettiti al sistema e configura il bootloader.

Prepara l'immagine del disco di avvio

In un sistema in esecuzione, prepara l'immagine del disco di avvio in modo che possa funzionare in un ambiente Compute Engine.

  • Configura il bootloader sul disco di avvio in modo che l'immagine possa avviarsi su Compute Engine.
  • Configura l'accesso SSH o l'accesso utente sul disco di avvio in modo da potervi accedere dopo averlo importato in Compute Engine e averlo avviato come istanza VM.

Questa procedura può rendere il sistema non avviabile al di fuori di Compute Engine, quindi la best practice è completare questo passaggio su un sistema isolato utilizzando una copia del disco di avvio che vuoi importare.

Configura il bootloader

Configura il bootloader sul sistema in modo che possa avviarsi su Compute Engine.

  1. Connettiti al terminale del sistema con il disco di avvio che prevedi di importare.

  2. Modifica il file di configurazione GRUB. In genere questo file si trova in /etc/default/grub, ma su alcune distribuzioni precedenti potrebbe trovarsi in una directory non standard.

  3. Apporta le seguenti modifiche al file di configurazione GRUB:

    • Rimuovi tutte le righe che contengono splashimage=. Compute Engine non supporta le schermate di benvenuto all'avvio.
    • Rimuovi gli argomenti della riga di comando del kernel rhgb e quiet.
    • Aggiungi console=ttyS0,38400n8d agli argomenti a riga di comando del kernel, in modo che l'istanza possa interagire con la console seriale.
  4. Rigenera il file grub.cfg. Utilizza uno dei seguenti comandi, a seconda della distribuzione.

    • Debian e Ubuntu: sudo update-grub
    • RHEL, CentOS, SUSE, openSUSE: sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  5. Modifica il file /etc/fstab e rimuovi i riferimenti a tutti i dischi e le partizioni diversi dal disco di avvio stesso e dalle partizioni su quel disco di avvio. Se le voci in /etc/fstab non sono valide, la procedura di avvio del sistema potrebbe interrompersi.

Dopo aver configurato il bootloader, crea e comprime il file immagine del disco.

Configura l'accesso SSH o all'accesso utente sull'immagine

Dopo aver eseguito l'immagine in Compute Engine come istanza VM, devi avere un modo per accedere a quell'istanza. Puoi connetterti all'istanza utilizzando una configurazione SSH esistente o accedere utilizzando un nome utente e una password connettendoti alla console seriale.

Completa la configurazione dell'accesso SSH o utente prima di creare e comprimere il file immagine del disco.

Crea e comprime il file immagine del disco

Crea e comprime il file immagine del disco di avvio per il sistema che vuoi importare in Compute Engine. La procedura per creare e comprimere il file immagine è diversa a seconda della piattaforma su cui operano i sistemi.

Generic

Su quasi tutti i sistemi, puoi utilizzare questa procedura per creare un file immagine RAW che puoi importare in Compute Engine. Puoi completare questa procedura sul sistema in esecuzione che stai importando oppure collegare il disco di avvio come disco secondario su un altro sistema e creare l'immagine del disco di avvio dal disco fermo. Assicurati di avere spazio di archiviazione sufficiente per memorizzare temporaneamente i file immagine del disco. Questo esempio acquisisce un'immagine da un sistema in esecuzione.

  1. Connettiti al terminale del sistema su cui è presente il disco di avvio che hai intenzione di importare.

  2. Utilizza il comando lsblk per identificare il disco di avvio di origine da cui vuoi creare un'immagine e la posizione in cui hai spazio sufficiente per scrivere i file immagine. In questo esempio, /dev/sda è il disco di avvio di origine e /dev/sdb è un disco secondario di grandi dimensioni montato nella directory /tmp. Anche se /dev/sda è in esecuzione, puoi comunque creare un'immagine. È preferibile eseguire questa operazione su un sistema inattivo che non stia elaborando attivamente dati o eseguendo app.

    lsblk
    
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0  100G  0 disk
    ├─sda1   8:1    0   96G  0 part /
    ├─sda2   8:2    0    1K  0 part
    └─sda3   8:5    0    4G  0 part [SWAP]
    sdb      8:16   0  500G  0 disk /tmp
    sr0     11:0    1 1024M  0 rom
    
  3. Crea il file immagine dal disco di avvio.

    sudo dd if=/dev/sda of=/tmp/disk.raw bs=4M conv=sparse
    
  4. Passa alla directory in cui hai scritto il file disk.raw.

    cd /tmp
    
  5. Comprimi il disco non elaborato in formato tar.gz. Questo passaggio comprime il file immagine in modo da poterlo caricare più rapidamente su Cloud Storage. Su OSX, installa gtar e utilizzalo per questo passaggio anziché tar.

    tar --format=oldgnu -Sczf /tmp/compressed-image.tar.gz disk.raw
    

AWS EC2

Per saperne di più sull'importazione di immagini AMI (Amazon Machine Image) e di immagini dei dischi virtuali da Amazon Web Services (AWS) in Compute Engine, consulta Importare immagini da AWS.

VirtualBox

Se hai preparato il sistema in un ambiente VirtualBox, puoi utilizzare lo strumento VBoxManage per convertire un'immagine disco .vdi o .qcow2 in formato disk.raw.

  1. Arresta la macchina virtuale ospite di VirtualBox che vuoi importare, sostituendo GUEST_NAME con il nome della macchina virtuale ospite. Puoi spegnere la macchina guest con l'interfaccia di VirtualBox o utilizzando l'utilità VBoxManage.

    VBoxManage controlvm GUEST_NAME acpipowerbutton
  2. Converti l'immagine ospite in formato RAW utilizzando l'utilità VBoxManage, sostituendo GUEST_NAME con il percorso dell'immagine ospite. L'immagine dell'ospite può essere fornita come file vdi o qcow2:

    VBoxManage clonemedium GUEST_NAME ~/disk.raw --format RAW
  3. Comprimi il disco non elaborato in formato tar.gz. Questo passaggio comprime il file immagine in modo da poterlo caricare più rapidamente su Cloud Storage. Su OSX, installa gtar e utilizzalo per questo passaggio anziché tar.

    sudo tar --format=oldgnu -Sczf /tmp/compressed-image.tar.gz disk.raw
    

Il file immagine è compresso e pronto per essere caricato su Cloud Storage.

Importa l'immagine nell'elenco delle immagini personalizzate

Carica il file su Cloud Storage e importa l'immagine nell'elenco delle immagini personalizzate. Se vuoi, puoi criptare l'immagine durante il passaggio di importazione dell'immagine.

Importa l'immagine con la console o gli strumenti Google Cloud CLI:

Console

Copia il file compressed-image.tar.gz sulla tua workstation locale e utilizza la console Google Cloud per creare un bucket e caricare il file.

  1. Nella console Google Cloud, vai alla pagina del browser Cloud Storage.

    Vai al browser

  2. Nella parte superiore della pagina, fai clic su Crea bucket.
  3. Specifica un nome univoco per il bucket, la classe di archiviazione Standard e una posizione in cui vuoi archiviare i file immagine.
  4. Fai clic su Crea per creare il bucket. La pagina del browser si apre nel nuovo bucket.
  5. Nella parte superiore della pagina, fai clic su Carica file.
  6. Nella finestra di dialogo dei file, seleziona il file compressed-image.tar.gz che hai scaricato dal sistema. Il file viene caricato dalla tua workstation locale. Questo passaggio può richiedere diverse ore, a seconda delle dimensioni del file immagine compresso e della velocità della connessione di rete.

Dopo aver caricato l'immagine su Cloud Storage, importa il file immagine nel tuo elenco di immagini personalizzate.

  1. Nella console Google Cloud, vai alla pagina Immagini.

    Vai a Immagini

  2. Nella parte superiore della pagina, fai clic su Crea immagine.
  3. Nel campo Nome, specifica un nome univoco per l'immagine.
  4. Se vuoi, specifica una famiglia di immagini per la nuova immagine o configura impostazioni di crittografia specifiche per l'immagine.
  5. Fai clic sul menu Origine e seleziona File Cloud Storage.
  6. Inserisci il percorso del file compressed-image.tar.gz che hai caricato su Cloud Storage.

    BUCKET_NAME/compressed-image.tar.gz
  7. Fai clic su Crea per importare l'immagine. La procedura può richiedere diversi minuti, a seconda delle dimensioni dell'immagine del disco di avvio.

L'immagine è ora inclusa nella pagina Immagini. Puoi creare una VM utilizzando questa immagine importata. Se si verifica un errore di avvio, verifica e assicurati di aver configurato correttamente il bootloader.

gcloud e gcloud storage

Utilizza gcloud CLI per caricare il file immagine del disco di avvio compresso. Puoi completare questa procedura sul sistema in cui hai creato l'immagine del disco di avvio oppure puoi copiare il file su un altro sistema e completare la procedura di caricamento lì.

  1. Installa e inizializza gcloud CLI sul sistema da cui prevedi di caricare il compressed-image.tar.gz.

  2. Utilizza la gcloud CLI per creare un nuovo bucket Cloud Storage.

    gcloud storage buckets create gs://BUCKET_NAME
  3. Carica il file compressed-image.tar.gz nel nuovo bucket.

    gcloud storage cp compressed-image.tar.gz gs://BUCKET_NAME
  4. Importa il file immagine come nuova immagine personalizzata.

    gcloud compute images create IMAGE_NAME --source-uri gs://BUCKET_NAME/compressed-image.tar.gz
    

    Sostituisci quanto segue:

    • IMAGE_NAME: il nome dell'immagine importata.
    • BUCKET_NAME: il nome del bucket in cui è memorizzata l'immagine importata.

L'immagine è ora inclusa nell'elenco delle immagini personalizzate. Puoi creare una VM utilizzando questa immagine importata. Se si verifica un errore di avvio, verifica e assicurati di aver configurato correttamente il bootloader.

gcloud compute images list --no-standard-images
NAME                                            PROJECT                  FAMILY                    DEPRECATED  STATUS
[IMAGE_NAME]                                    [PROJECT_ID]                                                   READY

Testa l'immagine importata per assicurarti che funzioni

Verifica che l'immagine importata funzioni come previsto. Crea una VM con un disco di avvio che utilizza l'immagine importata.

Console

  1. Nella console Google Cloud, vai alla pagina Crea un'istanza.

    Vai a Crea un'istanza

  2. Nella sezione Disco di avvio, fai clic su Cambia e poi:

    1. Seleziona la scheda Immagini personalizzate.
    2. Per selezionare il progetto di immagini, fai clic su Seleziona un progetto, quindi svolgi i seguenti passaggi:
      1. Seleziona il progetto che contiene l'immagine.
      2. Fai clic su Apri.
    3. Nell'elenco Immagine, fai clic sull'immagine importata.
    4. Seleziona il tipo e le dimensioni del disco di avvio.
    5. Per confermare le opzioni del disco di avvio, fai clic su Seleziona.
  3. Fai clic su Crea.

gcloud

gcloud compute instances create VM_NAME --zone ZONE --image IMAGE_NAME

Sostituisci quanto segue:

  • VM_NAME: un nome univoco per la VM.
  • ZONE: la zona in cui hai creato il disco autonomo.
  • IMAGE_NAME: il nome dell'immagine importata.

Dopo aver creato la VM, verifica che sia stata avviata correttamente. Controlla l'output della porta seriale:

Console

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze

  2. Nell'elenco delle VM, fai clic sul nome della VM che hai creato dall'immagine importata. Viene visualizzata la pagina dei dettagli della VM.
  3. Nella sezione Log, fai clic sulla porta seriale appropriata per espanderla e visualizzare l'output della porta seriale per questa VM.

Se la VM si è fermata in Booting from Hard Disk 0..., devi risolvere i problemi dall'ambiente Compute Engine oppure puoi riconfigurare il disco di avvio sul sistema originale e ripetere la procedura di importazione.

gcloud

gcloud compute instances get-serial-port-output VM_NAME

Se la VM si è fermata in Booting from Hard Disk 0..., devi risolvere i problemi dall'ambiente Compute Engine oppure puoi riconfigurare il disco di avvio sul sistema originale e ripetere la procedura di importazione.

Puoi anche testare la VM connettendoti. Connettiti alla VM tramite una delle seguenti opzioni:

  • SSH: se la VM aveva una configurazione SSH funzionale, puoi connetterti alla VM utilizzando SSH e la tua chiave privata. Puoi trovare l'indirizzo IP dell'istanza VM nella pagina Istanze VM.
  • Console seriale: se devi accedere direttamente alla VM senza SSH, puoi attivare la console seriale e accedere con un nome utente e una password.

Passaggi successivi