icon

Fekete BT

Publikálva: 2026.03.11
Frissítve: -

Tartalomjegyzék

Watchdog Kernel Panic ellen

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.

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

Kockázatok

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.

Watchdog Kernel Panic ellen Ubuntu 16.04-n

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.

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

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