1
Server / QEMU nad LVM se zasekává
« kdy: 03. 10. 2024, 18:49:04 »
Ahoj, posledni dobou se me deje podivna vec - QEMU proces se zasekne v neprerusitelnem sleepu (top: D state).
Konfigurace stacku je tahle:
- gentoo linux 6.11.0
- md raid1 mirror (hdd+ssd)
- lvm (pv/vg/lv)
- losetup ( posun o 1 sektor )
- qemu (9.0.2)
- winxp
Kdyz se to zasekne, tak nefunguje ani RDP z guestu (winxp), a celkove Qemu zhebne (nefunguje ani remote spice klient - a ani pripojeni na lokalni monitoring socket).
A co vic, nefunguje ani lvs prikaz na vypsani logical volumes. Proste taky D state a zasekne se.
strace lvs - me rikal posledne, ze to pouziva async io.. tak jsem podezrival tohle - pridal jsem do qemu option na disk ve tvaru ,aio=threads, ale neni s tim rozdil. Po tydnu se to ted seklo zas.
Stav je to docela neprijemny, protoze se host os neda vypnout ani restartnout - musim shodit ostatni VM, vsechny sluzby a pak to navrdo resnout, doufajic, ze systemovy oddil prezije (zatim nizsi jednotky tvrdych resetu to dalo... ext4 nad lvm).
Mam podezreni ze se sekne nejake uzamykani v jadre - ale netusim kde se divat.
Na starem jadru co tam bylo predtim to nedelalo zadny problem, ale to tam vracet nechci (6.6.52), plus byla nejaka podstatna zmena konfigurace, abych novym jadrem pokryl a sjednotil vicero stroju.
Jak by jste ladili takovou vec, co se objevi jednou za tyden? (tedy, pred tydnem jsem to potkal asi 3x v rade prvni den.. pak vznikl dodatek qemu konfigurace s aio=threads)
v lsof nejak nepoznam, na ktery fd to delalo jakou operaci? nebo jinde v sysfs? Neco jako show in-flight syscalls ?
Je fakt blby ze neni nejaky unlocker, na tyhle kernel-side locknute IO.
Klidne za cenu ze ta aplikace dostane error, spatna data nebo bude ukoncena v momente navratu syscallu.
EDIT:
pridal jsem sysrq podporu do jadra, az to padne priste at muzu udelat ten w command:
https://www.suse.com/support/kb/doc/?id=000016919
Konfigurace stacku je tahle:
- gentoo linux 6.11.0
- md raid1 mirror (hdd+ssd)
- lvm (pv/vg/lv)
- losetup ( posun o 1 sektor )
- qemu (9.0.2)
- winxp
Kdyz se to zasekne, tak nefunguje ani RDP z guestu (winxp), a celkove Qemu zhebne (nefunguje ani remote spice klient - a ani pripojeni na lokalni monitoring socket).
A co vic, nefunguje ani lvs prikaz na vypsani logical volumes. Proste taky D state a zasekne se.
strace lvs - me rikal posledne, ze to pouziva async io.. tak jsem podezrival tohle - pridal jsem do qemu option na disk ve tvaru ,aio=threads, ale neni s tim rozdil. Po tydnu se to ted seklo zas.
Stav je to docela neprijemny, protoze se host os neda vypnout ani restartnout - musim shodit ostatni VM, vsechny sluzby a pak to navrdo resnout, doufajic, ze systemovy oddil prezije (zatim nizsi jednotky tvrdych resetu to dalo... ext4 nad lvm).
Mam podezreni ze se sekne nejake uzamykani v jadre - ale netusim kde se divat.
Na starem jadru co tam bylo predtim to nedelalo zadny problem, ale to tam vracet nechci (6.6.52), plus byla nejaka podstatna zmena konfigurace, abych novym jadrem pokryl a sjednotil vicero stroju.
Jak by jste ladili takovou vec, co se objevi jednou za tyden? (tedy, pred tydnem jsem to potkal asi 3x v rade prvni den.. pak vznikl dodatek qemu konfigurace s aio=threads)
v lsof nejak nepoznam, na ktery fd to delalo jakou operaci? nebo jinde v sysfs? Neco jako show in-flight syscalls ?
Je fakt blby ze neni nejaky unlocker, na tyhle kernel-side locknute IO.
Klidne za cenu ze ta aplikace dostane error, spatna data nebo bude ukoncena v momente navratu syscallu.
EDIT:
pridal jsem sysrq podporu do jadra, az to padne priste at muzu udelat ten w command:
https://www.suse.com/support/kb/doc/?id=000016919