Dokumen ini membantu Anda mengetahui alasan instance Compute Engine Linux gagal di-boot dan mengatasi masalah umum.
Instance komputasi yang gagal melakukan booting biasanya menunjukkan satu atau beberapa gejala berikut:
- Instance komputasi berada dalam status
RUNNING, tetapi Anda tidak dapat terhubung ke instance tersebut menggunakan SSH. - Output serial console berhenti di tengah urutan booting, atau berakhir di prompt darurat atau pemulihan.
- Output konsol serial berisi
FAILED,error:,Kernel panic, atauemergency mode.
Untuk menyelesaikan masalah booting, pertama-tama identifikasi penyebabnya, lalu perbaiki dari dalam instance komputasi jika Anda masih dapat terhubung, atau perbaiki secara offline dengan memasang boot disk ke instance komputasi lain.
Jika instance komputasi selesai melakukan booting, tetapi Anda tidak dapat terhubung ke instance tersebut, lihat Memecahkan masalah error SSH.
Sebelum memulai
- Pastikan instance komputasi menulis output konsol serial. Output port serial tersedia saat instance komputasi berjalan; untuk mempertahankannya setelah instance komputasi berhenti, aktifkan logging port serial ke Cloud Logging. Untuk informasi selengkapnya, lihat Melihat output port serial.
-
Siapkan autentikasi jika Anda belum melakukannya.
Autentikasi memverifikasi identitas Anda untuk mengakses layanan Google Cloud dan API. Untuk menjalankan
kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke
Compute Engine dengan memilih salah satu opsi berikut:
-
Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud initJika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
- Tetapkan region dan zona default.
-
Mendeteksi penyebabnya secara otomatis
Sebelum membaca output konsol serial secara manual, gunakan salah satu alat berikut. Setiap pemeriksaan membaca output booting terbaru instance komputasi, melaporkan kemungkinan penyebabnya, dan menautkan ke bagian yang cocok dalam dokumen ini.
Konsol
Di konsol Google Cloud , buka halaman VM instances.
Di baris untuk instance komputasi, klik SSH.
Jika koneksi gagal, klik Pecahkan masalah dalam dialog koneksi. Pemecah masalah menjalankan pemeriksaan konektivitas, termasuk pemeriksaan booting yang menganalisis output konsol serial.
gcloud
Untuk memeriksa instance komputasi yang tidak dapat Anda hubungkan menggunakan SSH, jalankan pemecah masalah SSH gcloud CLI, yang menjalankan pemeriksaan konektivitas dan pemeriksaan booting:
gcloud compute ssh INSTANCE_NAME --zone=ZONE --troubleshoot
Untuk memeriksa urutan booting secara langsung, jalankan perintah diagnostik booting:
Untuk menggunakan perintah ini, pastikan Anda telah menginstal komponen perintah alfa.
gcloud alpha compute diagnose boot INSTANCE_NAME --zone=ZONE
Ganti kode berikut:
INSTANCE_NAME: nama instance komputasi.ZONE: zona yang berisi instance komputasi.
Jika masalah booting terdeteksi, output akan menyebutkan penyebab dan menautkan ke perbaikannya. Jika tidak ada masalah yang ditemukan, lanjutkan dengan langkah-langkah manual.
Membaca output serial console
Jika alat tidak mendeteksi masalah, atau jika Anda ingin mengonfirmasi penyebabnya, baca sendiri output serial console:
Konsol
Di konsol Google Cloud , buka halaman VM instances.
Pilih instance komputasi yang ingin Anda lihat output port serialnya.
Di bagian Logs, klik Port serial 1 (console).
gcloud
gcloud compute instances get-serial-port-output INSTANCE_NAME --zone=ZONE
Ganti kode berikut:
INSTANCE_NAME: nama instance komputasi.ZONE: zona yang berisi instance komputasi.
Buka booting terakhir. Baris yang berguna biasanya berada tepat sebelum
baris [FAILED] pertama, baris Kernel panic, atau perintah
darurat. Bandingkan apa yang Anda temukan dengan tanda tangan di bagian berikut.
Masalah umum saat booting
Bagian berikut mencantumkan kegagalan booting umum pada instance komputasi Linux, tanda tangan output serial console-nya, dan cara menyelesaikannya. Sebagian besar resolusi mengharuskan Anda memasang boot disk ke VM penyelamatan, seperti yang dijelaskan dalam Memperbaiki disk secara offline.
Entri file /etc/fstab tidak dapat dipasang
Gejala: Output serial console berisi baris seperti berikut, diikuti dengan You are in emergency mode:
UUID=1234abcd-... does not exist
Timed out waiting for device /dev/sdb1
mount: special device /dev/sdb1 does not exist
[DEPEND] Dependency failed for /mnt/data.mount
Penyebab: Entri di /etc/fstab merujuk ke perangkat atau UUID yang tidak
terpasang ke instance komputasi, atau sistem file tidak dapat dipasang. Layanan
systemd menghentikan booting dan beralih ke mode darurat.
Penyelesaian: Di VM penyelamat, perbaiki entri di /etc/fstab pada
disk yang terpasang, atau hapus entri tersebut. Untuk mengetahui prosedurnya, lihat
Memecahkan masalah booting VM Linux karena error fstab.
Untuk opsi pemasangan yang menghentikan perangkat yang hilang agar tidak memblokir booting, lihat Pasang disk.
GRUB tidak dapat memuat konfigurasi atau kernelnya
Gejala: Proses booting berhenti di prompt GRUB, dan output serial console berisi baris seperti berikut:
error: file '/boot/grub/grub.cfg' not found
error: file '/vmlinuz-6.1.0-18-amd64' not found
error: no such partition
error: no such device
error: unknown filesystem
error: you need to load the kernel first
grub rescue>
Minimal BASH-like line editing is supported
Penyebab: Boot loader GRUB tidak dapat menemukan file konfigurasinya, modulnya, atau kernel dan disk RAM awal yang dirujuk oleh konfigurasi tersebut. Masalah ini terjadi setelah upgrade paket gagal, perubahan pada tata letak partisi, partisi /boot yang diformat ulang atau rusak, atau disk yang dikloning yang UUID sistem filenya berubah.
Penyelesaian: Di VM penyelamatan, pasang boot disk dan masukkan lingkungan chroot
seperti yang dijelaskan dalam
Menyelamatkan VM, lalu
buat ulang file konfigurasi GRUB seperti yang dijelaskan dalam
Mengonfigurasi bootloader.
Jika boot loader tidak dapat diperbaiki, pulihkan disk dari
snapshot.
Disk RAM awal tidak dapat memasang sistem file root
Gejala: Output serial console berisi baris seperti berikut:
dracut-initqueue[452]: Warning: dracut-initqueue timeout - starting timeout scripts
dracut: FATAL: ...
Failed to mount /sysroot
ALERT! UUID=1234abcd-... does not exist. Dropping to a shell!
Gave up waiting for root file system device
VFS: Unable to mount root fs on unknown-block(0,0)
Penyebab: Disk RAM awal (initramfs) dimulai, tetapi tidak dapat menemukan atau memasang sistem file root. Penyebab umumnya adalah parameter kernel root=
atau UUID yang tidak lagi cocok dengan disk, image initramfs yang
tidak memiliki driver untuk disk, atau image initramfs yang rusak. Pada seri mesin yang menggunakan antarmuka disk NVMe, konfigurasi booting yang menamai disk berdasarkan jalur perangkat seperti /dev/sda tidak lagi cocok; gunakan UUID sebagai gantinya.
Resolusi: Pastikan sistem file root yang dicari oleh disk RAM awal ada di disk yang terpasang, lalu bangun kembali disk RAM awal untuk sistem operasi Anda. Untuk mengetahui prosedurnya, lihat Memecahkan masalah booting VM Linux karena kernel panic dan Memperbaiki disk yang offline.
Kerusakan sistem file
Gejala: Output serial console berisi baris seperti berikut:
Bad magic number in super-block
EXT4-fs error (device sda1): ...
XFS (sda1): Metadata corruption detected
XFS (sda1): log mount/recovery failed
BTRFS error (device sda1): ...
UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
Penyebab: Sistem file pada disk booting rusak, biasanya setelah penonaktifan yang tidak benar, disk penuh, atau error I/O.
Penyelesaian: Buat snapshot disk. Kemudian, di VM penyelamat, periksa dan perbaiki sistem file pada disk yang di-unmount seperti yang dijelaskan dalam Mengidentifikasi alasan mengapa boot disk tidak dapat di-booting. Jika pemeriksaan tidak dapat memperbaiki sistem file, pulihkan disk dari snapshot.
Kernel panic
Gejala: Output serial console berisi Kernel panic - not
syncing: diikuti dengan alasannya, misalnya Attempted to kill init!,
Fatal exception, hung_task: blocked tasks, Out of memory, Fatal
Machine check, atau NMI: Not continuing. Image kernel yang rusak berhenti
lebih awal dengan -- System halted.
Penyebab: Kernel mengalami error yang tidak dapat dipulihkan. Alasan setelah
titik dua mengidentifikasi kategori: init mengalami error, pemeriksaan mesin hardware, panik karena kehabisan memori, atau image kernel yang rusak.
Penyelesaian: Reset instance komputasi. Jika panic berulang, lihat Memecahkan masalah booting VM Linux karena kernel panic.
Kebijakan SELinux gagal dimuat
Gejala: Output serial console berisi salah satu hal berikut, dan booting berhenti:
Failed to load SELinux policy
Unable to load SELinux policy
Anda mungkin juga melihat Warning -- SELinux targeted policy relabel is
required, yang bukan merupakan error: instance komputasi melabeli ulang sistem file
lalu memulai ulang dengan sendirinya.
Penyebab: Penyimpanan kebijakan SELinux di disk tidak ada atau rusak, atau label file tidak konsisten setelah pemulihan atau perubahan offline.
Resolusi: Di VM penyelamat, tandai disk yang terpasang untuk pelabelan ulang SELinux penuh saat booting berikutnya, atau instal ulang paket kebijakan SELinux untuk sistem operasi Anda jika penyimpanan kebijakan rusak. Pada OS image berbasis RHEL, Anda dapat membiarkan instance komputasi melakukan booting saat Anda memperbaiki kebijakan dengan menyetel SELinux ke mode permisif, seperti yang dijelaskan dalam Mengubah SELinux ke mode permisif.
Sistem tidak dapat memulai proses init
Gejala: Output serial console berisi baris seperti berikut:
Failed to switch root
Target filesystem doesn't have requested /sbin/init
No working init found
run-init: /sbin/init: No such file or directory
/sbin/init: error while loading shared libraries: ...
Penyebab: Sistem file root ter-mount, tetapi program init, seperti
systemd, tidak ada, tidak dapat dieksekusi, atau bergantung pada library bersama
yang tidak ada. Masalah ini biasanya terjadi setelah upgrade paket yang terganggu
atau pemulihan yang tidak lengkap.
Penyelesaian: Di VM penyelamatan, masukkan lingkungan chroot seperti yang dijelaskan dalam
Menyelamatkan VM, verifikasi
bahwa program init ada dan library-nya masih utuh, dan jika
tidak, instal ulang paket sistem init menggunakan pengelola paket distribusi Anda.
Mode darurat dan akun root terkunci
Gejala: Output serial console diakhiri dengan salah satu dari berikut ini:
You are in emergency mode. After logging in, type "journalctl -xb" to view system logs
Give root password for maintenance (or press Control-D to continue):
Cannot open access to console, the root account is locked.
Penyebab: Unit gagal saat booting dan systemd berhenti di target
darurat. Pada image OS yang disediakan Google, akun root tidak memiliki sandi, sehingga shell darurat tidak dapat digunakan dari konsol serial.
Resolusi: Baris yang mendahului nama perintah darurat menyebutkan unit yang gagal. Kegagalan biasanya disebabkan oleh salah satu masalah berikut:
- Entri file
/etc/fstabtidak dapat di-mount - Disk RAM awal tidak dapat memasang sistem file root
- Kerusakan sistem file
Perbaiki penyebabnya secara offline seperti yang dijelaskan dalam Memperbaiki disk secara offline; jangan mencoba menggunakan shell darurat.
Firmware tidak dapat menemukan disk yang dapat di-booting
Gejala: Output serial console berisi salah satu dari berikut ini sebelum pesan kernel:
No bootable device.
BdsDxe: failed to load Boot0001
Invalid partition table!
Verification failed: (0x1A) Security Violation
Penyebab: Boot disk tidak terpasang sebagai perangkat booting, tabel partisi atau data booting-nya rusak, atau, pada instance Shielded VM dengan Booting Aman, bootloader atau kernel tidak ditandatangani dengan benar.
Penyelesaian: Pastikan disk terpasang sebagai boot disk instance komputasi; lihat Melepas dan memasang kembali disk. Jika tabel partisi atau catatan booting rusak, perbaiki boot loader seperti yang dijelaskan dalam GRUB tidak dapat memuat konfigurasi atau kernelnya. Pelanggaran Booting Aman tidak dapat diperbaiki dengan mengedit disk: pulihkan kernel dan boot loader yang ditandatangani, atau nonaktifkan Booting Aman pada instance komputasi seperti yang dijelaskan dalam Mengubah opsi Shielded VM pada instance VM.
Memperbaiki disk secara offline
Sebagian besar masalah booting tidak dapat diperbaiki dari dalam instance komputasi, karena instance komputasi tidak pernah mencapai perintah login. Sebagai gantinya, pasang boot disk ke VM penyelamat sementara, pasang, lakukan perubahan, dan pindahkan disk kembali. Untuk mengetahui prosedurnya, lihat Menyelamatkan VM yang tidak dapat diakses.
Resolusi dalam dokumen ini mengasumsikan bahwa boot disk asli terpasang dan ter-mount di VM penyelamat. Sebelum mengubah disk, buat snapshot agar Anda dapat memulihkannya jika perbaikan gagal. Untuk prosedurnya, lihat Membuat snapshot disk arsip dan standar.
Memulihkan instance komputasi jika disk tidak dapat diperbaiki
Jika tidak ada resolusi yang berhasil, atau jika sistem file tidak dapat diperbaiki, pulihkan boot disk dari snapshot, atau buat instance komputasi baru dari snapshot atau OS image kustom dan pindahkan data Anda ke instance tersebut.
Langkah berikutnya
- Menyelamatkan VM yang tidak dapat diakses
- Melihat output port serial
- Memecahkan masalah error SSH
- Membuat snapshot disk arsip dan standar