Neues regelbasiertes Backend für libguestfs

Libguestfs eine sichere und skriptfähige Open-Source-Bibliothek, die nützliche Dienste bei der Fehlersuche in KVM- oder Xen-Umgebungen leistet, weil Nutzer mit deren Hilfe auf die Dateisystemebene der Disk-Images von Open-Source-VMs zuzugreifen können. So können etwa VMs ohne großen Aufwand und ohne externe Managementsoftware vom Hypervisor aus gesichert werden. 

Libguestfs hilft sogar bei der Fehlersuche, wenn sich die betreffenden VMs nicht mehr einschalten lassen. Libguestfs kommt mit jedem VM-Typ zurecht, der von libvirt unterstützt wird, also KVM, Xen, Qemu usw. . Die Bibliothek ermöglicht optional auch direkten Zugriff auf zahlreiche Dateisysteme innerhalb der VM, als wären diese lokal ins Host-Dateisystem eingebunden, wie z. B. NTFS, ext2/3/4, HFS), aber auch auf viele Raw-Formate wie VMDK oder VHD(X).

Jetzt mit regelbasiertem Backend

Richard W.M. Jones, der bei Red Hat beschäftige Entwickler des Open-Source-Tools, weist nun in seinem Blog auf neues Feature hin, dass den Coder zur Inspektion von Gastsystemen besser wartbar machen soll.

Bei libguestfs versuchen verschiedene Einzel-Tools aus dem Paket, darunter der „virt-inspector“ herauszufinden, welches Gastsystem im jeweiligen Image installiert ist und wie es aufgebaut ist, also welche Distribution, welches Partitionslayout und so weiter. Das ging auch schon vorher, allerdings steckte der zugehörige Code in mehreren tausend Zeilen schwer wartbaren C-Codes.

Dieser wurde nun von Jones durch ein neues Subsystem ersetzt, das es erlaubt, die zum Inspizieren erforderlichen Heuristiken in Form einfach verständlichen Regeln vorzugeben, vergleichbar den Fakten bei Prolog. Jones hat dazu eigens einen Compiler implementiert, der aus den Regeln C-Code generiert, der dann in die Guestfs-Tools ein-compiliert wird. Nach Ansicht von Jones ist das neue System schneller und besser wartbar, als der bisherige Code. Hundertprozentige Rückwärtskompatibilität sei aber gewährleistet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.