Merhaba, her şey Proxmox’u GUI üzerinden kernel güncellemem ve ana sunucuya reboot işleminden sonra başladı. Belli bir süre bekledikten sonra sunucumun hala açılmadığını gördüm, ne SSH ne de GUI üzerinden erişim sağlayabiliyordum. Biraz daha bekledikten sonra hemen Hetzner üzerinden sunucumu Rescue mode aldım ve sunucudaki dosyalarımı kontrol ettim. Neyse ki dosyalarımda bir problem görünmüyordu. En kötü ihtimalle dosyalarımı rescue mode üzerinden mount ederek kurtarabilirdim. Ama ~2TB verimin olduğunu düşünürsek bunu 2. plan olarak düşündüm.
Daha sonra Hetzner – Support sayfasından cihazıma bir KVM bağlanılması talebinde bulundum. Pazar günü saat gece 02:30 olmasına rağmen 15 ~dk gibi bir sürede KVM bağladılar. Hetzner’in destek ekibinin yetersiz olduğunu söyler herkes. Ben öyle olduklarını düşünmüyorum. Sunucuma Lantronix – Spider Duo KVM bağlantısı yapıldı. Hemen panele giriş yaptım ve Console’yi başlattım.
Fark ettim ki sorun Network kaynaklı değil, console üzerinde gördüğüm mesaj şuna benziyordu:
Kernel Panic: VFS: unable to mount root fs on unknown block.
İlk aklıma gelen Grub’un çökmüş olmasıydı. Fakat /boot dizinindeki dosya yapısını da kontrol etmiştim ve bir sorun görünmüyordu. Google’ da da bununla ilgili pek fazla kaynak çıkmıyordu. Bir çok yöntem denedim, BIOS’tan Legacy yerine UEFI açtım, Network Boot ile grub’u yeniden kurmaya çalıştım falan ama nafile. Sunucuyu tekrar Hetzner üzerinden Rescue mode geçirdim ve SSH ile giriş yaptım.
df -h komutu ile bölümleri kontrol etmek istediğimde sorunun tam olarak neyden kaynaklandığını anladım.
/boot 467MB 467MB %100
Evet sorun /boot dizininin tam kapasite dolu olmasınan kaynaklanıyordu, ben Proxmox kernel güncellemesini başlattığım zaman güncelleme esnasında yeni kernel’in img ve grub konfigürasyonları yazdırılırken disk doldu ve dosya yapısı bozuk/eksik biçimde kaldı.
Hemen /boot dizinini mount etmeye dev, proc ve sys’i de mount ederek içerden komut çalıştırmaya ve eski kernelleri silmeye karar verdim. Onun için aşağıda ki komutları çalıştırdım. Bu arada bu komutlar Hetzner’de sadece software raid kullananlar için geçerli. Benim yapılandırmam da bu şekildeydi. Siz yazılımsal raid kullanıp kullanmadığınızı lsblk komutu ile tespit edebilirsiniz.
mount /dev/md2 /mnt
mount /dev/md1 /mnt/boot
mount -t dev -o bind /dev /mnt/dev
mount -t proc -o bind /proc /mnt/proc
mount -t sys -o bind /sys /mnt/sys
chroot /mnt
Ardından hemen /mnt/boot ‘ a giderek eski kernel dosyalarından bir kaçını sildim.
rm -rf config-{kernel_versiyonu}-pve
rm -rf initrd.img--{kernel_versiyonu}-pve
rm -rf System.map-{kernel_versiyonu}-pve
rm -rf vmlinuz-{kernel_versiyonu}-pve
Yaklaşık 120~ MB civarında dosya sildikten sonra, apt-get autoremove komutu ile tüm kalıntıları ve eski kernel öğelerini yok ettim. Bundan sonra yapılması gereken tek şey kaldı, apt –fix-broken install komutunu çalıştırarak Proxmox’un güncelleme esnasında bozduğu / yazamadığı verileri düzeltmesini sağladım. Her şey sorunsuz görünüyordu ardından /reboot ile rescue mode’ yi kapattım. Yaklaşık ~5dk sonra sunucum başarıyla açıldı!
Kaynaklar:
* https://blog.michael.franzl.name/2014/01/29/remote-server-hetzner-rebooting/
* https://gist.github.com/ipbastola/2760cfc28be62a5ee10036851c654600
* https://forum.proxmox.com/threads/no-boot-after-upgrade-proxmox.77293/