Membuat image mesin

Gunakan image mesin untuk menyimpan semua konfigurasi, metadata, izin, dan data dari beberapa disk untuk instance Compute Engine. Instance yang Anda gunakan untuk membuat image mesin disebut sebagai instance sumber.

Untuk mengetahui informasi tentang waktu dan cara menggunakan image mesin, lihat Image mesin.

Dokumen ini menjelaskan langkah-langkah untuk membuat image mesin dari instance sumber.

Sebelum memulai

  • Siapkan autentikasi jika Anda belum melakukannya. Autentikasi memverifikasi identitas Anda untuk mengakses layanan Cloud de Confiance by S3NS dan API. Untuk menjalankan kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan konsol Cloud de Confiance untuk mengakses layanan Cloud de Confiance by S3NS dan API, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    1. Instal Google Cloud CLI, lalu login ke gcloud CLI dengan identitas gabungan Anda. Setelah login, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

      gcloud init
  • Tetapkan region dan zona default.
  • REST

    Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

      Instal Google Cloud CLI, lalu login ke gcloud CLI dengan identitas gabungan Anda.

    Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Cloud de Confiance .

Pembatasan dan batasan

  • Anda dapat membuat image mesin dari instance tertentu paling banyak 6 kali setiap 60 menit.
  • Anda dapat melindungi image mesin menggunakan Cloud Key Management Service (Cloud KMS) atau kunci enkripsi yang disediakan pelanggan (CSEK). Kunci enkripsi melindungi konten disk. Namun, metadata tidak dilindungi.
  • Jika Anda menggunakan CSEK untuk melindungi image mesin, salinan lengkap semua data disk akan disimpan selama pembuatan image mesin. Dalam semua skenario lainnya, data disk disimpan dalam salinan diferensial.
  • Anda tidak dapat membuat image mesin dari instance Compute Engine sumber yang:

    • Memiliki disk terpasang dengan kapasitas gabungan yang melebihi 200 TiB.
    • Tidak memiliki disk yang terpasang.
    • Memiliki volume Hyperdisk yang terpasang.
    • Gunakan jenis mesin Z3 kecuali untuk z3-highmem-192-highlssd-metal.
    • Gunakan jenis mesin C3D, H3, atau A3.

    Untuk instance yang tidak mendukung pembuatan image mesin, Anda dapat membuat image OS dari boot disk instance, seperti yang dijelaskan di Membuat image kustom.

  • Anda tidak dapat menentukan disk yang akan disertakan dan disk yang akan dikecualikan secara bersamaan.

Properti instance dan disk tidak didukung oleh image mesin

Saat Anda membuat image mesin dari instance atau membuat instance dari image mesin, properti instance dan disk berikut tidak dipertahankan atau dipulihkan:

  • disks.architecture
  • disks.description
  • disks.labels
  • disks.locked
  • disks.multiWriter
  • disks.onUpdateAction
  • disks.provisionedIops
  • disks.shieldedInstanceInitialState
  • disks.sourceImage
  • disks.sourceImageEncryptionKey
  • disks.sourceInstantSnapshot
  • disks.sourceSnapshot
  • disks.sourceSnapshotEncryptionKey
  • privateIpv6GoogleAccess
  • resourceManagerTags
  • resourcePolicies
  • secure_tag
  • shieldedInstanceConfig

Membuat image mesin dari instance

Secara default, image mesin mencakup disk boot dan semua disk lain yang terpasang ke instance Compute Engine sumber. Anda dapat secara opsional menentukan disk non-boot yang akan disertakan atau dikecualikan, tetapi Anda tidak dapat mengecualikan disk boot.

Membuat image mesin dari instance dan menyertakan semua disk yang terpasang

Anda dapat membuat image mesin menggunakan Cloud de Confiance konsol, Google Cloud CLI, atau REST.

Untuk membuat image mesin, Anda memerlukan informasi berikut:

  • Nama untuk image mesin yang ingin Anda buat.
  • Nama instance sumber.
  • Zona tempat instance sumber berada.
  • Deskripsi opsional.
  • storageLocation opsional. Jika Anda tidak menentukan lokasi, lokasi penyimpanan default-nya adalah lokasi Cloud Storage multiregional instance sumber.
  • Kunci enkripsi opsional. Anda dapat memilih antara Google Cloud-powered encryption key, kunci Cloud Key Management Service (Cloud KMS) atau kunci enkripsi yang disediakan pelanggan (CSEK). Jika kunci enkripsi tidak ditentukan, image mesin akan dienkripsi menggunakan Google Cloud-powered encryption key.
  • Jika Anda ingin menggunakan image mesin untuk cloning instance dan pembuatan snapshot, hapus informasi OS dan aplikasi yang unik untuk instance tersebut sebelum membuat image mesin dari instance. Misalnya, untuk instance VM Windows, gunakan GCESysprep untuk menyiapkan sistem untuk replikasi.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Image mesin.

    Buka Image mesin

  2. Klik Buat image mesin.

  3. Tentukan Nama untuk image mesin Anda.

  4. Opsional: Berikan Deskripsi.

  5. Pilih Instance VM sumber.

  6. Opsional: Tentukan tempat untuk menyimpan image mesin. Pilih antara penyimpanan Multi-regional atau Regional. Untuk mengetahui informasi selengkapnya tentang lokasi, lihat Lokasi penyimpanan image mesin.

  7. Opsional: Pilih metode Enkripsi.

  8. Klik Buat.

gcloud

Gunakan perintah gcloud compute machine-images create untuk membuat image mesin dari instance.

gcloud compute machine-images create MACHINE_IMAGE_NAME \
    --source-instance=SOURCE_INSTANCE_NAME

Ganti kode berikut:

  • MACHINE_IMAGE_NAME: nama image mesin yang ingin Anda buat.
  • SOURCE_INSTANCE_NAME: nama instance sumber tempat Anda ingin membuat image.

Contoh

Misalnya, Anda dapat menggunakan perintah gcloud berikut untuk membuat image mesin yang disebut my-machine-image dari instance sumber yang disebut my-instance:

gcloud compute machine-images create my-machine-image  \
    --source-instance=my-instance

Proses ini memerlukan waktu beberapa menit. Setelah image mesin dibuat, Anda akan mendapatkan output yang terlihat seperti berikut:

Created [https://www.googleapis.com/compute/v1/projects/project-12345/global/machineImages/my-machine-image].
NAME               STATUS
my-machine-image   READY

REST

Di API, buat permintaan POST ke metode machineimages.insert . Dalam isi permintaan, sertakan permintaan POST berikut:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/machineImages

{
  "name": "MACHINE_IMAGE_NAME",
  "sourceInstance": "SOURCE_INSTANCE_URL"
}

Ganti kode berikut:

  • PROJECT_ID: ID project.
  • MACHINE_IMAGE_NAME: nama image mesin yang ingin Anda buat.
  • SOURCE_INSTANCE_URL: URL lengkap atau sebagian instance sumber yang ingin Anda gunakan untuk membuat image mesin. Misalnya, jika Anda memiliki instance sumber bernama my-instance dalam project bernama myProject. URL berikut valid:

    • https://www.googleapis.com/compute/v1/projects/myProject/global/instances/my-instance
    • projects/myProject/global/instances/my-instance
    • global/instances/my-instance

Membuat image mesin dan menyertakan disk tertentu (Pratinjau)

Anda dapat menggunakan pencadangan disk selektif untuk membuat image mesin yang mencakup atau mengecualikan disk non-boot tertentu.

Pencadangan disk selektif memungkinkan Anda melakukan tugas berikut saat membuat image mesin:

  • Menyertakan non-boot disk tertentu: Anda dapat membuat image mesin yang mencadangkan hanya boot disk dan daftar non-boot disk tertentu yang Anda berikan.

  • Mengecualikan disk non-boot tertentu: Anda dapat membuat image mesin yang mencadangkan boot disk dan semua disk non-boot yang terpasang kecuali disk yang Anda tentukan dalam daftar pengecualian.

Praktik terbaik untuk instance Linux

Untuk instance Linux, sebaiknya ikuti praktik terbaik berikut:

  • Saat Anda membuat image mesin yang mengecualikan disk non-boot tertentu atau menghilangkannya menggunakan daftar penyertaan, pastikan file /etc/fstab di instance Compute Engine sumber Linux menggunakan opsi nofail untuk disk tersebut. Hal ini mencegah instance Compute Engine yang dipulihkan gagal di-boot jika disk yang diharapkan tidak ada.

  • Selama proses booting instance Compute Engine yang dipulihkan dari image mesin, sistem operasi akan mencoba memasang semua disk yang tercantum dalam /etc/fstab. Jika disk yang diharapkan tidak ada dan opsi nofail tidak ditentukan, proses booting akan berhenti, dan instance tidak dapat di-boot. Sebagai solusi untuk menangani kegagalan booting, lihat Solusi untuk kegagalan booting yang disebabkan oleh pengecualian disk tertentu.

Hanya sertakan disk tertentu

Gunakan petunjuk berikut untuk membuat image mesin hanya dari disk tertentu. Anda harus selalu menyertakan disk boot. Anda tidak dapat membuat image mesin hanya dari disk tertentu menggunakan konsol Cloud de Confiance . Anda harus menggunakan Google Cloud CLI atau REST.

Google Cloud CLI

Gunakan perintah gcloud beta compute machine-images create untuk membuat image mesin hanya dari disk tertentu.

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

Ganti kode berikut:

  • MACHINE_IMAGE_NAME: nama image mesin yang ingin Anda buat.
  • SOURCE_INSTANCE_NAME: nama instance sumber tempat Anda ingin membuat image.
  • ZONE: zona tempat instance sumber berada.
  • BOOT_DISK, DISK_NAME_1,DISK_NAME_2: daftar yang dipisahkan koma dari boot disk dan non-boot disk yang terpasang ke instance sumber yang ingin Anda sertakan dalam image mesin.

Misalnya, Anda dapat menggunakan perintah gcloud berikut untuk membuat image mesin yang disebut my-gmi-include dari instance sumber yang disebut my-instance yang berada di us-central1-a, termasuk hanya data-disk-1 dan 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

Di API, buat permintaan POST ke metode machineimages.insert . Dalam isi permintaan, sertakan permintaan POST berikut:

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"]
  }
}

Ganti kode berikut:

  • PROJECT_ID: ID project yang berisi image mesin, misalnya, my-project.
  • MACHINE_IMAGE_NAME: nama image mesin yang ingin Anda buat.
  • SOURCE_INSTANCE_URL: URL lengkap atau sebagian instance sumber yang ingin Anda gunakan untuk membuat image mesin.
  • BOOT_DISK, DISK_NAME_1, DISK_NAME_2: daftar boot disk dan non-boot disk yang terpasang ke instance sumber yang ingin Anda sertakan dalam image mesin.

Membuat image mesin dan mengecualikan disk tertentu (Pratinjau)

Gunakan petunjuk berikut untuk membuat image mesin dan mengecualikan disk tertentu dari pencadangan. Anda tidak dapat mengecualikan disk booting. Anda tidak dapat membuat image mesin dan mengecualikan disk tertentu menggunakan konsol Cloud de Confiance . Anda dapat menggunakan Google Cloud CLI atau REST.

gcloud

Gunakan perintah gcloud beta compute machine-images create untuk membuat image mesin dan mengecualikan disk tertentu.

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

Ganti kode berikut:

  • MACHINE_IMAGE_NAME: nama image mesin yang ingin Anda buat.
  • SOURCE_INSTANCE_NAME: nama instance sumber tempat Anda ingin membuat image.
  • ZONE: zona tempat instance sumber berada.
  • DISK_NAME_1,DISK_NAME_2: daftar yang dipisahkan koma dari disk non-boot yang terpasang ke instance sumber yang ingin Anda kecualikan dari image mesin.

Contoh

Misalnya, Anda dapat menggunakan perintah gcloud berikut untuk membuat image mesin yang disebut my-gmi-exclude dari instance sumber yang disebut my-instance yang berada di us-central1-a, tidak termasuk temp-disk-1 dan 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

Di API, buat permintaan POST ke metode machineimages.insert . Dalam isi permintaan, sertakan permintaan POST berikut:

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"]
  }
}

Ganti kode berikut:

  • PROJECT_ID: ID project yang berisi image mesin.
  • MACHINE_IMAGE_NAME: nama image mesin yang ingin Anda buat.
  • SOURCE_INSTANCE_URL: URL lengkap atau sebagian instance sumber yang ingin Anda gunakan untuk membuat image mesin.
  • DISK_NAME_1, DISK_NAME_2: daftar disk non-boot yang terpasang ke instance sumber yang ingin dikecualikan dari image mesin.

Solusi untuk kegagalan booting yang disebabkan oleh pengecualian disk tertentu

Jika Anda membuat instance dari image mesin yang disknya dikecualikan menyebabkan kegagalan booting, Anda dapat memulihkan instance menggunakan salah satu solusi berikut:

  • Hubungkan ke konsol serial: aktifkan dan hubungkan ke konsol serial interaktif dari instance Compute Engine yang tidak dapat di-boot. Login untuk memecahkan masalah dan mengedit file /etc/fstab secara langsung untuk menghapus entri disk yang tidak ada atau menambahkan opsi nofail.

  • Penukaran disk: jika instance Compute Engine gagal di-boot karena disk dikecualikan dari image mesin tetapi masih tercantum di /etc/fstab tanpa opsi nofail, gunakan petunjuk berikut untuk memperbaiki konfigurasi menggunakan Google Cloud CLI.

    1. Hentikan instance Compute Engine yang tidak dapat di-booting menggunakan perintah gcloud compute instances stop:

      gcloud compute instances stop UNBOOTABLE_INSTANCE_NAME \
       --zone=ZONE
      

      Ganti kode berikut:

      • UNBOOTABLE_INSTANCE_NAME: nama instance Compute Engine yang tidak dapat di-boot.
      • ZONE: zona tempat instance Compute Engine berada.
    2. Lepaskan boot disk menggunakan perintah gcloud compute instances detach-disk:

      gcloud compute instances detach-disk UNBOOTABLE_INSTANCE_NAME \
       --disk=BOOT_DISK_NAME \
       --zone=ZONE
      

      Ganti kode berikut:

      • UNBOOTABLE_INSTANCE_NAME: nama instance Compute Engine yang tidak dapat di-boot.
      • BOOT_DISK_NAME: nama boot disk yang terpasang ke instance Compute Engine yang tidak dapat di-boot.
      • ZONE: zona tempat instance Compute Engine berada.
    3. Pasang disk sebagai disk sekunder ke instance Compute Engine lain yang berfungsi menggunakan perintah gcloud compute instances attach-disk:

      gcloud compute instances attach-disk SECONDARY_INSTANCE_NAME \
       --disk=BOOT_DISK_NAME \
       --zone=ZONE
      

      Ganti kode berikut:

      • SECONDARY_INSTANCE_NAME: nama instance Compute Engine sekunder yang berfungsi dan digunakan untuk memperbaiki disk.
      • BOOT_DISK_NAME: nama boot disk yang terpasang ke instance Compute Engine yang tidak dapat di-boot.
      • ZONE: zona tempat instance Compute Engine berada.
    4. Pasang disk dan edit file /etc/fstab-nya untuk memperbaiki entri yang bermasalah menggunakan urutan petunjuk berikut:

      1. Hubungkan ke instance Compute Engine sekunder menggunakan SSH:

        gcloud compute ssh SECONDARY_INSTANCE_NAME \
        --zone=ZONE
        

        Ganti kode berikut:

        • SECONDARY_INSTANCE_NAME: nama instance Compute Engine sekunder yang berfungsi dan digunakan untuk memperbaiki disk.
        • ZONE: zona tempat instance Compute Engine berada.
      2. Identifikasi disk terlampir, biasanya /dev/sdb atau yang serupa, menggunakan lsblk:

        lsblk
        
      3. Buat direktori pemasangan sementara:

        sudo mkdir /mnt/repair
        
      4. Pasang partisi root:

        sudo mount /dev/DEVICE_PARTITION /mnt/repair
        

        Ganti DEVICE_PARTITION dengan nama perangkat dan nomor partisi disk sekunder terlampir pada instance Compute Engine sekunder (misalnya, sdb1).

      5. Buka file fstab:

        sudo nano /mnt/repair/etc/fstab
        
      6. Tambahkan opsi nofail ke entri disk yang hilang atau beri komentar pada seluruh baris dengan menambahkan # di awal.

      7. Simpan dan keluar.

      8. Lepaskan disk:

        sudo umount /mnt/repair
        
    5. Lepaskan disk dari instance Compute Engine sekunder menggunakan perintah gcloud compute instances detach-disk:

      gcloud compute instances detach-disk SECONDARY_INSTANCE_NAME \
       --disk=BOOT_DISK_NAME \
       --zone=ZONE
      

      Ganti kode berikut:

      • SECONDARY_INSTANCE_NAME: nama instance Compute Engine sekunder yang berfungsi dan digunakan untuk memperbaiki disk.
      • BOOT_DISK_NAME: nama boot disk yang terpasang ke instance Compute Engine yang tidak dapat di-boot.
      • ZONE: zona tempat instance Compute Engine berada.
    6. Pasang kembali disk sebagai boot disk ke instance Compute Engine asli menggunakan perintah gcloud compute instances attach-disk:

      gcloud compute instances attach-disk UNBOOTABLE_INSTANCE_NAME \
       --disk=BOOT_DISK_NAME \
       --boot \
       --zone=ZONE
      

      Ganti kode berikut:

      • UNBOOTABLE_INSTANCE_NAME: nama instance Compute Engine yang tidak dapat di-boot.
      • BOOT_DISK_NAME: nama boot disk yang terpasang ke instance Compute Engine yang tidak dapat di-boot.
      • ZONE: zona tempat instance Compute Engine berada.
    7. Mulai instance Compute Engine yang diperbaiki:

      gcloud compute instances start UNBOOTABLE_INSTANCE_NAME \
       --zone=ZONE
      

      Ganti kode berikut:

      • UNBOOTABLE_INSTANCE_NAME: nama instance Compute Engine yang tidak dapat di-boot.
      • ZONE: zona tempat instance Compute Engine berada.

Apa langkah selanjutnya?