Menyelamatkan VM yang tidak dapat diakses


Jika VM Linux Anda tidak dapat diakses karena alasan apa pun, Anda dapat mencoba menyelamatkan VM menggunakan langkah-langkah berikut.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan demi menyelamatkan VM, minta administrator untuk memberi Anda peran IAM berikut pada project:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk menyelamatkan VM. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk menyelamatkan VM:

  • compute.instances.create di project
  • compute.disks.create di project
  • compute.instances.get di project
  • compute.disks.createSnapshot pada disk
  • compute.instances.attachDisk pada VM baru
  • compute.disks.use pada disk
  • compute.instances.start pada VM baru dan yang tidak dapat diakses
  • compute.instances.stop pada VM baru dan yang tidak dapat diakses

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Menyelamatkan VM

Jika tidak dapat terhubung ke VM, atau boot disk penuh, Anda harus membuat VM sementara untuk menyelamatkan VM yang tidak dapat diakses.

  1. (Opsional) Hentikan VM yang tidak dapat diakses.
  2. Buat snapshot dari boot disk VM yang tidak dapat diakses. Jika sistem file root dibagi di beberapa disk, Anda harus membuat snapshot setiap disk.
  3. Buat VM sementara menggunakan image publik yang terdekat dengan OS VM yang tidak dapat diakses. Dalam beberapa kasus, kebijakan image tepercaya mungkin membatasi Anda untuk membuat boot disk dari image publik. Dalam kasus tersebut, Anda harus meminta administrator untuk mencabut pembatasan ini sementara waktu sebelum Anda dapat membuat VM penyelamatan. Lihat Menetapkan batasan akses image untuk mengetahui informasi selengkapnya.
  4. Untuk setiap snapshot disk boot VM yang tidak dapat diakses yang sebelumnya Anda buat, buat disk baru dari snapshot dan pasang ke VM penyelamatan dengan melakukan tindakan berikut:

    1. Di konsol Google Cloud, buka halaman Instance VM.

      Buka instance VM

    2. Klik nama VM sementara yang Anda buat.

    3. Klik Edit.

    4. Di bagian Additional disks, klik Add new disk, lalu lakukan hal berikut:

      1. Tambahkan nama disk, seperti my-recovery-disk
      2. Untuk Source type, pilih tab Snapshot.
      3. Di menu drop-down Source snapshot, pilih snapshot VM sumber yang Anda buat sebelumnya dalam langkah-langkah ini.
      4. Klik Done.
    5. Klik Simpan.

  5. Hubungkan ke VM sementara menggunakan SSH.

  6. Identifikasi nama setiap disk yang sebelumnya Anda lampirkan ke VM dengan menjalankan perintah berikut:

    lsblk -d -o NAME,SERIAL

    Outputnya mirip dengan hal berikut ini:

     NAME SERIAL
     sda  rescue-vm
     sdb  my-recovery-disk
     

    Dalam contoh ini, rescue-vm adalah disk booting VM penyelamatan dan my-recovery-disk adalah disk booting dari snapshot VM yang tidak dapat diakses. Perhatikan NAME VM yang tidak dapat diakses untuk digunakan di langkah berikutnya.

  7. Untuk setiap disk yang sebelumnya Anda pasang ke VM, lakukan hal berikut:

    1. Identifikasi sistem file setiap partisi dengan menjalankan perintah berikut:

      fdisk -l /dev/NAME -o Device,Size,Type
      

      Ganti NAME dengan nama disk booting VM yang tidak dapat diakses dari langkah sebelumnya. Dalam contoh ini, namanya adalah sdb.

      Outputnya mirip dengan hal berikut ini:

      Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
      Disk model: PersistentDisk
      Units: sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 4096 bytes
      I/O size (minimum/optimal): 4096 bytes / 4096 bytes
      Disklabel type: gpt
      Disk identifier: B31430F1-F041-4555-96B9-B2F43DC057AD
      
      Device     Size Type
      /dev/sdb1    2M BIOS boot
      /dev/sdb2   20M EFI System
      /dev/sdb3   10G Linux filesystem
      

      Kolom Type mencantumkan sistem file setiap partisi. Jika jenis sistem file tidak ada untuk partisi apa pun, jalankan perintah berikut:

      file -sL /dev/PARTITION_NAME
      

      Ganti NAME dengan nama partisi.

      Outputnya berbeda-beda bergantung pada jenis sistem file:

      • Tidak ada sistem file: Jika output hanya menampilkan data, partisi tidak berisi sistem file. Contoh output:

        /dev/sdb1: data
        
      • Sistem file EFI: Jika output menjelaskan sektor booting DOS/MBR, partisi memiliki sistem file EFI. Contoh output:

        dev/sdb2: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, reserved sectors
        4, root entries 512, sectors 40960 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 40, sectors/
        track 32, heads 64, serial number 0xf2af2664, label: "EFI        ", FAT (16 bit)
        
      • Sistem file Linux: Jika output menjelaskan data sistem file, partisi adalah sistem file Linux. Contoh output:

        /dev/sdb3: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
        

      Perhatikan nama partisi sistem file Linux.

    2. Buat direktori pemasangan di /rescue:

      sudo mkdir /rescue
    3. Pasang partisi sistem file Linux ke /rescue:

      sudo mount PARTITION_NAME /rescue
      

      Ganti PARTITION_NAME dengan nama sistem file Linux yang Anda catat sebelumnya.

    4. Jika ingin mengubah direktori root sistem file menggunakan perintah chroot, Anda juga harus memasang sistem file virtual dan perangkat dengan menjalankan perintah berikut:

      sudo mount -t proc /proc /rescue/proc
      sudo mount -t sysfs /sys /rescue/sys
      sudo mount -o bind /dev /rescue/dev
      sudo mount -o bind /dev/pts /rescue/dev/pts
      sudo mount -o bind /run /rescue/run
      

    Sistem file disk booting yang tidak dapat diakses kini terpasang di /rescue. Anda dapat menjelajahi sistem file, mengubah file konfigurasi, memperbaiki masalah, atau mengambil data.

Kembalikan perubahan dan lakukan lagi booting VM yang tidak dapat diakses

Setelah masalah diperbaiki atau data diambil, Anda harus mengembalikan VM yang sebenarnya. Lakukan langkah-langkah berikut untuk memulihkan VM asli:

  1. Lepaskan disk tambahan yang terpasang di /rescue di VM sementara:

     cd ~
     sudo umount /rescue

  2. Di konsol Google Cloud, buka halaman Instance VM.

    Buka VM instances

    1. Pilih VM sementara yang Anda buat.

    2. Klik Edit.

    3. Di bagian Additional disks, klik untuk disk yang dibuat pada langkah sebelumnya untuk melepaskan disk tambahan dari VM sementara.

    4. Klik Simpan.

  3. Buka halaman Instance VM di Konsol Google Cloud.

    Buka instance VM

    1. Jika VM yang tidak dapat diakses masih berjalan, hentikan VM.

    2. Klik nama VM yang baru saja Anda hentikan, lalu klik Edit.

    3. Di bagian Boot disk, klik Detach book disk untuk melepaskan boot disk yang keluar dari VM yang tidak dapat diakses.

    4. Selanjutnya, klik CONFIGURE BOOT DISK untuk memasang disk yang telah Anda buat dan perbaiki sebelumnya di Rescue a VM pada halaman ini.

      1. Di bagian Boot Disk, klik tab Existing disks.
      2. Di menu drop-down, pilih disk yang Anda buat di bagian sebelumnya, misalnya my-recovery-disk.
      3. Klik Pilih, lalu klik Simpan.
    5. Mulai VM.

  4. Sekarang Anda dapat terhubung ke VM menggunakan SSH.