Along with Xen, OpenVZ is surely the most active open source project about virtualization at the moment. But while Xen has been slowed down by VMware in its path towards integration with Linux kernel, OpenVZ found no obstacles so far and its development team annouces a main contribution to be included in upcoming kernel 2.6.19:
- IPC virtualization (contributed by OpenVZ’s Kirill Korotaev and Pavel Emelianov)
This is functionality that enables different processes to create shared memory segments, send messages to each other, and use semaphores. In a virtualized system, you don’t want a container (VE) to see IPC objects from another container.
- utsname() virtualization (contributed by Serge Hallyn from IBM)
utsname() returns basic information about the kernel being run (same as displayed by uname -a) — such as the kernel version/release, host and domain names, and system architecture (for example, i686). So, before we had a single utsname structure in the kernel, visible to all the processes. Why do we need to virtualize it? At the very least every virtualized system should have its own hostname. We might want to change other fields, too.
- preliminary PID namespaces feature (mostly contributed by Eric W. Biederman, and also some bits from Oleg Nesterov, IBM’s Sukadev Bhattiprolu and Cedric Le Goater)
Every container (VE) should be able to use its own set of process IDs (PIDs), and should not see another container’s PIDs. Eric’s approach is to not use pid directly in the kernel, but use a pointer to the struct pid — a structure that could hold both PID and VEID (i.e. container ID). Submitted set of patches cleans up different places in kernel where it uses PID directly, to switch to struct pid.
At the same time the OpenVZ project approaches for the first time a new hardware achitecture: after supporting x86 and Itanium, it’s now approaching Power architecture, developed by IBM and Freescale Semiconductor, actually heaviliy used in IBM System p5 servers.