Memecahkan masalah startup VM

Dokumen ini berisi informasi pemecahan masalah tentang masalah startup VM karena error kuota dan boot disk.

Error kuota

Jika Anda menerima error kuota saat memulai VM, artinya Anda mungkin telah mencapai nilai kuota untuk resource di project Anda. Untuk memahami pesan error, identifikasi nilai kuota mana yang telah terlampaui dan cara memecahkan masalahnya, lihat halaman Memecahkan masalah error kuota.

Boot disk

Jika instance tidak dimulai dan Anda tidak dapat menghubungkannya atau login melalui konsol serial interaktif, identifikasi alasan boot disk tidak menyelesaikan proses booting dan startup.

Mengidentifikasi alasan mengapa boot disk tidak dapat di-booting

  • Pastikan boot disk Anda tidak penuh.

    Jika boot disk Anda sudah penuh dan sistem operasi Anda tidak mendukung pengubahan ukuran otomatis, Anda tidak akan dapat terhubung ke instance. Anda harus membuat instance baru dan membuat ulang boot disk. Untuk informasi selengkapnya, lihat Memulihkan VM atau boot disk lengkap.

  • Periksa output port serial instance virtual machine Anda.

    BIOS, bootloader, dan kernel instance mencetak pesan debug-nya ke dalam output port serial instance, yang memberikan informasi berharga tentang setiap error atau masalah yang dialami instance. Jika mengaktifkan logging output port serial ke Cloud Logging, Anda dapat mengakses informasi ini meskipun instance Anda tidak berjalan.

  • Aktifkan akses interaktif ke konsol serial.

    Anda dapat mengaktifkan akses interaktif ke konsol serial instance sehingga Anda dapat login dan men-debug masalah booting dari dalam instance tanpa mengharuskan instance Anda di-booting sepenuhnya. Untuk informasi selengkapnya, lihat Memecahkan masalah menggunakan konsol serial.

  • Pastikan cloning disk booting tidak sedang berlangsung

    Jika pengkloningan boot disk sedang berlangsung, Anda tidak dapat memulai VM dan Anda akan melihat error yang serupa dengan berikut ini.

    Failed to start example-vm: The instance resource 'projects/example-project/zones/us-central1-b/instances/example-vm' is already being used by 'projects/example-project/zones/us-central1-b/disks/clone'
    

    Tunggu hingga proses clone selesai, lalu mulai VM.

  • Pastikan snapshot disk booting tidak sedang dalam progres

    Jika snapshot boot disk sedang berlangsung, Anda tidak dapat memulai VM dan akan melihat error yang mirip dengan berikut ini:

    The instance resource 'projects/example-project/zones/asia-east1-b/instances/example-vm' is already being used by 'projects/example-project/global/snapshots/example-vm-prod-asia-east1-b-abc'
    

    Tunggu hingga snapshot selesai, lalu mulai VM.

  • Pastikan disk Anda memiliki sistem file yang valid.

    Jika sistem file rusak atau tidak valid, Anda tidak akan dapat meluncurkan instance. Validasi sistem file disk Anda:

    1. Lepaskan disk yang bersangkutan dari instance mana pun yang terpasang, jika memungkinkan:

      gcloud compute instances delete old-instance --keep-disks boot
      
    2. Mulai instance baru dengan image terbaru yang disediakan Google:

      gcloud compute instances create debug-instance
    3. Pasang disk sebagai disk non-boot, tetapi jangan pasang. Ganti DISK dengan nama disk yang tidak akan di-booting. Perhatikan nama perangkat yang mengidentifikasi disk pada instance:

      gcloud compute instances attach-disk debug-instance \
          --disk DISK \
          --device-name debug-disk
      
    4. Hubungkan ke instance:

      gcloud compute ssh debug-instance
      
    5. Cari partisi root disk, yang diidentifikasi dengan notasi part1. Dalam hal ini, partisi root disk berada di /dev/sdb1:

      ls -l /dev/disk/by-id
      total 0
      lrwxrwxrwx 1 root root  9 Jan 22 17:09 google-debug-disk -> ../../sdb
      lrwxrwxrwx 1 root root 10 Jan 22 17:09 google-debug-disk-part1 -> ../../sdb1
      lrwxrwxrwx 1 root root  9 Jan 22 17:02 google-persistent-disk-0 -> ../../sda
      lrwxrwxrwx 1 root root 10 Jan 22 17:02 google-persistent-disk-0-part1 -> ../../sda1
      lrwxrwxrwx 1 root root  9 Jan 22 17:09 scsi-0Google_PersistentDisk_debug-disk -> ../../sdb
      lrwxrwxrwx 1 root root 10 Jan 22 17:09 scsi-0Google_PersistentDisk_debug-disk-part1 -> ../../sdb1
      lrwxrwxrwx 1 root root  9 Jan 22 17:02 scsi-0Google_PersistentDisk_persistent-disk-0 -> ../../sda
      lrwxrwxrwx 1 root root 10 Jan 22 17:02 scsi-0Google_PersistentDisk_persistent-disk-0-part1 -> ../../sda1
      
    6. Jalankan pemeriksaan sistem file pada partisi root dengan menyelesaikan langkah-langkah berikut:

      1. Identifikasi jenis sistem file partisi disk dengan menjalankan lsblk -f:

        sudo lsblk -f

        Outputnya mirip dengan hal berikut ini:

        NAME   FSTYPE LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
        sdb
        └─sdb1 xfs          2e4f7b4e-9b0a-4b7c-8b8a-9b0a4b7c8b8c
        sda
        └─sda1 ext4         0e4f7b4e-9b0a-4b7c-8b8a-9b0a4b7c8b8a
      2. Bergantung pada jenis sistem file, jalankan salah satu perintah berikut untuk memeriksa error pada sistem file:

        ext atau vfat

        Jika sistem file partisi root adalah ext2, ext3, ext4, atau vfat, jalankan perintah fsck sebagai berikut:

        sudo fsck DEVICE_NAME

        Ganti DEVICE_NAME dengan nama perangkat partisi root Anda; misalnya, /dev/sdb1.

        Jika fsck menampilkan error seperti Bad magic number in super-block, hal ini menunjukkan bahwa sistem file Anda rusak.

        xfs

        Jika sistem file partisi root adalah xfs, gunakan alat xfs_repair.

        1. xfs_repair tidak berfungsi pada sistem file yang terpasang. Sebelum menjalankan xfs_repair, pastikan partisi dilepas. Jika partisi terpasang, jalankan perintah umount untuk melepasnya. Ganti DEVICE_NAME dengan nama perangkat partisi root Anda; misalnya, /dev/sdb1.

          sudo umount DEVICE_NAME
        2. Untuk memindai sistem file guna mencari error, jalankan xfs_repair dalam mode uji coba dengan menggunakan opsi -n.

          sudo xfs_repair -n DEVICE_NAME
          
          • Jika tidak ada error yang ditemukan, atau jika xfs_repair -n berhasil diselesaikan, hal ini menunjukkan tidak ada kerusakan. Anda harus menyelidiki penyebab lain kegagalan startup VM.
          • Jika error dilaporkan, atau jika xfs_repair -n gagal dengan pesan seperti If you wish to clear the log, mount the file system with the norecovery option, lanjutkan ke langkah berikutnya untuk mencoba perbaikan.
        3. Untuk memperbaiki sistem file, jalankan perintah xfs_repair tanpa opsi -n.

          sudo xfs_repair DEVICE_NAME
          

          Jika xfs_repair gagal dan menyarankan penggunaan opsi -L, jalankan xfs_repair dengan opsi -L untuk menghapus log dan mencoba lagi perbaikan sistem file.

          sudo xfs_repair -L DEVICE_NAME
          
    7. Pasang sistem file Anda:

      sudo mkdir MOUNT_POINT
      
      sudo mount DEVICE_NAME MOUNT_POINT
      

      Ganti kode berikut:

      • DEVICE_NAME: nama perangkat partisi root Anda; misalnya, /dev/sdb1.
      • MOUNT_POINT: direktori tempat Anda ingin memasang disk; misalnya, /mydisk.
    8. Periksa apakah disk memiliki file kernel:

       ls MOUNT_POINT/boot/vmlinuz-*
       

      Outputnya mirip dengan hal berikut ini:

       MOUNT_POINT/boot/vmlinuz-3.2.0-4-amd64
       

  • Pastikan disk memiliki master boot record (MBR) yang valid.

    Jalankan perintah berikut pada instance debug yang memiliki persistent boot disk yang terpasang:

    sudo parted DISK_DEVICE print
    

    Ganti DISK_DEVICE dengan nama perangkat dari persistent boot disk yang akan diperiksa; misalnya, /dev/sdb1.

    Jika MBR Anda valid, MBR tersebut akan mencantumkan informasi tentang sistem file:

    Disk DISK_DEVICE: 10.7GB
    Sector size (logical/physical): 512B/4096B
    Partition Table: msdos
    Disk Flags:
    Number  Start   End     Size    Type     File system  Flags
     1      2097kB  10.7GB  10.7GB  primary  ext4         boot
    

Memperbaiki masalah booting

Setelah mengidentifikasi kegagalan proses booting dan startup, Anda dapat memperbaiki masalah ini dengan melakukan salah satu tindakan berikut:

Membuat boot disk mandiri

Pasang image yang diimpor di disk sekunder yang terpasang ke instance VM sementara. Gunakan konsol Google Cloud atau gcloud CLI untuk membuat disk mandiri dari image yang Anda upload dan membuat VM sementara dengan disk mandiri terpasang. Anda dapat menggunakan instance ini untuk mengubah file pada disk mandiri dan memperbaiki masalah yang menyebabkan image gagal dimulai.

Konsol

Buat disk mandiri dari boot disk image yang Anda impor. Atau, Anda dapat melepaskan boot disk dari sebuah instance dan membuat instance menggunakan boot disk yang dilepas tersebut.

  1. Di konsol Google Cloud , buka halaman Disk.

    Buka Disk

  2. Klik Buat disk.
  3. Di halaman Membuat disk, tentukan atribut berikut:
    • Zona: Select a zone near you. You must use this same zone when you create your temporary instance.
    • Jenis sumber disk: Image
    • Image sumber: Tentukan nama boot disk image yang Anda impor.
  4. Untuk membuat disk, klik Buat.

Buat instance sementara untuk memasang disk mandiri dan mengonfigurasi bootloader agar berfungsi di lingkungan konsol Google Cloud .

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

    Buka Instances

  2. Klik tombol Create instance.

  3. Di halaman Create an instance, tentukan nama instance dan zona untuk menemukan instance. Zona tersebut harus berada di zona yang sama tempat Anda membuat disk mandiri.

  4. Luaskan bagian Management, security, disks, networking, sole tenancy.

  5. Di tab Disks pada bagian Additional disks, klik Attach existing disk. Bagian baru akan muncul.

  6. Di bagian Disk, pilih disk mandiri yang Anda buat dari menu drop-down. Tindakan ini akan memasang disk mandiri ke instance sehingga Anda dapat memasangnya dan mengubah konten disk nanti.

  7. Klik Done untuk menyelesaikan pemasangan disk.

  8. Klik tombol Create untuk membuat instance.

gcloud

Buat disk mandiri dari boot disk image yang Anda impor. Atau, Anda dapat melepaskan boot disk dari sebuah instance dan membuat instance menggunakan boot disk yang dilepas tersebut.

gcloud compute disks create DISK_NAME \
    --zone=ZONE \
    --image=IMAGE_NAME

Ganti kode berikut:

  • DISK_NAME: nama untuk disk mandiri baru.

  • ZONE: zona di dekat Anda. Anda harus menggunakan zona yang sama ini saat membuat instance sementara.

  • IMAGE_NAME: nama boot disk image yang Anda impor.

Buat instance sementara untuk memasang disk mandiri dan mengonfigurasi bootloader agar berfungsi di lingkungan konsol Google Cloud .

gcloud compute instances create INSTANCE_NAME \
    --zone=ZONE \
    --disk name=DISK_NAME

Ganti kode berikut:

  • INSTANCE_NAME: nama unik untuk instance Anda

  • ZONE: zona tempat Anda membuat disk mandiri

  • DISK_NAME: nama disk mandiri yang Anda buat dari boot disk image yang diimpor

Setelah membuat instance dengan disk mandiri yang terpasang, Anda memiliki lingkungan virtual tempat Anda dapat memodifikasi bootloader dari boot disk image asli.

Mengonfigurasi boot disk

Hubungkan ke instance, pasang disk mandiri, dan konfigurasikan bootloader agar dapat melakukan booting dengan benar di Compute Engine.

  1. Hubungkan ke instance sementara dengan menggunakan SSH-in-browser atau perintah gcloud compute ssh.
  2. Gunakan perintah blkid untuk mengidentifikasi disk yang ingin dimodifikasi dan partisi yang perlu dipasang. Dalam contoh ini, /dev/sdb adalah disk yang Anda impor.

    lsblk
    
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   10G  0 disk
    └─sda1   8:1    0   10G  0 part /
    sdb      8:16   0  100G  0 disk
    ├─sdb1   8:17   0   96G  0 part
    ├─sdb2   8:18   0    1K  0 part
    └─sdb5   8:21   0    4G  0 part
    
  3. Pasang partisi root dari disk mandiri ke direktori /tmp. Dalam contoh ini, /dev/sdb1 adalah partisi root dan partisi lainnya tidak memerlukan modifikasi apa pun. Skema partisi Anda mungkin mengharuskan Anda memasang beberapa partisi sebelum dapat mengakses semua file yang perlu diubah.

    sudo mount DEVICE_NAME /tmp
    

    Ganti DEVICE_NAME dengan nama perangkat partisi root yang akan dipasang; misalnya, /dev/sdb1.

  4. Edit file yang dapat menyebabkan disk gagal dalam proses booting. Untuk informasi selengkapnya, lihat petunjuk konfigurasi bootloader.

  5. Lepaskan boot disk dari instance sementara.

    sudo umount /tmp
    

Menggunakan boot disk

Setelah selesai mengonfigurasi disk ini, lepaskan disk tersebut, lalu gunakan sebagai boot disk untuk instance baru.

Konsol

Lepaskan disk mandiri dari instance sementara.

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

    Buka Instances

  2. Pada daftar instance, klik nama instance sementara tempat Anda mengubah boot disk mandiri. Halaman detail instance akan terbuka.

  3. Di bagian atas halaman detail instance, klik Edit.

  4. Di bagian Additional disks, klik X di samping disk mandiri untuk menunjukkan bahwa Anda ingin melepaskannya dari instance sementara.

  5. Klik Save untuk menyimpan perubahan.

Gunakan disk mandiri yang dilepas untuk membuat instance.

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

    Buka Instances

  2. Klik tombol Create instance.

  3. Di halaman Create an instance, tentukan nama instance dan zona untuk menemukan instance. Zona tersebut harus berada di zona yang sama tempat Anda membuat disk mandiri.

  4. Di bagian Boot disk, klik Change untuk mulai mengonfigurasi boot disk Anda.

  5. Di tab Existing disks, pilih boot disk mandiri untuk digunakan sebagai boot disk untuk instance baru ini.

  6. Klik tombol Create untuk membuat instance.

gcloud

Lepaskan disk mandiri dari instance sementara.

gcloud compute instances detach-disk INSTANCE_NAME \
    --disk name=DISK_NAME

Ganti kode berikut:

  • INSTANCE_NAME: Nama unik untuk instance Anda.
  • DISK_NAME: Nama untuk disk mandiri baru.

Gunakan disk mandiri yang dilepas untuk membuat instance.

gcloud compute instances create INSTANCE_NAME \
    --zone ZONE \
    --disk name=DISK_NAME,boot=yes

Ganti kode berikut:

  • INSTANCE_NAME: nama unik untuk instance Anda
  • ZONE: zona tempat disk mandiri berada
  • DISK_NAME: nama disk mandiri yang Anda buat dari boot disk image yang diimpor

Uji instance yang Anda buat menggunakan boot disk yang dimodifikasi. Jika Anda masih tidak dapat terhubung ke instance, lihat output port serial lagi untuk mengidentifikasi tempat proses booting gagal. Ulangi proses pemecahan masalah sampai Anda memperbaiki masalah pada boot disk image.