Importa manualmente i dischi di avvio

Il modo consigliato per importare le immagini del disco di avvio in Compute Engine dai tuoi 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 di questa guida.

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

Questo processo di importazione delle immagini può importare un solo disco alla volta e questa guida è incentrata sull'importazione delle immagini del disco di avvio.

Importa i dischi di avvio esistenti solo se non sei in grado di creare o migrare le 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, pertanto 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 app richiedono un sistema operativo non fornito come immagine pubblica.
  • Disponi già di un set di immagini di base per creare VM in un'altra piattaforma cloud.
  • Il lavoro necessario per eseguire la migrazione del codice dell'app in una delle immagini pubbliche è maggiore di quello necessario per completare il processo di importazione dell'immagine del disco di avvio.

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

Panoramica

Per importare un'immagine disco di avvio in Compute Engine, utilizza il seguente processo:

  1. Pianifica il percorso di importazione. Devi identificare dove preparerai l'immagine del disco di avvio prima di caricarla e come ti connetterai all'immagine dopo l'avvio nell'ambiente Compute Engine.
  2. Prepara il disco di avvio in modo che possa essere avviato nell'ambiente di Compute Engine e accessibile dopo l'avvio.
  3. Crea e comprimi il file immagine del disco di avvio.
  4. Carica il file immagine in Cloud Storage e importa l'immagine in Compute Engine come nuova immagine personalizzata.
  5. Utilizza l'immagine importata per creare un'istanza VM e assicurarti che si avvii correttamente.
  6. Se l'immagine non si avvia correttamente, puoi risolvere il problema allegando l'immagine del 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 importata possa comunicare con il server di metadati e utilizzare funzionalità aggiuntive di Compute Engine.

Requisiti

Requisiti per il disco di avvio

Per importare i dischi di avvio 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 superare i 2048 GB (2 TB).
  • Il disco di avvio che importi deve avere una tabella di partizione MBR funzionante o una configurazione ibrida di una tabella delle partizioni GPT con un bootloader MBR.
  • La partizione principale sul disco di avvio può essere nel formato che preferisci, purché venga avviata 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 iniziali all'avvio. Puoi rimuovere questi valori dalla configurazione GRUB durante il passaggio della configurazione del bootloader.
  • Il sistema operativo sul disco di avvio deve supportare ACPI.

Requisiti per il file immagine

Il file immagine che importi deve soddisfare i seguenti requisiti:

  • Esegui un controllo di coerenza sull'immagine disco utilizzando il comando qemu-img check sul disco.
  • Per esportare il disco virtuale, utilizza la funzione di esportazione del software di gestione delle VM. Non copiare il file VMDK dal file system del tuo gestore VM.
  • Il file immagine deve avere un'immagine supportata.
  • Il nome del file dell'immagine disco deve essere disk.raw.
  • Le dimensioni del file immagine RAW devono essere aumentate di 1 GB. Ad esempio, il file deve essere di 10 GB o 11 GB ma non di 10,5 GB.
  • Il file compresso deve essere un file .tar.gz che utilizza 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 esterno per il sistema operativo configurato sul disco di avvio.

È possibile accedere a questo repository direttamente dal fornitore del sistema operativo o tramite una connessione di rete all'infrastruttura on-premise che ospita questi repository.

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

  • Configura un indirizzo IP esterno che può essere utilizzato dalle istanze VM per connettersi alla tua rete on-premise locale o ad altre reti esterne.
  • Configura un bastion host, un forwarding TCP VPN o IAP che può essere utilizzato per connettersi alla tua rete on-premise locale o ad altre reti esterne.

Limitazioni

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

Costi di importazione delle immagini

Prima di iniziare, valuta i costi del processo di importazione. Non è previsto alcun costo per il trasferimento dei dati di rete in entrata per caricare il file immagine del disco di avvio su Cloud Storage e non è previsto alcun costo per importare questa immagine come immagine personalizzata di Compute Engine. Tuttavia, sono previsti dei costi per alcuni passaggi specifici della procedura di importazione:

  • Il costo per archiviare temporaneamente i file immagine compressi in un bucket standard di Cloud Storage. Devi utilizzare un bucket Cloud Storage temporaneo per conservare i file prima di poterli importare come immagini Compute Engine personalizzate. Puoi rimuovere il bucket dopo aver completato il processo di importazione.
  • Il costo per l'archiviazione delle immagini personalizzate dopo che hai completato l'importazione in Compute Engine.
  • Il costo potenziale dei trasferimenti di dati in uscita sul data center esistente, sul provider di rete o sul tuo servizio cloud attuale. I file immagine possono essere molto grandi anche dopo essere stati compressi, quindi copiarli su Compute Engine potrebbe comportare costi significativi per il trasferimento dei 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 per importare il disco dipende dalla configurazione attuale del sistema che vuoi spostare in Compute Engine. Hai bisogno di un sistema in cui creare e comprimere il file immagine del disco di avvio e di un sistema in cui caricare il file immagine su Cloud Storage. Tieni presente 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 del sistema operativo funzionante. Questo processo può impedire l'avvio del disco di avvio al di fuori di un ambiente Compute Engine. È tua responsabilità assicurarti di non perdere dati sui dischi o interrompere le app aziendali funzionali durante l'importazione del sistema in Compute Engine.
  • Identifica la configurazione esistente dell'accesso al sistema e pianifica la modalità di accesso al sistema dopo averlo importato in Compute Engine.
    • Se nel sistema sono già presenti configurazioni di accesso utente o SSH, puoi configurare solo il bootloader e poi configurare l'immagine in modo che venga eseguita in modo ottimale su Compute Engine. Puoi accedere all'istanza tramite la configurazione SSH esistente o tramite un accesso utente diretto nella console seriale interattiva.
    • Se il sistema non dispone di configurazioni di accesso utente o SSH esistenti, devi configurare il disco di avvio in modo da potervi accedere dopo l'avvio in Compute Engine.
  • La durata del processo di importazione può richiedere diverse ore o diversi 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 disporre di spazio di archiviazione sufficiente per creare i file immagine su un dispositivo di archiviazione diverso dal disco di avvio stesso. In genere l'immagine e i file tar.gz utilizzano da due a tre volte più spazio rispetto al disco di avvio.
  • Comprendi la struttura del file system del sistema esistente che desideri importare.
    • Se i file del tuo sistema operativo e delle tue app sono distribuiti su più dischi, importa ognuno di questi dischi singolarmente e utilizza ogni immagine per creare un disco permanente univoco per la tua istanza VM di Compute Engine.
    • Se i tuoi 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'unica 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 la 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 tue immagini se sono criptate. Le immagini vengono criptate dopo che le hai caricate e tu puoi fornire le tue chiavi di crittografia per i dischi permanenti e i bucket Cloud Storage.

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

Prepara l'immagine disco di avvio

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

  • Configura il bootloader sul disco di avvio per consentire l'avvio dell'immagine su Compute Engine.
  • Configura l'accesso SSH o il login utente sul disco di avvio in modo da potervi accedere dopo l'importazione in Compute Engine e l'avvio come istanza VM.

Questo processo può rendere il sistema non avviabile al di fuori di Compute Engine, quindi la best practice prevede di 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. Collegati al terminale sul sistema con il disco di avvio che intendi importare.

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

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

    • Rimuovi tutte le righe con splashimage=. Compute Engine non supporta le schermate iniziali all'avvio.
    • Rimuovi gli argomenti della riga di comando del kernel rhgb e quiet.
    • Aggiungi console=ttyS0,38400n8d agli argomenti della riga di comando del kernel, in modo che l'istanza possa interagire con la console seriale.
  4. Rigenera il file grub.cfg. Usa 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, ad eccezione del disco di avvio e delle partizioni su quel disco. Le voci non valide in /etc/fstab possono causare l'arresto del processo di avvio del sistema.

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

Configura l'accesso SSH o di accesso utente per l'immagine

Dopo che l'immagine è in esecuzione in Compute Engine come istanza VM, devi disporre di un modo per accedere all'istanza. Puoi connetterti all'istanza utilizzando una configurazione SSH esistente oppure accedere con un nome utente e una password connettendoti alla console seriale.

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

Crea e comprimi il file immagine disco

Crea e comprimi il file dell'immagine del disco di avvio per il sistema che vuoi importare in Compute Engine. Il processo per creare e comprimere il file immagine varia a seconda della piattaforma in cui funzionano i sistemi.

Generico

In quasi tutti i sistemi, puoi utilizzare questo processo per creare un file immagine RAW da importare in Compute Engine. Puoi completare questo processo sul sistema in esecuzione che stai importando oppure puoi collegare il disco di avvio come disco secondario su un altro sistema e creare l'immagine del disco di avvio dal disco arrestato. Assicurati di avere spazio di archiviazione disponibile sufficiente per conservare temporaneamente i file immagine disco. Questo esempio prende un'immagine da un sistema in esecuzione.

  1. Connettiti al terminale sul sistema con il disco di avvio che prevedi 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 disponi di spazio sufficiente per scrivere i file immagine. Per 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 da lì. È preferibile eseguire questa operazione su un sistema silenzioso che non elabora attivamente dati o non esegue 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 nel formato tar.gz. Questo passaggio comprime il file immagine in modo da poterlo caricare più rapidamente su Cloud Storage. In OSX, installa gtar e utilizzalo per questo passaggio anziché tar.

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

EC2 AWS

Per saperne di più sull'importazione di Amazon Machine Image (AMI) e di immagini di 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 guest VirtualBox che vuoi importare, sostituendo GUEST_NAME con il nome della macchina guest. Puoi arrestare la macchina guest con l'interfaccia 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. Questa immagine ospite può essere fornita come file vdi o qcow2:

    VBoxManage clonemedium GUEST_NAME ~/disk.raw --format RAW
  3. Comprimi il disco non elaborato nel 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 nel tuo elenco di immagini personalizzate

Carica il file in Cloud Storage e importa l'immagine nel tuo elenco di immagini personalizzate. Se vuoi, puoi criptare l'immagine durante la fase di importazione dell'immagine.

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

Console

Copia il file compressed-image.tar.gz sulla 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 di 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 località in cui archiviare i file immagine.
  4. Fai clic su Crea per creare il bucket. La pagina del browser apre il nuovo bucket.
  5. Nella parte superiore della pagina, fai clic su Carica file.
  6. Nella finestra di dialogo del file, seleziona il file compressed-image.tar.gz che hai scaricato dal sistema. Il file viene caricato dalla 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 in 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. Facoltativamente, 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 in Cloud Storage.

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

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

gcloud e gsutil

Usa lo strumento gsutil e gcloud CLI per caricare il file immagine del disco di avvio compresso. Puoi completare questa procedura nel sistema in cui hai creato l'immagine disco di avvio oppure puoi copiare il file in un altro sistema e completare lì il processo di caricamento.

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

  2. Usa lo strumento gsutil per creare un nuovo bucket Cloud Storage.

    gsutil mb gs://BUCKET_NAME
  3. Carica il file compressed-image.tar.gz nel nuovo bucket.

    gsutil 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 è archiviata 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 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. Creare 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 ed esegui le seguenti operazioni:

    1. Seleziona la scheda Immagini personalizzate.
    2. Per selezionare il progetto di immagine, fai clic su Seleziona un progetto ed esegui le seguenti operazioni:
      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: nome univoco della 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 si sia 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. Si apre la pagina dei dettagli della VM.
  3. Nella sezione Log, fai clic sulla porta seriale appropriata per espandere e visualizzare l'output della porta seriale per questa VM.

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

gcloud

gcloud compute instances get-serial-port-output VM_NAME

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

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

  • SSH: se la VM aveva una configurazione SSH funzionante, 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 alla VM direttamente senza SSH, puoi abilitare la console seriale e accedere con un nome utente e una password.

Passaggi successivi