Weekly status #182


Weekly status for the weeks of the 18th of January to the 24th of January.

Introduction

LXD

This past week LXD has gained several new features and the usual range of improvements and fixes.

It is now possible to move instances between storage pools using the following command:

lxc move <instance> -s <target storage pool>

or to move and rename at the same time:

lxc move <instance> <new name> -s <target storage pool>

You can now make bulk state changes to multiple instances via the API (using PUT to /1.0/instances endpoint).

E.g.

PUT /1.0/instances
	{
		"state": {
			"action": "start",
			"timeout": 0,
			"force": false,
			"stateful": false
		}
	} 

We have also added support to the lxc start --all command so that it is now handled server side when supported.

On the networking side, GVRP support has been added to macvlan, physical, and ipvlan NIC types, and macvlan and physical managed networks. GVRP stands for Generic VLAN Registration Protocol, and allows instance NICs with the vlan property to register themselves against a switch that supports GARP to request that external port joins a particular VLAN automatically without having to manually configured the switch.

E.g.

lxc config device add <instance> eth0 nic nictype=macvlan parent=enp3s0 vlan=1234 gvrp=true

The resources API now supports using DMI decode to get CPU information, this was added to allow it to access CPU information on ARM hosts.

On the improvements front, we have allowed certain instance volatile config keys to be modified in restricted projects (volatile.apply_template, volatile.base_image, volatile.last_state.power, and any key ending in .apply_quota or .hwaddr). These keys are considered safe to be modified by admins in a restricted project.

As part of our ongoing project to add Windows VM support to distrobuilder we have modified the way that LXD exposes disk devices backed by .iso files. We now expose them as SCSI CDROMs rather than SCSI disks.

There have been several improvements to validation; routed NIC devices now check for duplicate addresses specified (and more thoroughly clean up neighbour proxy entries added to the host), root disk size validation is checked earlier before it is used in the storage layer, and OVN IP ranges configured on a bridge network are now checked that they don’t overlap with the DHCP ranges also defined on that network.

An issue that prevented deleting an instance using a bridged NIC connected to a managed LXD bridge when the bridge interface itself had been deleted has now been fixed.

During a load test, it was found that volatile NIC hwaddr and name keys generation were liable to intermittently during instance creation fail due to database contention. This has now been fixed by adding retries to these code paths.

An issue that prevented adding GPU devices to a profile has been fixed.

LXC

Support for compiling LXC statically has been added using the --enable-static-binaries ./configure flag.
A regression in LXC 4.0.6 that meant that /proc/sys/net was mounted R/W has now been fixed.
A fix to always respect the --disable-seccomp ./configure flag has been added.

Distrobuilder

A repack-windows command has been added, allowing you to build a LXD compatible Windows VM ISO file.

E.g.

distrobuilder repack-windows <source-iso> <target-iso>

The source-iso file should be a pristine Windows ISO. Supported versions so far include Windows 10 (https://www.microsoft.com/software-download/windows10ISO) and Windows Server 2012 and 2019 (https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server).

The resulting ISO generated can then be used as a disk device attached to a VM to boot off to install Windows.

Youtube channel

We’ve started a Youtube channel with a couple of live streams so far.

You may want to give it a watch and/or subscribe for more content in the coming weeks.

Contribute to LXD

Ever wanted to contribute to LXD but not sure where to start?
We’ve recently gone through some effort to properly tag issues suitable for new contributors on Github: Easy issues for new contributors

Upcoming events

Ongoing projects

The list below is feature or refactoring work which will span several weeks/months and can’t be tied directly to a single Github issue or pull request.

  • Distrobuilder Windows support
  • Virtual networks in LXD
  • Various kernel work
  • Stable release work for LXC, LXCFS and LXD

Upstream changes

The items listed below are highlights of the work which happened upstream over the past week and which will be included in the next release.

LXD

LXC

LXCFS

  • Nothing to report this week

Distrobuilder

Distribution work

This section is used to track the work done in downstream Linux distributions to ship the latest LXC, LXD and LXCFS as well as work to get various software to work properly inside containers.

Ubuntu

  • Nothing to report this week

Snap

  • lxd: Cherry-pick upstream bugfixes
  • lxc: Cherry-pick upstream bugfixes