Publikálva: 2026.03.11
Frissítve: -
Publikálva: 2026.03.11
Frissítve: -
A Broadcom pénzéhsége miatt sokan pártolnak el a VMware mellől. Ennek persze sok előnye és hátránya is van, mert tapasztalatom alapján sokan döntenek a Proxmox mellett. Mivel a Proxmox támogatja azt, hogy többé kevésbé direkbte migráljuk át a gépeket VMware alól, emiatt sokan fejest is ugranak ebbe. Az egyetlen probléma ezzel az, hogy Linux-os gépek esetében néha random kernel panic-kal találkozik az ember. Natívan Proxmox alá telepített gépekkel én nem találkoztam ilyen hibával, de migrált gépeknél annál gyakrabban. Erre a legegyszerűbb megoldás az, hogy ha újra telepítjük a migrált gépet Proxmox alá. Persze ezzel akadhatnak problémák. Nálam is vannak csontvázak, amiket inkább csak lélegeztetőgépen kell tartani vagy akkora mennyiségről van szó, hogy addig is valami megoldást kell találni.
Erre megoldásként a watchdog-ot találtam, ami kernel panic esetében rebootolja a gépet. A Proxmox fórumán ezt a leírást találtam: https://forum.proxmox.com/threads/hardware-watchdog-at-a-per-vm-level.104051/. Ez olyan téren egy jó megoldás, hogy csak bizonyos VM-ekre vonatkozik és nem egy globális változtatást jelent. Ugyanakkor a leírás nem teljesen az igazi, emiatt próbáltam egy kicsit finomhangolni PROD környezetre.
1. Proxmox szintű VM konfig módosítás
Ezt Proxmox node szinten kell elvégezni!
A megfelelő VM configot szerkesszük:
nano /etc/pve/qemu-server/[vm_id].conf
A konfig legvégére másoljuk be ezt:
watchdog: model=i6300esb,action=reset
Ezzel létrehoztunk egy virtuális (hypervisor) watchdog-ot.
2. VM szintű módosítások
Ezeket a lépéseket VM szinten kell elvégezni! Tehát magára a VM-re kell belépni.
Először is telepítsük a watchdog-ot:
apt install watchdog
Szerkesszük a konfig fájlját:
nano /etc/watchdog.conf
A végére másoljuk be ezt:
watchdog-device = /dev/watchdog
log-dir = /var/log/watchdog
interval = 10
timeout = 30
realtime = no
priority = 0
Jelenleg mi egy userspace watchdog-ot hozunk létre ezzel. Amit érdemes lehet módosítani az az interval és a timeout érték. Jelen beállítások mellett 10 mp-ként van egy check és 30 mp után történik csak reset.
Szerkesszük a következő fájlt:
nano /etc/default/watchdog
Írjuk át a "watchdog_module" részt a lent látható módon:
watchdog_module=i6300esb
A VM indulásánál automatán be fogja tölteni a rendszer a megfelelő kernel modult. Így kapcsoljuk össze a userspace watchdog-ot a virtuálissal.
Most már csak annyi a dolgunk, hogy megmondjuk a rendszernek, hogy a watchdog-ot indítsa automatikusan:
systemctl enable watchdog
Régi Ubuntu-k esetében ez a parancs működik:
update-rc.d watatchdog enable
Ezt követően egy teljes "poweroff" kell a gépen. Nem elég egy reboot.
A gép újraindítása után pár dolgot ellenőrizni kell:
Betöltődött-e a megfelelő kernel modul:
lsmod | grep i6300esb
A parancs kimenete:
i6300esb 12288 1
watchdog 49152 3 iTCO_wdt,i6300esb
Ha jobban tetszik, akkor ezt akár dmesg-gel is megnézhetjük:
dmesg | grep i6300
A parancs kimenete:
[ 1.118547] i6300ESB timer 0000:06:04.0: initialized. heartbeat=30 sec (nowayout=0)
Ezzel igazából hátra is dőlhetnénk, de még beszélhetünk kernel szintű watchdog-ról is. Ha szeretnénk magunkat atombiztossá tenni, akkor érdemes azt is beállítani.
Hozzunk létre egy új sysctl konfig fájlt:
nano /etc/sysctl.d/99-kernel-recovery.conf
Másoljuk be ezt:
kernel.panic = 10
kernel.panic_on_oops = 0
kernel.watchdog = 1
kernel.softlockup_panic = 1
kernel.hardlockup_panic = 1
Lehetne ezt elég hosszan ecsetelni, hogy mi micsoda, de így lényegében csak a kernel oops esetén nincs automatikus reboot.
Ha nem szeretnénk valami miatt "reboot"-t nyomni a gépen, akkor az alábbi paranccsal azonnal életbe is léptethetjük:
sysctl --system
3. Tesztelés és ellenőrzés
Ha szeretnénk tesztelni azt, hogy mit követtünk el, akkor az alábbi paranccsal megtehetjük. Ugyanakkor ez azonnali kernel panic-ot vált ki, szóval óvatosan!
echo c > /proc/sysrq-trigger
Ha minden jól működik, akkor a VM szépen újraindul és mi boldogok lehetünk. Az alábbi három paranccsal ellenőrizhetünk.
uptime
grep -i panic /var/log/kern.log.1
grep -i watchdog /var/log/syslog.1
A watchdog-gal kiküszöbölhető a fagyások nagy része, viszont, mint minden más, ez sem kockázatmentes. Mivel már van userspace, kernel és "hardver" szintű watchdog-unk, emiatt ha bármi lefagy vagy pánikolni kezd, rajtunk kívül, akkor az a rendszer újraindításához fog vezetni. Ami viszont probléma, hogy ha valami miatt a deamon leáll, vagy a külső virtuális watchdog lehal, akkor az a gép újraindításához fog vezetni és adott esetben egy loop-ba is belekerülhet. Emiatt fontos, hogy legyen egy biztos pontunk amire vissza lehet állni, ha olyan (Ilyenkor adatvesztésre kell készülni.). Sajnos a gondot akár egy bug is okozhatja. Nálam PROD környezetben eddig jól vizsgázott egy Ubuntu 14.04-gyel és egy tesztelés miatt szétvert Debian 13-mal, így én sikernek könyvelem el.
Mivel sajnos ami elromolhat az el is fog romlani. Ubuntu 16.04-n nem egyszerű életre lehelni a Watchdog-ot (Így már hasonlít az Ubisoft játékok működéséhez.) a gyári service hibás ordering miatt. Ez volt az első sysmtd-s Ubuntu, így érhető, hogy gondok vannak vele, de azért rendesen megizzasztott.
1. Proxmox szintű VM konfig módosítás
Az első lépés ugyanaz, mint egy normálisan működő rendszer esetében. Ezt Proxmox node szinten kell elvégezni!
A megfelelő VM configot szerkesszük:
nano /etc/pve/qemu-server/[vm_id].conf
A konfig legvégére másoljuk be ezt:
watchdog: model=i6300esb,action=reset
Ezzel létrehoztunk egy virtuális (hypervisor) watchdog-ot.
2. VM szintű módosítások
Ezeket a lépéseket VM szinten kell elvégezni! Tehát magára a VM-re kell belépni.
Először is telepítsük a watchdog-ot, de ne az APT tárolóban lévőt, mivel az bugos. A következő linkről manuálisan is letölthetitek a "The Focal Fossa"-hoz tartozó 5.15-2-es csomagot: https://launchpad.net/ubuntu/+source/watchdog
B opcióként közvetelnül a VM-re wget-tel:
wget https://launchpad.net/ubuntu/+archive/primary/+files/watchdog_5.15-2_amd64.deb
Telepítsük:
dpkg -i watchdog_5.15-2_amd64.deb
Szerkesszük a konfig fájlját:
nano /etc/watchdog.conf
A végére másoljuk be ezt:
watchdog-device = /dev/watchdog
log-dir = /var/log/watchdog
interval = 10
timeout = 30
realtime = no
priority = 0
Jelenleg mi egy userspace watchdog-ot hozunk létre ezzel. Amit érdemes lehet módosítani az az interval és a timeout érték. Jelen beállítások mellett 10 mp-ként van egy check és 30 mp után történik csak reset.
Szerkesszük a következő fájlt:
nano /etc/default/watchdog
Írjuk át a "watchdog_module" részt a lent látható módon:
watchdog_module=i6300esb
A VM indulásánál automatán be fogja tölteni a rendszer a megfelelő kernel modult. Így kapcsoljuk össze a userspace watchdog-ot a virtuálissal.
Normál esetben most már csak az automata indulásról kéne gondoskodni, de pont ezzel lesz a főbb gond. Szóval az alapértelmezett beállításokat töröljük.
systemctl disable watchdog
systemctl stop watchdog
rm -rf /etc/systemd/system/watchdog.service.d
Hozzunk létre egy saját service-t:
nano /etc/systemd/system/pve-watchdog.service
Ez legyen a tartalma:
[Unit]
Description=Proxmox VM i6300ESB Watchdog
After=multi-user.target
[Service]
Type=simple
ExecStartPre=/sbin/modprobe i6300esb
ExecStart=/usr/sbin/watchdog -F
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Majd élesítsük a saját service-ünket:
systemctl daemon-reload
systemctl enable pve-watchdog
Ezt követően egy teljes "poweroff" kell a gépen. Nem elég egy reboot.
A gép újraindítása után pár dolgot ellenőrizni kell:
Betöltődött-e a megfelelő kernel modul:
lsmod | grep i6300esb
A parancs kimenete:
i6300esb 16384 1
Ha jobban tetszik, akkor ezt akár dmesg-gel is megnézhetjük:
dmesg | grep i6300
A parancs kimenete:
[ 5.061121] i6300esb: Intel 6300ESB WatchDog Timer Driver v0.05
[ 5.064377] i6300esb: initialized (0xffffc9000074a000). heartbeat=30 sec (nowayout=0)
Elindult-e a saját service-ünk:
systemctl status pve-watchdog
Elvárt kimenet:
feketebt@ubul:~$ systemctl status pve-watchdog
● pve-watchdog.service - Proxmox VM i6300ESB Watchdog
Loaded: loaded (/etc/systemd/system/pve-watchdog.service; enabled; vendor preset: enabled)
Active: active (running) since h 2026-03-23 15:46:53 CET; 27s ago
Process: 1459 ExecStartPre=/sbin/modprobe i6300esb (code=exited, status=0/SUCCESS)
Main PID: 1470 (watchdog)
Tasks: 1
Memory: 376.0K
CPU: 3ms
CGroup: /system.slice/pve-watchdog.service
└─1470 /usr/sbin/watchdog -F
márc 23 15:46:53 ubul watchdog[1470]: pidfile: no server process to check
márc 23 15:46:53 ubul watchdog[1470]: interface: no interface to check
márc 23 15:46:53 ubul watchdog[1470]: temperature: no sensors to check
márc 23 15:46:53 ubul watchdog[1470]: no test binary files
márc 23 15:46:53 ubul watchdog[1470]: no repair binary files
márc 23 15:46:53 ubul watchdog[1470]: error retry time-out = 60 seconds
márc 23 15:46:53 ubul watchdog[1470]: repair attempts = 1
márc 23 15:46:53 ubul watchdog[1470]: alive=/dev/watchdog heartbeat=[none] to=root no_act=no force=no
márc 23 15:46:53 ubul watchdog[1470]: watchdog now set to 60 seconds
márc 23 15:46:53 ubul watchdog[1470]: hardware watchdog identity: i6300ESB timer
Ezzel igazából hátra is dőlhetnénk, de még beszélhetünk kernel szintű watchdog-ról is. Ha szeretnénk magunkat atombiztossá tenni, akkor érdemes azt is beállítani.
Hozzunk létre egy új sysctl konfig fájlt:
nano /etc/sysctl.d/99-kernel-recovery.conf
Másoljuk be ezt:
kernel.panic = 10
kernel.panic_on_oops = 0
kernel.watchdog = 1
kernel.softlockup_panic = 1
kernel.hardlockup_panic = 1
Lehetne ezt elég hosszan ecsetelni, hogy mi micsoda, de így lényegében csak a kernel oops esetén nincs automatikus reboot.
Ha nem szeretnénk valami miatt "reboot"-t nyomni a gépen, akkor az alábbi paranccsal azonnal életbe is léptethetjük:
sysctl --system
Ha szeretnénk, akkor az alábbi paranccsal ellenőrizhetjük, hogy meg van-e a hardveres watchdog-unk:
lspci -v | grep -i watch
Kimenete:
00:04.0 System peripheral: Intel Corporation 6300ESB Watchdog Timer
3. Tesztelés és ellenőrzés
Ha szeretnénk tesztelni azt, hogy mit követtünk el, akkor az alábbi paranccsal megtehetjük. Ugyanakkor ez azonnali kernel panic-ot vált ki, szóval óvatosan!
echo c > /proc/sysrq-trigger
Ha minden jól működik, akkor a VM szépen újraindul és mi boldogok lehetünk. Az alábbi három paranccsal ellenőrizhetünk.
uptime
grep -i panic /var/log/kern.log.1
grep -i watchdog /var/log/syslog.1
Felhasznált linkek:
https://forum.proxmox.com/threads/hardware-watchdog-at-a-per-vm-level.104051/ (Watchdog Kernel Panic ellen)
!Figyelem!
Mindenki a saját maga meglátása és megítélése szerint cselekedjen az itt olvasottakkal és látottakkal kapcsolatban. Felelőléssget NEM válalok semmi iránt amit leírok, ez szimplán csak annak a dokumentálása, ami számomra működött.
Senkit nem buzdítok arra, hogy illegális forrásból szerezzen be bármit is. A lehetséges adatvesztésért felelősséget nem vállalok. A SAJÁT CSELEKEDETEIDÉRT, SAJÁT MAGAD FELELSZ!