Utilizza un'immagine macchina per archiviare tutte le configurazioni, i metadati, le autorizzazioni e i dati provenienti da più dischi per un'istanza Compute Engine. L'istanza che utilizzi per creare un'immagine macchina è detta istanza di origine.
Per informazioni su come e quando utilizzare le immagini macchina, vedi l'apposita sezione.
Questo documento descrive i passaggi per creare un'immagine macchina da un'istanza di origine.
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire
codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:
Console
Quando utilizzi la console Google Cloud per accedere ai servizi Google Cloud e alle API, non devi configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
- Imposta una regione e una zona predefinite.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI.
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Autenticati per usare REST nella documentazione sull'autenticazione di Google Cloud .
Limitazioni e restrizioni
- Puoi creare un'immagine macchina di un'istanza specifica al massimo 6 volte ogni 60 minuti.
- Puoi proteggere un'immagine macchina utilizzando Cloud Key Management Service (Cloud KMS) o una chiave di crittografia fornita dal cliente (CSEK). La chiave di crittografia protegge i contenuti dei dischi. Tuttavia, i metadati non sono protetti.
- Se utilizzi una CSEK per proteggere l'immagine macchina, una copia completa di tutti i dati del disco viene archiviata durante la generazione dell'immagine macchina. In tutti gli altri scenari, i dati del disco vengono archiviati in copie differenziali.
Non puoi creare immagini macchina da istanze Compute Engine di origine che:
- Hanno dischi collegati con una capacità combinata superiore a 200 TiB.
- non hanno alcun disco collegato;
- hanno volumi Hyperdisk collegati;
- Utilizza il tipo di macchina Z3, ad eccezione di
z3-highmem-192-highlssd-metal. - utilizzano un tipo di macchina C3D, H3 o A3.
Per le istanze che non supportano la creazione di immagini macchina, puoi creare un'immagine del sistema operativo dal disco di avvio dell'istanza, come descritto in Creare immagini personalizzate.
Non puoi specificare i dischi da includere e quelli da escludere contemporaneamente.
Proprietà di istanze e dischi non supportate dall'immagine macchina
Quando crei immagini macchina da istanze o viceversa, le seguenti proprietà di istanze e dischi non vengono conservate o ripristinate:
disks.architecturedisks.descriptiondisks.labelsdisks.lockeddisks.multiWriterdisks.onUpdateActiondisks.provisionedIopsdisks.shieldedInstanceInitialStatedisks.sourceImagedisks.sourceImageEncryptionKeydisks.sourceInstantSnapshotdisks.sourceSnapshotdisks.sourceSnapshotEncryptionKeyprivateIpv6GoogleAccessresourceManagerTagsresourcePoliciessecure_tagshieldedInstanceConfig
Crea un'immagine macchina da un'istanza
Per impostazione predefinita, un'immagine macchina include il disco di avvio e tutti gli altri dischi collegati all'istanza Compute Engine di origine. Facoltativamente, puoi specificare quali dischi non di avvio includere o escludere, ma non puoi escludere il disco di avvio.
Crea un'immagine macchina da un'istanza e includi tutti i dischi collegati
Puoi creare immagini macchina utilizzando la consoleGoogle Cloud , Google Cloud CLI o REST.
Per creare un'immagine macchina, sono necessarie le seguenti informazioni:
- Un nome per l'immagine macchina che vuoi creare
- Il nome dell'istanza di origine.
- La zona in cui si trova l'istanza di origine.
- Una descrizione facoltativa
- Una
storageLocationfacoltativa. Se non specifichi una località, la località di archiviazione predefinita è la località Cloud Storage multiregionale dell'istanza di origine. - Una chiave di crittografia facoltativa. Puoi scegliere tra una chiave Google-owned and Google-managed encryption key, una chiave Cloud Key Management Service (Cloud KMS) o una chiave di crittografia fornita dal cliente (CSEK). Se non viene specificata alcuna chiave di crittografia, le immagini macchina vengono criptate utilizzando Google-owned and Google-managed encryption key.
Se vuoi utilizzare un'immagine macchina per la clonazione e gli snapshot delle istanze, prima di generare l'immagine macchina da un'istanza, rimuovi tutte le informazioni sulle app e sul sistema operativo univoche relative a quell'istanza. Ad esempio, per le istanze VM Windows, utilizza
GCESysprepper preparare il sistema a eseguire una replica.
Console
Nella console Google Cloud vai alla pagina Immagini macchina.
Fai clic su Crea immagine macchina.
Specifica un nome per l'immagine macchina.
Facoltativo: fornisci una descrizione.
Seleziona l'istanza VM di origine.
Facoltativo: specifica dove archiviare l'immagine macchina. Scegli tra lo spazio di archiviazione multiregionale o regionale. Per saperne di più sulla località, consulta Località di archiviazione delle immagini macchina.
Facoltativo: seleziona un metodo di crittografia.
Fai clic su Crea.
gcloud
Utilizza il comando
gcloud compute machine-images create
per creare un'immagine macchina da un'istanza.
gcloud compute machine-images create MACHINE_IMAGE_NAME \
--source-instance=SOURCE_INSTANCE_NAME
Sostituisci quanto segue:
MACHINE_IMAGE_NAME: il nome dell'immagine della macchina che vuoi creareSOURCE_INSTANCE_NAME: il nome dell'istanza di origine da cui vuoi creare l'immagine.
Esempio
Ad esempio, puoi utilizzare il comando gcloud per creare un'immagine macchina
denominata my-machine-image da un'istanza di origine nota come my-instance:
gcloud compute machine-images create my-machine-image \
--source-instance=my-instance
Il processo richiede alcuni minuti. Quando viene creata l'immagine macchina, viene visualizzato un output simile al seguente:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/global/machineImages/my-machine-image]. NAME STATUS my-machine-image READY
REST
Nell'API, crea una richiesta POST al metodo
machineimages.insert. Nel corpo, includi la richiesta POST:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/machineImages
{
"name": "MACHINE_IMAGE_NAME",
"sourceInstance": "SOURCE_INSTANCE_URL"
}
Sostituisci quanto segue:
PROJECT_ID: l'ID progettoMACHINE_IMAGE_NAME: il nome dell'immagine della macchina che vuoi creareSOURCE_INSTANCE_URL: l'URL completo o parziale dell'istanza di origine che vuoi utilizzare per creare l'immagine macchina. Ad esempio, se hai un'istanza di origine denominatamy-instancein un progetto noto comemyProject. I seguenti URL sono validi:https://www.googleapis.com/compute/v1/projects/myProject/global/instances/my-instanceprojects/myProject/global/instances/my-instanceglobal/instances/my-instance
Crea un'immagine della macchina e includi dischi specifici (anteprima)
Puoi utilizzare il backup selettivo del disco per creare un'immagine della macchina che include o esclude dischi non di avvio specifici.
I backup selettivi dei dischi ti consentono di eseguire le seguenti attività durante la creazione di un'immagine macchina:
Includi dischi non di avvio specifici: puoi creare un'immagine della macchina che esegue il backup solo del disco di avvio e di un elenco specifico di dischi non di avvio che fornisci.
Escludi dischi non di avvio specifici: puoi creare un'immagine macchina che esegue il backup del disco di avvio e di tutti i dischi non di avvio collegati ad eccezione di quelli specificati in un elenco di esclusione.
Best practice per le istanze Linux
Per le istanze Linux, consigliamo le seguenti best practice:
Quando crei un'immagine macchina che esclude dischi non di avvio specifici o li omette utilizzando un elenco di inclusione, assicurati che il file
/etc/fstabnelle istanze Compute Engine di origine Linux utilizzi l'opzionenofailper questi dischi. In questo modo si impedisce l'avvio dell'istanza Compute Engine ripristinata se manca un disco previsto.Durante il processo di avvio di un'istanza Compute Engine ripristinata da un'immagine macchina, il sistema operativo tenta di montare tutti i dischi elencati in
/etc/fstab. Se manca un disco previsto e l'opzionenofailnon è specificata, il processo di avvio si interrompe e l'istanza non è avviabile. Per una soluzione alternativa alla gestione degli errori di avvio, consulta Soluzioni alternative per gli errori di avvio causati dall'esclusione di dischi specifici.
Includi solo dischi specifici
Utilizza le seguenti istruzioni per creare un'immagine macchina solo da dischi specifici. Devi sempre includere il disco di avvio. Non puoi creare un'immagine macchina solo da dischi specifici utilizzando la console Google Cloud . Devi utilizzare Google Cloud CLI o REST.
Google Cloud CLI
Utilizza il comando
gcloud beta compute machine-images create
per creare un'immagine macchina solo da dischi specifici.
gcloud beta compute machine-images create MACHINE_IMAGE_NAME \
--source-instance=SOURCE_INSTANCE_NAME \
--source-instance-zone=ZONE \
--include-disks=BOOT_DISK,DISK_NAME_1,DISK_NAME_2
Sostituisci quanto segue:
MACHINE_IMAGE_NAME: il nome dell'immagine della macchina che vuoi creare.SOURCE_INSTANCE_NAME: il nome dell'istanza di origine da cui vuoi creare l'immagine.ZONE: la zona in cui si trova l'istanza di origine.BOOT_DISK, DISK_NAME_1,DISK_NAME_2: un elenco separato da virgole del disco di avvio e dei dischi non di avvio collegati all'istanza di origine che vuoi includere nell'immagine macchina.
Ad esempio, puoi utilizzare il seguente comando gcloud per creare un'immagine macchina
denominata my-gmi-include da un'istanza di origine denominata my-instance
che si trova in us-central1-a, includendo solo data-disk-1 e data-disk-2:
gcloud beta compute machine-images create my-gmi-include \
--source-instance=my-instance \
--source-instance-zone=us-central1-a \
--include-disks=boot-disk,data-disk-1,data-disk-2
REST
Nell'API, crea una richiesta POST al metodo
machineimages.insert. Nel corpo, includi la richiesta POST:
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/machineImages
{
"name": "MACHINE_IMAGE_NAME",
"sourceInstance": "SOURCE_INSTANCE_URL",
"params": {
"includedDisks": ["BOOT_DISK", "DISK_NAME_1", "DISK_NAME_2"]
}
}
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto contenente l'immagine macchina, ad esempiomy-project.MACHINE_IMAGE_NAME: il nome dell'immagine della macchina che vuoi creareSOURCE_INSTANCE_URL: l'URL completo o parziale dell'istanza di origine che vuoi utilizzare per creare l'immagine macchina.BOOT_DISK, DISK_NAME_1, DISK_NAME_2: elenco del disco di avvio e dei dischi non di avvio collegati all'istanza di origine che vuoi includere nell'immagine della macchina.
Crea un'immagine macchina ed escludi dischi specifici (anteprima)
Segui queste istruzioni per creare un'immagine macchina ed escludere dischi specifici dal backup. Non puoi escludere il disco di avvio. Non puoi creare un'immagine macchina ed escludere dischi specifici utilizzando la console Google Cloud . Puoi utilizzare Google Cloud CLI o REST.
gcloud
Utilizza il comando
gcloud beta compute machine-images create
per creare un'immagine macchina ed escludere dischi specifici.
gcloud beta compute machine-images create MACHINE_IMAGE_NAME \
--source-instance=SOURCE_INSTANCE_NAME \
--source-instance-zone=ZONE \
--exclude-disks=DISK_NAME_1,DISK_NAME_2
Sostituisci quanto segue:
MACHINE_IMAGE_NAME: il nome dell'immagine della macchina che vuoi creareSOURCE_INSTANCE_NAME: il nome dell'istanza di origine da cui vuoi creare l'immagine.ZONE: la zona in cui si trova l'istanza di origine.DISK_NAME_1,DISK_NAME_2: elenco separato da virgole dei dischi non di avvio collegati all'istanza di origine che vuoi escludere dall'immagine macchina.
Esempio
Ad esempio, puoi utilizzare il seguente comando gcloud per creare un'immagine macchina
denominata my-gmi-exclude da un'istanza di origine denominata my-instance che si trova
in us-central1-a, escludendo temp-disk-1 e scratch-disk:
gcloud beta compute machine-images create my-gmi-exclude \
--source-instance=my-instance \
--source-instance-zone=us-central1-a \
--exclude-disks=temp-disk-1,scratch-disk
REST
Nell'API, crea una richiesta POST al metodo
machineimages.insert. Nel corpo, includi la richiesta POST:
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/machineImages
{
"name": "MACHINE_IMAGE_NAME",
"sourceInstance": "SOURCE_INSTANCE_URL",
"params": {
"excludedDisks": ["DISK_NAME_1", "DISK_NAME_2"]
}
}
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto contenente l'immagine macchina.MACHINE_IMAGE_NAME: il nome dell'immagine della macchina che vuoi creareSOURCE_INSTANCE_URL: l'URL completo o parziale dell'istanza di origine che vuoi utilizzare per creare l'immagine macchina.DISK_NAME_1, DISK_NAME_2: elenco dei dischi non di avvio collegati all'istanza di origine che vuoi escludere dall'immagine macchina.
Soluzioni alternative per gli errori di avvio causati dall'esclusione di dischi specifici
Se crei un'istanza da un'immagine della macchina in cui un disco escluso causa un errore di avvio, puoi recuperare l'istanza utilizzando una delle seguenti soluzioni alternative:
Connettiti alla console seriale: attiva e connettiti alla console seriale interattiva dell'istanza Compute Engine non avviabile. Accedi per risolvere il problema e modifica direttamente il file
/etc/fstabper rimuovere la voce del disco mancante o aggiungere l'opzionenofail.Scambio di dischi: se un'istanza Compute Engine non si avvia perché un disco è stato escluso dall'immagine della macchina, ma è ancora elencato in
/etc/fstabsenza l'opzionenofail, utilizza le seguenti istruzioni per riparare la configurazione utilizzando Google Cloud CLI.Arresta l'istanza Compute Engine non avviabile utilizzando il comando
gcloud compute instances stop:gcloud compute instances stop UNBOOTABLE_INSTANCE_NAME \ --zone=ZONE
Sostituisci quanto segue:
UNBOOTABLE_INSTANCE_NAME: nome dell'istanza Compute Engine non avviabile.ZONE: la zona in cui si trovano le istanze Compute Engine.
Scollega il disco di avvio utilizzando il comando
gcloud compute instances detach-disk:gcloud compute instances detach-disk UNBOOTABLE_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --zone=ZONE
Sostituisci quanto segue:
UNBOOTABLE_INSTANCE_NAME: nome dell'istanza Compute Engine non avviabile.BOOT_DISK_NAME: il nome del disco di avvio collegato all'istanza Compute Engine non avviabile.ZONE: la zona in cui si trovano le istanze Compute Engine.
Collega il disco come disco secondario a un'altra istanza di Compute Engine funzionante utilizzando il comando
gcloud compute instances attach-disk:gcloud compute instances attach-disk SECONDARY_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --zone=ZONE
Sostituisci quanto segue:
SECONDARY_INSTANCE_NAME: il nome dell'istanza di Compute Engine secondaria funzionante utilizzata per riparare il disco.BOOT_DISK_NAME: il nome del disco di avvio collegato all'istanza Compute Engine non avviabile.ZONE: la zona in cui si trovano le istanze Compute Engine.
Monta il disco e modifica il relativo file
/etc/fstabper correggere la voce problematica utilizzando la seguente sequenza di istruzioni:Connettiti all'istanza Compute Engine secondaria utilizzando SSH:
gcloud compute ssh SECONDARY_INSTANCE_NAME \ --zone=ZONE
Sostituisci quanto segue:
SECONDARY_INSTANCE_NAME: il nome dell'istanza di Compute Engine secondaria funzionante utilizzata per riparare il disco.ZONE: la zona in cui si trovano le istanze Compute Engine.
Identifica il disco collegato, di solito
/dev/sdbo simile, utilizzandolsblk:lsblk
Crea un punto di montaggio temporaneo:
sudo mkdir /mnt/repair
Monta la partizione root:
sudo mount /dev/DEVICE_PARTITION /mnt/repair
Sostituisci
DEVICE_PARTITIONcon il nome del dispositivo e il numero di partizione del disco secondario collegato all'istanza Compute Engine secondaria (ad esempio,sdb1).Apri il file
fstab:sudo nano /mnt/repair/etc/fstab
Aggiungi l'opzione
nofailalla voce del disco mancante o commenta l'intera riga aggiungendo#all'inizio.Salva ed esci.
Smonta il disco:
sudo umount /mnt/repair
Scollega il disco dall'istanza Compute Engine secondaria utilizzando il comando
gcloud compute instances detach-disk:gcloud compute instances detach-disk SECONDARY_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --zone=ZONE
Sostituisci quanto segue:
SECONDARY_INSTANCE_NAME: nome dell'istanza Compute Engine secondaria funzionante utilizzata per riparare il disco.BOOT_DISK_NAME: il nome del disco di avvio collegato all'istanza Compute Engine non avviabile.ZONE: la zona in cui si trovano le istanze Compute Engine.
Ricollega il disco come disco di avvio all'istanza Compute Engine originale utilizzando il comando
gcloud compute instances attach-disk:gcloud compute instances attach-disk UNBOOTABLE_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --boot \ --zone=ZONE
Sostituisci quanto segue:
UNBOOTABLE_INSTANCE_NAME: nome dell'istanza Compute Engine non avviabile.BOOT_DISK_NAME: il nome del disco di avvio collegato all'istanza Compute Engine non avviabile.ZONE: la zona in cui si trovano le istanze Compute Engine.
Avvia l'istanza Compute Engine riparata:
gcloud compute instances start UNBOOTABLE_INSTANCE_NAME \ --zone=ZONE
Sostituisci quanto segue:
UNBOOTABLE_INSTANCE_NAME: nome dell'istanza Compute Engine non avviabile.ZONE: la zona in cui si trovano le istanze Compute Engine.
Passaggi successivi
- Scopri di più sulle immagini macchina.
- Crea istanze da immagini macchina