Memecahkan masalah startup VM


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

Error kuota

Jika menerima error kuota saat mencoba memulai instance, Anda harus meminta kuota CPU tambahan. Untuk mengetahui informasi selengkapnya, lihat bagian Instance VM dalam dokumentasi kuota resource.

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 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:

      sudo fsck /dev/sdb1
      fsck from util-linux 2.20.1
      e2fsck 1.42.5 (29-Jul-2012)
      /dev/sdb1: clean, 19829/655360 files, 208111/2621184 blocks
      
    7. Pasang sistem file Anda:

       sudo mkdir /mydisk
      
       sudo mount /dev/sdb1 /mydisk
      
    8. Periksa apakah disk memiliki file kernel:

       ls /mydisk/boot/vmlinuz-*
       /mydisk/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, seperti /dev/sdb:

    sudo parted /dev/sdb print
    

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

    Disk /dev/sdb: 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. Pada 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
    • Gambar sumber: Specify the name of the boot disk image that you imported.
  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 /dev/sdb1 /tmp
    
  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 Instance VM.

    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.