Okay. Hello. Um, as I just, hello again, as I just said, um, I'm Guido Gründer and, um, this talk is about Litvert, which is, um, a library which, um, aims to make virtualization a little bit easier, especially, um, with a sheer amount of virtualization solutions we have in Debian. Fortunately, in Debian we can pick off about any virtualization solution that's available on the Linux like QMU, KVM, Zen, VirtualBox, Linux, OpenVZ, or user mode Linux. And, um, this is actually a very nice thing. But the problem with this is, um, some of these virtualization solutions, um, either don't have a stable ABI to work against, or they kind of tend to change the command line syntax, um, from release to release. And, um, well, at least in my case it's, if I have to use more than one or two virtualization solutions, I always, um, forget how to add a new device to the virtual machine because it's all different between these, um, solutions. And so, um, the word aims to abstract these common pieces of the virtualization solutions and provide an ABI to be able to use always the same, um, ABI and command line interface to do these kind of things. Um, so, just as I just said, so we are aiming for a stable command line interface to manage virtual machines and we're also aiming for a stable configuration file format and we're aiming for a stable API. So the, um, programs we write don't break with every new, um, version of a virtualization solution. Um, the format is XML based, which is not everybody's favorite. Um, and obviously not all features supported by all hypervisors are available in Libert. This has two reasons. One reason is that, um, the hypervisors supported don't have a, don't have a different feature set. So, um, one hypervisor might support, might support, um, net device hot plugging another, probably not. And, um, even if both support net device hot plugging, it might not be the driver in Libert might not implement, um, this at this point in time. So, um, it's, so you won't have, you have a stable API, but you won't have all the features maybe available in a certain version of, of Libert, but the feature certainly will only increase over time. Um, so, um, when you use Libert as a virtualization API, you have a command line interface, um, that, that uses this, this library, it's called birch and it simply offers all the commands you would expect to have for a virtual machine life cycle. Like you can list all the available virtual machines on a host. You can get the domain information, which is kind of, um, how much RAM it currently uses. And these things you can get a description of the XML format currently used. You can define new domains. You can edit a domain, which, um, simply you can just say, birch, edit, and then the name of the virtual machine, which will spawn your editor, and you can edit in it and then say, safe, and the, um, configuration is adjusted. You can start new domains, you can destroy them, and you can, of course, shut them down. Then there's safe restore, suspend, resume, migrate, what you probably would expect. And on top of that, there's also some statistics functions. So you can get some block device statistics or you can get some domain, some interface statistics for network devices. And you've got, um, all the necessary command line things to attach and detach, um, new disks, new network devices, or, um, to pass in like USB devices from the host to the virtual machine or PCI devices, for example. Um, another area which Libert covers and which also birch the command line tool covers is, um, is an, are tools to manage, um, disk images. So you can, um, Libert tries to, um, organize disk images in storage pools and these pools, in the simplest case, this is just a directory. You can just list them, get information about it, um, can again get the XML definition and so on and so forth. And if you look at this, this basically maps most of the, the, um, command line arguments, map the, the things in the of us. So, um, which makes it pretty consistent. Same goes for, um, networking Libert has a, at the moment, quite simple, um, interface to define networks for virtual machines. And again, you have some set of commands and birch that, um, lets you modify them. And again, they look pretty much the same than the ones above. Um, last but least, you have some, um, support for, um, enumerating host devices like you can list the PCI devices or the USB devices in the host. So you can easily get, get the necessary XML descriptions to attach them to a virtual machine. Um, the whole point about this is that this, all these commands come in blocks like different, um, because they, um, operate on different, um, aspects of virtualization. And in these blocks, they're usually prefixed with something like net or pool or note def in this case. And but they're all pretty consistent between these areas. Um, so once you've used birch on the command line, and, um, I just picked some of the commands you, you'll be using to start and stop virtual machines. Um, it's actually quite easy to get started with a, with using the C library itself, because, um, again, the C library maps pretty much to the command line interface. So if you want to list all domains, you have in the C library, you have an interface, which is just called connect list domains, which, um, lists you all the, um, running domains. You have a function, um, corresponding to the info above, which is called bird domain, get info to get the domain information. You have a function, the C library to get the XML description, which is dump XML from above from the command line interface. You have a function, um, to define new virtual machines via XML, which is called in the C library domain define XML. And it's just called, um, define above. You have, um, a function to start the domain, which is in the bird, unfortunately called bird domain create, because it starts in the command line interface, destroy and shut down and just met directly to the C API. So, um, the whole point here is that once you just know your way around the command line, you basically know how to program the bird. Um, um, the other nice thing actually, I think is, um, the bird itself is written in C and, um, but you have bindings for lots of languages. So you have Python bindings, you have pearl bindings, you have objective camel bindings and you have Ruby bindings. All of these are already available in Debian. There are also Java bindings, but, um, they're not yet packaged because, um, I'm not that much interested in Java, but if anybody has interested in this, we can do this too. Um, I want to show a very short example on how to actually access, um, Liberty's ABI and I've picked Python because it's just a little bit more dense than the C code, but the function calls actually map quite well to each other. Um, of course, as in Python, you import the Lybert module and then, um, the first thing you do is you open a connection to, um, to Lybert in order to tell it what kind of hypervisor you want to use. So in this case, we want to use QMU, um, which, um, as, as, as hypervisor and we want to use a system QMU, which means we want to use a QMU that runs its root and, um, is spawned by a demon that is called Liberty. We see what that is just in a couple of minutes and, um, then we get back a connection object and then we can just as in the C API we saw just before we can list the domains and, um, get back the domain IDs of the running domains and then we can, um, look up each domain by its ID and get back a domain object and we can just call the name attribute and we get the names of all the running machines. So it's actually quite simple. One other nice thing in Lybert, which actually isn't in the command line interface because it just makes no sense. There is, um, Lybert has an event driven, um, call can just say I've got a program that is interested when my virtual machine crashes because I want to send a mail to root or something like that. And, um, that's actually quite simple too, because you just say you want to, um, domain event register, um, a callback. In this case, it's simply called domain event callback and you can just pass on some additional data if you want to, but we don't in this case. And then you just define your callback, which, um, just has a connection object domain object event information detail of the, of the happening event and the data we probably passed in below. So, um, this makes it actually quite easy to not only to start in top virtual machines and you don't have to check if this is actually running because Lybert will actually tell you if the machine crashed or if somebody crashed or something. Um, there's a small library called Lybert G-Lyp, which just makes this even simpler to plug it into the G-Lyp loops or if you're writing a GTK based program, that's probably not real, real from the back. It's GTK.main. Here it's ending the GTK main loop. Um, the nice thing is just have one additional call and it's part of your G-Lyp main loop and, um, you just can use the GTK base program. So, in order to show this a little bit, I've just written a very, very short, um, program which I just called VMablet and it's actually quite stupid because, um, it just doesn't anything more than, than the slide I just showed before. It just listens for domain events. So, um, yes, I sure. So, but it's actually, yeah. Does that help? I can, I can increase it even further. So, just starting with the VMablet, which is just sitting in my system tray here, got a notification and it just shows that the domain has been started. So, it's actually quite simple. Um, so I can save the domain to a file. I have to tell it what the file should, should be called. And I, again, get a domain event and interesting other domain details because it tells me that the domain has been saved. So, it tells me the domain has been stopped and it has been saved to a file and, um, I can restore the virtual domain, um, something like this and it says, again, the domain has been started and the virtual machine has been restored. So, in, in contrast to the virtual machine has just been booted. So, that's actually quite nice and quite simple, um, interface. Um, the point about all this is basically the Python program is actually a little bit longer than what is on this slide, but there's no other Libert related call in it. So, um, the rest is just the GTK stuff for getting it in the tray and all this. Um, so how does this all look from the above? Um, the application like VMablet or or Bersh, the command line interface, um, just links against Libert obviously and then, um, uses the API of Libert, which is here and Libert itself called has a list of drivers for all the different virtualization solutions and in almost every case, um, it just goes to the remote driver and then uses the, um, URL we provided just in the beginning and this tells, um, in this case of QMU to call into Liberti. Liberti is the demon I've just mentioned, which runs on the system, Liberti itself called into Libert again and uses the QMU driver to manage all these virtual machines. It also, it would be pretty much the same if we say, um, we wanted to create a new virtual machine image, this would be pretty much the same. The application would call, it would use the Libert API, it would use the remote driver, it would call into Liberti and it would then not use the QMU driver, but the storage driver and create a new virtual machine disk image. Um, the big advantage of having something like this is that, um, you can very, very easily do all the virtual machine management on remote systems too by just changing this, um, your URI and, um, just making sure there's some kind of transport available to the remote system. So, um, what kind of URIs would we expect in these cases so that we already had QMU on the system, which means we are using a Liberti that runs with root privileges and, um, so it's able to do pretty much everything on the systems. Another URI for QMU and KVM is Session, which means there will be a Liberti started with permissions with a UID of the URI. This will automatically be started if you use Session and, um, so you don't have it running as root. In the case of Linux containers, the URI would just be LLXC, the colon slash slash slash, and in the case of Xen, it would be Xen. Um, when you, in the case of QMU, for example, when you call into Liberti, how are the permissions managed? It's, um, quite simple. There's a socket on, um, in bar run for the system, Liberti, and whoever has, um, read write permissions to this socket has permissions to add, modify, delete, virtual machine. So it, he has full access to the system and, um, access to this socket on Debian is, um, handled via a POSIX group, which is just Libert. And if you remember of this group, you have full access and if you're not a member of this group, you don't. Um, so since this is pretty powerful and you might have users that should only be able to, for example, get a VNC connection to the virtual machine so they don't have any management capabilities, just only can, um, get a graphical display, there's also read only access, um, handled with another socket, which is bar run Libert, Libert socket minus read only at the end. And, um, on Debian, by default, every user has access to this socket, so everybody is proud, is basically able to get, um, a VNC display, um, for desktop systems, you can also, um, edit the Libert deconfiguration and use policy kit for all that, so you don't have to use any groups, um, just the person using the accession will be able to access the socket and just some, and then you can define by policy kit the rest of the permissions. So as I already mentioned, the, the advantage of having such a demon is that you can very easily handle, um, remote access, so by just asking a kind of a transport just behind the QMU or, yeah, behind the Xen in this case, you can, um, just access remote hosts that also have virtual machines and, um, there are several transports available, one of the simplest ones is SSH, in this case, um, it will just do SSH into the remote machine and call netcat on the socket above, on the bar run Libert socket. And, um, TCP means we are really connecting to the remote, um, Libert demon via TCP. This has some advantages because we can use, um, subtle authentication like, um, Kerberos and we can use, um, SSL client certificates if you want to, um, as an additional thing, word manager, which is, um, application that, um, is response, well, we'll see that later, but, um, this is the graphical user interface for managing virtual machines, um, can also, um, tunnel the VNC session over SSH so you can get the display of the, um, the machine on the remote host. Yes, go ahead. Yeah, okay. Okay, um, the system demon is just started via an init script and runs with root privileges and the session demon, um, runs as your usual and runs with your use ID. So, okay, so the, um, the system demon, in order to be able to talk to it, I have to have access to these sockets, right? Right. And the session demon, um, I can use that to manage my own, um, KVMs under my, my own. Exactly. And so you don't, you use another socket which is in your home gear and home directory and you automatically, automatically have access to that socket because it's created with your user. And, um, the, well, quite often you can actually use the session thing, but, um, if you want to create network devices or something like that, you, you need privileges you don't have as normal user. So, if anybody has another question, just interrupt me and, um, we can just do that in between. So, I now want to give a short overview on the tools we, we have available that already use libvert in Debian and, um, there are several of them already and one of them is the, the word instance group of programs, one of them is word install, which you can just use to install new virtual machines. Um, it's word clone, if you want to clone an existing virtual machine, then there's word manager, which is the graphical user interface. Um, there's word viewer, which basically is a very, is a, um, only there to access the VNC, but you don't have to figure out the port where the VNC display is. You just give it the name of the virtual machine and it will do the rest by itself. Vertop is a top like tool. It's just, instead of showing processes, it shows, um, virtual machine CPU time and memory usage. Um, and we have a set of, um, plugins for Moonin, so you can quite easily monitor your, um, virtual machines using Moonin and the whole, sorry? Sure. So the, the whole point about these Moonin plugins is that you don't have to do any configuration. You just tell it which kind of hypervisor you want to use and it will pick up all the virtual machines running and start drawing some graphs about memory usage and block device statistics and network interface statistics and these things. Um, there's also the guest of us, which is not virtual machine related, but more related to the images of virtual machines. Um, this is a library that, um, allows you to very easily manipulate images of virtual machines. So if you have an image of a virtual machine which uses LVM and which uses maybe some encryption or something like that, it's quite hard because you have to do a loop mount and you have to all activate the volume groups in that thing and, um, the guest of us tries to figure out most of this by itself so you can, um, limit, uh, so you can edit virtual machine images without being rude on the machine. This, there will be more about that later. Um, so let's look at vert install first. Um, vert install is, as I already said, is the tool to set up new virtual machines and, um, since we're supporting different hypervisor solutions, um, we always have to tell which hypervisor we actually want to use and in this case it's again QMU. We're, we're again using the, um, process that has root privileges so we're using system and not session and, um, the virtual machine should be called Lenny and it should have 256 megabytes of RAM and, um, we're telling vert install that the US type is Linux and the US variant is Debian Lenny. Um, what would this be useful for? Actually, um, vert install tries to figure out, um, and tries to be as smart as possible when it comes to speeding up virtual machines. So if you, for example, if, if your guest supports vert IO, it wants to enable it just from the installation point of view and, um, Debian Lenny supports vert IO in, in Debian install and Debian Edge doesn't and so if you tell it Debian Lenny, it will use vert IO and if you tell it Debian Edge, it will just pick what was available in Lenny in the case of QMU, this would be IDE. Um, the nice thing about, so this is the US type of the guest I should add. It's not the host, it's the guest. This, it might be pretty obvious for, um, anybody here when it comes to Debian. For me, it's, it's very helpful if I wanted to do, like, say Windows virtualization because I don't know which version of Windows supports ACPI or APIC and, um, which version of open zoos supports vert IO and by just specifying the right OS type and OS variant, Bert install will just figure it out by itself and do the right thing. Of course, you can override that on the command language, see that on a minute, in a minute. Um, so import means we don't want to, um, create a new disk image, we already have one and, um, the new image we have is, um, a disk with, um, which sits in a, in a storage pool with, with the name default and, um, with the name Lenny.image. Um, the networking we want to use is QMUS user mode networking and the model inside the guest should be vert IO, so we say model equals vert IO. Um, that's actually a pretty simple example. We can do something more elaborate, um, with some more command line arguments, the beginning is pretty much the same, we're saying Bert install, I'm just reading this because I think it's quite hard to figure out in the back. So, um, we again use minus minus connect to to QMU. Um, we use minus minus force to stop any, um, prompting for any user interaction. We again use, as named Lenny, we use the same amount of RAM. And, um, this time we want to have a new disk, so we say we want a new image in the pool default and it should have the size 10 gigabytes and for caching we want right back caching. Um, so, and we want to have a second disk and this one is already available so we can specify the volume name which I will just explain in a second what that is exactly and it's again in the pool default and the volume name will be with USB Lenny pre-seed.image and we want to have it attached to the bus, to the USB bus of the virtual machine. Um, again we want to do user node networking with a virtio model and additionally we pass location argument which, um, is a URL which is ftpde debion.org slash debion slash disk slash stable slash main slash installer e386 and, um, we pass some extra command line arguments to the kernel which are not, well, which are basically passed to debion installer then and, um, the nice thing is then that if you just use this kind of, um, installation it will fetch the, um, the net boot images from debion and, um, in this case from stable so from debion Lenny download them, um, and start debion installer with the arguments that are just there on the command line so this is pretty much convenient for, um, debion installer testing especially if you add another volume like in the above example which, um, adds a new USB device, um, with preceding so you can, um, do fully automated debion installer testing. I have another question, um, how does it know that it should call the installer? Um, now, well it's actually it's, um, it downloads the kernel and the inner drum of s and passes it onto KVM. Okay, so location is a, is an argument that gives an URL directory and you expect our verge install inspects to find in that directory a kernel and an inner drum of s. Yes, yes, yes, yes, and location argument actually is, um, in a way that it figures out this is a debion distribution so, um, the kernel and the inner drum of s are called like this or like that and if you use another kind of location argument which points for example to a fedora server it will do the right thing for fedora system. So, um, this is actually quite nice, I think. Um, so with just had the word storage pool sometimes, um, in this talk so I wanted to explain a little bit more what that is. Storage pool is actually something pretty simple it just keeps virtual machine images and there are several types of storage pools. The simplest thing is, well, I should add you can do everything without storage pools it's just convenient to use them. Um, the simplest thing is a directory so it's a directory based storage pools just the directory in the file system. Slightly more complex is a file system and now I'm that's a spelling error. Um, a file system based storage pool is actually like a directory pool but it's backed by a block device so you have to give it a block device and the mount point and when you activate this kind of storage pool it will take the block device mounted to that location and from there on it will basically look like a directory based storage pool. You can use disk based storage pools which are partitions you can use LVM storage pools with volume groups and you can use Iskazi based storage pools too. Each pool has a target and the target is like I actually said a directory or a volume group and some of them have a source e.g. a block device so in the case of the file system based storage pool the source would be the block device and the target would be the directory. The, I forgot to explain the network based storage pool this is basically not a block device but an NFS export so it's not much of a difference. Storage pools contain volumes in the case of directory based or file systems based storage pools these are just files in the case of LVM based storage pools these are the logic volumes in the case of disk based storage pools these are partitions and like in the case of Iskazi storage pools these are just the block devices from the other end of the Iskazi server. In you can do something a little bit more elaborate so you can use a backing store in these kind of storage pools so you just get a base image which is probably a lany installation you want to have and then you can just put an overlay onto that and all right all modifications to that image will just go onto that overlay and the thing behind that overlay is just called backing store and so you can just install lany once and to have several virtual machines would all use the same backing store this depends on the image format used in the pool and QCO2 just supports this out of the box and this is why it works. So this is all of this is not something Libert implements but it always leaves to the tools provided by the by the hypervisor of the virtual machine. Word manager is just the graphical tool to manage virtual machines it's kind of the verge for the for the X-Windows system so you can do pretty much everything with it what you can also do on the command line so you can you can just start some virtual machines remove and add devices have a graphical display or display of the serial console of the virtual machine you can display statistics about disk and block devices you can see this in the inventory I don't know if you can read it from the back and you can manage storage pools and volumes and you can manage network stuff so it's just the graphical representation probably I think it's quite useful and especially since you can just add several hypervisors so in this case we're using the local QMU which is a system QMU in this case and down there there's another connection to a machine called PowerBook which is which is using Xen and there is another machine which is using QMU and we have some two two times QMU in this image because we were connecting with one connection to the system QMU and with another connection to the session QMU okay another tool in this list is just reclone which is just very simple to clone a virtual machine so you have one and you want to have another one that looks exactly like this one and what you do is you again pass on a connection urease so the bird knows which kind of hypervisor you want to use and then you say what is the old name of your virtual machine and you pass in the new name and then word clone just asks you well how shall I name the new disk image and then you just tell it and it will just copy the machine and you're done so you get a new XML definition so I already mentioned word top it's just a top like tool it's you can see in the image it's just display processes but it displays virtual machines so it sorts them by CPU usage by default but you can also use them by memory usage and see which virtual machines are actually and which of them are turned off this is a nice example because it doesn't use the python bindings as all the rest but it uses the objective camel bindings so quite new this lib word universe is lib guestfs which is the library to which is not that much related to virtual machines itself but to the images that virtual machines use the disk images and there's a shell tool that is called guestfish and there's again lots of lots of lots of language bindings it's there's lib guestfs pearl which is the pearl bindings obviously and python lib guestfs which are the python bindings there are also bindings for Haskell, Java, Ruby and objective camel but the package we already we have at the moment doesn't build them at this time so there so there's kind of predefined recipes to do certain things with lib guestfs find at the URL http lib guestfs.org recipes.html and there are other tools coming with lib guestfs like worddf wordcat and word inspector worddf is just a tool which you just pass it the name of virtual machine and it will just look at all the disk images of the virtual machine and see how much free space there is and just tell you without that's what that's actually the important point without starting the virtual machine and wordcat is a tool which just gets you a file from from any of the disk images and word inspector just tries to analyze the the disk images and it tells you the kernel version in that word in the virtual machine images the modules loaded and these kind of things I just added a short example how to use guestfish on the command line in this case we are not using an already existent disk image but we're creating a new one so we're calling telling guestfish please allocate just by using alloclanny preset image for megabyte please allocate the for megabyte sparse file then and this is probably the most important point so in order to look at at guest images of virtual machines easily without starting the virtual machine what is the trick to do this well we start another virtual machine which is a very small appliance that is shipped with libgestives itself which is using QMU and which is using VM channels to talk to the then booted virtual machine so you boot these small appliance and the small the small appliance just uses the necessary commands like like PV display and all these things to figure out the details about the virtual machine disk images in this case it's we run the appliance and tell the appliance to create a partition table on on def hd a and then we tell it to add a partition to def hd a then we tell it to make a vfet file system and mount that file system then we copy a pre-seed cfg and unmount it quit and are done and when we're done with this and if we think back to the to the second word install example there was usb disk which was passed into the virtual machine for the Debian installer testing and so you can basically pretty much automatically create these kind of disk images by using this and the only thing you have to provide is a pre-seeding configuration so this is again very useful for testing Debian installer with different pre-seeding configurations yes some notes about debugging liberty problems because or debugging liberty problems in general there might be problems with some kind of things because some maybe some hypervisor doesn't implement a certain feature or something is just broken so there are lock files and bar locked the word and if you're for example this is a good example so if you're using for example QMU in system mode there will be in bar locked word if you're using it in session mode they will be in your home directory and dot lib word word manager has no fork option which puts all its diagnostic outputs on the standard output which is quite helpful and also writes lock file in dot word manager to lock there are also lock files for the word install tools in dot word inst and if nothing else helps there are some environment variables you can you can use so there's something like lib word underscore debug equals one which you can use in front of anything that links against lib word for example lib word itself or maybe in front of verse or in front of word manager and to the lib guest of as tools is the environment variable is lib guest of as debug that's about the tools we have so everybody who's still not really convinced to use lib word instead of doing all the stuff by hand there's even in a lot of API which helps you to to migrate your existing domain configuration so I again because I use this most frequently pick the example of QMU and the DOM XML from native call which is also available from the verse command line tool you pass it in QMU command line and it will output you the XML that is needed to start a QMU with this parameters there's also a wiki page which has some more info on how to switch from QMU to using lib word basically you're not switching away from QMU just putting lib word as a layer over QMU of course so what is missing in lib word what I think what is missing is we don't have a nice API for doing snapshots so you can just snapshots machines and just discard them or go back in time and all these kinds of things which are actually supported in different hypervisals but lib word just offers no API for it and there's no fine-grained user management either you can do everything with a virtual machine or almost nothing like you only get information to access to a VNC display or display virtual machine configurations so there's no possibility to have a user that is not able to create new virtual machines but is able to add new disk images or something like that Fedora actually has some kind of nice as elinux integration and Debian doesn't have this at the moment that would be nice to have what will come in the next versions of lib word there's another kind of library on the horizon which is called netcf and netcf tries to abstract the interface configuration so because every linux distribution tries to do it in a different way some of them use if up down and some of them use another way to do it and so in order to not interfere with all these native mechanisms of Linux distributions some guys decided to look to write a library which is called netcf which allows you to to do network configuration in a way the distribution wants it and this will allow lib words to do much more complex network configuration than it can at the moment and there will be multi-part support in one of the coming versions that will be support for new hypervisors for VMware ESX if anybody cares and for open nebula which is actually quite interesting because this is just an interface into your open nebula cloud and for QMU KVM there were some features missing like net device hot plugging and this will be added and there will be some enhanced security using C groups the next version and while the packaging LibreDroup has a mailing list which is called pkglibred discuss everybody is very welcome to join it and to discuss issues related to LibreD and there's the Viki page in the Debian Viki which is Viki Debian org teams Debian LibreD team so that's it sure another question from me you said when you were mentioning the QCOW images you said you would have like one Lenny install and then you would just track the differences in the QCOW image for other ones why would you want to do that well maybe because you just you have I've been using this well I can give an example that I used I am I'm always short on disk space on my laptop so I just made it on default Lenny install and then I wanted to do some clustering tests so I had basically an image which had all the packages installed and I have two two nodes in the in my virtual cluster and they're almost the same they only differ in the host name so I just use one gigabyte of space instead of two so it's just for staying space but it does throwaway hosts you don't keep them because you can't upgrade you can actually how are you going to do an upgrade from Lenny to squeeze no no okay then I will throw away this is just for testing sure okay servers well we've been using it but it's lacking quite some features so there are back ports available on backports org which I think they're production ready for servers and I'd be interested to know if they aren't the back ports are production ready rather than the packages currently in Lenny yes I'll give you my example I'm currently running a Zen DOM 0 that's still on edge the hardware is KVM capable okay it looks like I could upgrade to Lenny and migrate everything to KVM okay the Zen issues this looks like the right way to do it the machine's in a data center I don't have easy access okay is this expected to work if I'm careful yes I think so well actually I'm using it production I'm using it in production system on Lenny but not with with KVM but with Zen and I've done lots of things with libvert and KVM but not product not in the not with the version that is actually in Lenny but with the version that is on Backpods.org well actually I'm using libvert with KVM on with well with the little Lenny packages which mostly works a few things that don't work which are more related to KVM so I'm having a funny time trying to hand over USB devices while inserting them and pulling them out again which the KVM version can't do currently in Lenny and then other versions there's some other interesting features which also doesn't really make it easy to hand over USB devices to some embedded Windows 2008 server but yeah that's very special other than that with Linux guests and it really works very well with the Lenny version so yeah and in the end so well this is kind of hair splitting but well in this case the bridge works but KVM doesn't so you would you have to use a KVM backport not a Libert backport in your case right even even the KVM's work if you just do the standard Linux things like you forward network devices only on boot time you forward only hard disks that all works very well for me just stops the working when you want to dynamically forward USB sticks when they entered into the computer and revert them if you say pulled out again but that's not the standard use case in the data center well there was something missing in in Libert for quite some time and this was actually if you're running KVM instances and you restarted Liberty you would lose all your Libert your KVM machines and this was actually we fixed this quite a while ago but I'm not sure if this is in Lenny I would just have to look it up yeah okay so but I think this is in the backports actually but it's not in it's not in Lenny Hi I have a question what happens if the Libert D Damon is restarted or simply crashes in the current versions nothing should happen so you just restart it and it will pick up all the running KVM instances and should be fine so this has been fixed is this in Lenny no it's not in it's not in Lenny but it's in the back I'm almost sure it's in the backports and it's definitely in unstable and in squeeze okay and another question for guestFS why are you not simply using kpartex on kpartex on the base system well because from you actually could but you have to be rude that's one thing and especially if you want to loop mounting and all these kind of things and it's kind of well that's that's about it so you can just LibertFS tries to just abstract some things out of it and if you if if you're just very familiar with all these different Linux commands you need to use kpartex on the system then activate all the volume groups sorry you know I meant why doesn't Libert or guestFS use simply kpartex instead of booting a new VM now but your route okay makes sense yeah thanks do you do you know whether it's planned supporting Libert for Linux every server or any plans on it no I I don't think at the moment so but it's actually it's just the matter of somebody writing a driver so sorry and do you know whether it's difficult or not to write to write a driver for it I'd say it's not that difficult because actually the the guys who do most of the Libert work at Red Hat they most of the time they even merge partial drivers so they're merging drivers which only are capable of dumping the XML format but not creating new virtual machines so you rely on your old tools to create new machines but you're as well you can just go step by step at networking afterwards and these and that it's thanks any other questions thank you