Daniel Berrangé
berrange.com · Personal blog · on HN since 2011
Daniel Berrangé is a libvirt and QEMU developer who writes about virtualization, sandboxing, Linux tooling and disk images.
What HN saysCommenters cite it for libvirt's backward-compatibility record and for practical guides on sandboxes, ARM Fedora installs and disk image sizes.
15HN people shared it
7linked it in comments
11stories submitted
98story points
2 years agolast shared
2011people per year2026
Most-shared posts
- 1Building application sandboxes with libvirt, LXC & KVM2 people · 3 points · first shared 2012 · discussion on HN
- 2Versioning in the libvirt library2 people · 2 points · first shared 2017 · discussion on HN
- 3Libvirt: Adoption of GLib library to replace GNULIB and home grown code1 people · 79 points · first shared 2021 · 65 comments on HN
- 4Analysis of techniques for ensuring migration completion with KVM1 people · 3 points · first shared 2016 · discussion on HN
- 5Bye Bye BIOS: a tool for when you need to warn users the VM image is EFI only1 people · 3 points · first shared 2023 · discussion on HN
- 6New libvirt project Go language bindings1 people · 3 points · first shared 2016 · discussion on HN
- 7The libvirt & virtualization tools software development platform1 people · 2 points · first shared 2012 · discussion on HN
- 8The pain of dealing with passwords for online services1 people · 1 points · first shared 2012 · discussion on HN
- 9Libvirt: Split of the Monolithic Libvirtd Daemon1 people · 1 points · first shared 2021 · discussion on HN
- 10Libvirt: Abort() when seeing ENOMEM errors1 people · 1 points · first shared 2021 · discussion on HN
- 11A new configurable cgroups layout for libvirt with qemu kvm lxc1 people · first shared 2013
- 12Firefox form data history a goldmine of unencrypted sensitive personal data1 people · first shared 2011
- 13Installing fedora 17 arm on a samsung google chromebook1 people · first shared 2013
- 14The surprisingly complicated world of disk image sizes1 people · first shared 2024
- 15A new configurable..1 people · first shared 2013
What HN people wrote when they linked it
wahern · 2020-06-14
glibc has really good backward compatibility. But, yeah, few other libraries even bother, let alone make a serious attempt at this. One of the major exceptions is libvirt, which promised 100% backward compatibility from day 1. Here's a great overview (2011) of how they accomplish that: https://www.berrange.com/posts/2011/01/13/versioning-in-the-libvirt-li…
Note that it wasn't until GCC 10 (2020) that you could implement ELF symbol versioning without using an ugly inline asm hack in your function definition. From the GCC 10 release notes at https://gcc.gnu.org/gcc-10/changes.html:
> The symver attribute can be used to bind symbols to specific version nodes on ELF platforms. This is preferred to using inline assembly with GNU as symver directive because the latter is not compatible with link-time optimizations.
In combination with confusion around the differences between file suffix versioning, soname versioning, and symbol versioning, it's not surprising few developers even attempt to get this right. OTOH, most ABI breakages are because of dumb mistakes early on or gratuitous changes to the API. If you commit to API stability from the beginning, then ABI stability can and will come more naturally, at least for C code. Versioning of any sort becomes less complicated and even less important.[1] C++ is different because of how heavily header-defined templates are used these days.
[1] In other words, if you think API and ABI stability is principally a question of…
sipofwater · 2024-06-20
1. "Testing: Termux, vmtest, and QEMU": https://gist.github.com/NoteAfterNote/7614b0137ac6959e3bba35df66eaa75a (gist.github.com/NoteAfterNote/7614b0137ac6959e3bba35df66eaa75a)
2. "The surprisingly complicated world of disk image sizes": https://www.berrange.com/posts/2017/02/10/the-surprisingly-complicated… (www.berrange.com/posts/2017/02/10/the-surprisingly-complicated-world-of-disk-image-sizes/)
rwmj · 2013-02-27
Or Fedora:
https://www.berrange.com/posts/2012/11/30/installing-fedora-17-arm-on-…
Or countless other Linux distros.
sciurus · 2012-08-24
Your web browser is designed to sandbox and safely run code.
Your shell isn't.
(People are working on it though, see for example http://berrange.com/posts/2012/01/17/building-application-sandboxes-wi…
rednaught · 2011-07-13
Libvirt is not needed to use KVM but the purpose has been to provide stability (and an abstraction as you mentioned) over the changes QEMU has had in various releases.
Update: Here's a blog related to your very question that was written just a few days ago:
http://berrange.com/posts/2011/06/07/what-benefits-does-libvirt-offer-…
davidstrauss · 2013-06-19
> I am intimately familiar with eWLM and I think it's quite unfair to call it containers.
I feel like you're strawmanning me, here. I specifically avoided calling WLM "containers." I said they're building blocks that, combined with MAC-style service isolation (which also existed on 1980s mainframes), allow containerized isolation of consolidated services on a single OS image. It also wouldn't be fair to directly call cgroups "containers," though they provide similar building blocks for what I'm sure we agree are "containers" once configured by a tool like LXC.
I compared WLM to cgroups because both track utilization over a window of time and manage scheduling in a way that avoids starvation while enforcing other priority or fairness goals. The documented resource limitation and contention-sharing configurations for WLM [1] are undeniably similar to cgroups.
> I'll give you a simple example. Do dd if=/dev/sda of=foo.img (or even /dev/null) in one container and measure I/O performance in the other.
Linux kernel cgroups have supported block I/O limits and weights for fair sharing under contention since 2008. I'll give you the benefit of the doubt here, though, and assume you're actually trying to provide an example of breaking the page cache because you mention that immediately afterward.
> The page cache is a global resource and so far there is not way to isolate it within containers. Buffered I/O is pretty fundamental to all workloads.
Shared page caching among…
aliguori · 2013-06-18
> Workload Manager (WLM) [1] has been a part of IBM z/OS since before it was even called z/OS. WLM implemented something like cgroups scheduling, in that existing utilization samples feed into future scheduling to ensure responsiveness and fair access to resources under contention.
I am intimately familiar with eWLM and I think it's quite unfair to call it containers.
> It's your turn to provide some citations. You could argue that the Linux kernel has failed to achieve good multi-tenancy support, but saying it hasn't been designed for multi-tenancy just makes you look ignorant of the last five years of development on namespaces, cgroups, and general multiprocess resource scheduling.
I'll give you a simple example. Do dd if=/dev/sda of=foo.img (or even /dev/null) in one container and measure I/O performance in the other.
The page cache is a global resource and so far there is not way to isolate it within containers. Buffered I/O is pretty fundamental to all workloads.
>> I'm quite sure it's not faster than virtualization.
>
> Citation needed, especially since you're arguing that more layers of abstraction (kernel + hypervisor + kernel) is at or above the same speed of fewer (kernel + cgroups/namespaces).
cgroups aren't free. See https://www.berrange.com/posts/2013/05/13/a-new-configurable-cgroups-l…
I already cited a widely published benchmark (SpecVIRT). You article cites made up numbers (5-10 minutes to provision a guest).
$…