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.

Untuk mengidentifikasi alasan kegagalan booting instance komputasi sebelum Anda memulihkannya, lihat Memecahkan masalah booting instance Compute Engine Linux.

Peran yang diperlukan

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

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

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk menyelamatkan VM. Untuk melihat izin yang benar-benar diperlukan, perluas 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 seperti ini, Anda harus meminta administrator untuk mencabut sementara batasan ini sebelum dapat membuat VM penyelamatan. Lihat Menetapkan batasan akses image untuk mengetahui informasi selengkapnya.
  4. Untuk setiap snapshot boot disk VM yang tidak dapat diakses yang sebelumnya Anda buat, buat disk baru dari snapshot dan pasang ke VM penyelamatan dengan mengikuti langkah-langkah berikut:

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

      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 pasang 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 boot disk VM penyelamat dan my-recovery-disk adalah boot disk dari snapshot VM yang tidak dapat diakses. Catat 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 boot disk 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 tersebut 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. Pasang sistem file dan perangkat virtual sehingga Anda dapat mengubah direktori root sistem file menggunakan perintah chroot:

      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
      
    5. Ubah direktori root ke sistem file yang dipasang:

      sudo chroot /rescue
      

    Sistem file boot disk yang tidak dapat diakses kini terpasang di /rescue, dan shell Anda berjalan di lingkungan chroot pada sistem file tersebut. Anda dapat menjelajahi sistem file, mengubah file konfigurasi, memperbaiki masalah, atau mengambil data.

Kembalikan perubahan dan mulai ulang VM yang tidak dapat diakses

Setelah Anda memperbaiki masalah atau mengambil data, gunakan langkah-langkah berikut untuk memulihkan VM asli:

  1. Setelah Anda selesai memecahkan masalah, keluar dari lingkungan chroot:

     exit
     

  2. Lepaskan sistem file virtual, perangkat, dan sistem file VM yang tidak dapat diakses dari VM sementara:

     cd /
     sudo umount /rescue/run
     sudo umount /rescue/dev/pts
     sudo umount /rescue/dev
     sudo umount /rescue/sys
     sudo umount /rescue/proc
     sudo umount /rescue
     

  3. Di konsol Google Cloud , buka halaman VM instances.

    Buka instance VM

    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.

  4. Buka halaman VM instances 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.

  5. Sekarang Anda dapat terhubung ke VM menggunakan SSH.