We recently celebrated 25 years of Linux on the 25th anniversary of the famous email Linus sent to announce the start of the Linux project. Going by the same yardstick, today marks the 10th anniversary of the KVM project — Avi Kivity first announced the project on the 19th Oct, 2006 by this posting on LKML:
KVM was subsequently merged in the upstream kernel on the 10th December 2006 (commit 6aa8b732ca01c3d7a54e93f4d701b8aabbe60fb7). Linux 2.6.20, released on 4 Feb 2007 was the first kernel release to include KVM.
KVM has come a long way in these 10 years. I’m writing a detailed post about some of the history of the KVM project — stay tuned for that.
One of my aims for this talk was to introduce people to the concepts behind virtualization and containers, explain that these aren’t really new technologies, and why there’s so much interest in them of late.
I also think there’s a lot of misinformation spread around these topics, so this was also an attempt to set some facts straight.
The slides are here, and I will post an update with the link to the video.
The talk introduced the KVM stack (Linux, KVM, QEMU, libvirt) and live migration; introduced ways the higher layers (especially oVirt and OpenStack) use KVM and migration, and what challenges the KVM team faces in working with varying use-cases and new features added to make migration work, and work faster.
There was a video recording, I will post the link to it in a separate post.
The talk introduced the KVM stack (Linux, KVM, QEMU, libvirt); briefly went over some features and the communities around the projects, and discussed some of the new features added to the KVM stack in the last year.
Next up is my talk on live migration of VMs at FOSDEM in Belgium.
Hot on the heels of the QEMU 2.4 release, we have QEMU version 2.5 releasing today.
QEMU creates the virtual machine which guest operating systems run on top off. QEMU also handles host-specific things, like the storage and networking on the host.
Given the wide scope of this project, there are several changes that many contributors add to each release. To repeat the success with the 2.4 release video, I asked maintainers to record segments for the 2.5 release as well. A few maintainers and contributors chipped in with videos, and a few updated the ChangeLog page, and added new feature pages. Thanks to all who pitched in!
In the video, we have Michael Tsirkin speaking on new security features, virtio 1, vhost and vhost-user and some guest enhancements for PCI and PCI-E; Juan Quintela about live migration enhancements (like the new autoconverge implementation); Dave Gilbert about the new postcopy migration feature; Eric Blake on QMP introspection; Stefano Stabellini on Xen; Stefan Hajnoczi on enhancements in the block layer; and Alberto Garcia expanding on a few block layer enhancements.
Side note: if you notice, the new feature pages linked above are quite detailed. They’re based on a template which was prepared based on feedback from quite a few people, including Docs and Quality Engineering folks from Red Hat, the Fedora Changes template, and my experience with answering questions for my features. I included as many items and questions in the template as possible so it’s easier for users to get as much information on a feature from the feature page before they ask the developer for more information. In the coming days, I hope to point out the new template to more people, and perhaps make it a requirement for new features landing in QEMU.
As with the last time, I used OpenShot to create the video, and Audacity for some noise reduction on the audio track of one of the videos. Unfortunately, this time, OpenShot on Fedora 23 crashed a lot – approx. once for each action I performed. Enabling the autsave functionality helped a lot; I lost several edits before I did that
Let’s Encrypt have lauched their public beta, and they’re now offering SSL certificates to everyone. The process is very easy and quite easy to automate. However, there’s a catch: these certificates expire in a few days (90 days as of now), so they have to be renewed often. That’s where having the process be simple and automatable helps.
OpenShift doesn’t yet have a way to automate SSL certificate installs; so adding an SSL cert to this blog is going to be a manual process every few days. I’m on the OpenShift silver tier (not yet available in my region, but it’s a perk available to Red Hat employees), so I get to attach a custom cert to my site.
Here’s what I did to get an SSL cert for this blog and enable it: installed the letsencrypt package from the Fedora repos, and ran this command:
It’s 30 years of GNU — 30 years of freedom and 30 years of owning one’s computers. I can’t imagine a life where I don’t have control over the software I run. I’m going to be eternally thankful to RMS and Linus for starting the mass movements that have not only transformed an entire industry, but also shaped my thinking and my career.
A few Red Hatters (including yours truly) have shared stories of their first brush with free software here — give it a read, it’s a good trip down the memory lane, as well as some inspiring anecdotes from people who have been involved with free software for a really long time.
Here’s wishing everyone a liberating Software Freedom Day (Sep 19th), and many more years of freedom to everyone!
QEMU is the software that creates virtual hardware which guest operating systems run on top of. All (well, almost all — see note below[*]) the hardware that a guest OS has access to is actually written to some specifications in software — i.e. no physical hardware is involved. For the QEMU/KVM hypervisor, most of these devices are written in the QEMU source repository. A few devices are part of the KVM code in the Linux kernel. QEMU also handles a lot of host-specific stuff, like storage and networking for the virtual machines.
[* Exception: physical hardware devices assigned to guests.]
Many contributors to the QEMU and KVM projects meet at the annual KVM Forum conference to talk about new features, new developments, what changed since the last conference, etc.
The QEMU project released version 2.4 just a week before the 2015 edition of KVM Forum. I thought that was a good opportunity to gather a few developers and maintainers, and get them on video where we can see them speak about the improvements they made in the 2.4 release, and what we can expect in the 2.5 release.
In addition to the video, I had also asked a few QEMU maintainers via email before the KVM Forum on things they had merged for the 2.4 release. Some of the maintainers, who couldn’t be in the video, sent in updates:
Michael Roth on the QEMU guest agent:
The fstrim interface has been improved/fixed to support initiating TRIM operations across the full range of blocks for all supported guest disks and collecting statistics on number of blocks trimmed. Paired with disks that have QEMU’s discard support enabled, this can be used to periodically recover host filesystem space from deleted blocks in a guest.
For Windows, support has been added for discovering information about guest network configurations and filesystems/disks, as well as support for building/distributing the QEMU Guest Agent as an MSI package.
John Snow wrote in about IDE and FDC emulation: several security vulnerabilities addressed (esp. VENOM); and improved AHCI and NCQ emulation.
Stefano Stabellini’s highlights on the Xen support: QEMU 2.4 includes many fixes and security, reliability and stability improvements in the PCI passthrough code.
Leon Alrae on the new features for the MIPS architecture: microMIPS32 R6, XPA (eXtended Physical Addressing) and LPA (Large Physical Addressing), and support for unaligned memory accesses in MIPS R6 and MSA ASE, in addition to improved emulation of a few devices; and MIPS targets now support UHI semihosting.
Michael S. Tsirkin’s update on virtio emulation: QEMU now includes support for the 1.0 revision of the Virtio specification, which brings multiple stability improvements to the virtio family of devices.
Cornelia Huck on the improvements to the s390 architecture:
The s390-ccw-virtio machine is now the default due to tcg improvements, and 2.4 introduces the first versioned s390-ccw-virtio machine for backward compatibilty.
Support for vector registers (SIMD), as introduced by the new z13, has been added.
Under KVM, the diagnose 288 watchdog (previously available under z/VM and LPAR) is now supported.
virtio-ccw includes support for the new channel commands introduced with virtio-1.
Thanks to all the maintainers who replied to my emails and those who agreed to appear on video. I shot the videos on my phone, so the quality is quite low. I also didn’t realise the recording didn’t start till a couple of seconds after I pressed the record button, so the intro with the name of the maintainers in some videos are clipped. Next time should be better!
OpenShot was used to collate all the individual videos, and Audacity was used to mix in the background music, and remove background noise on some of the clips. Huge thanks to the teams developing these softwares as well!