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
- Allows bulk instance state changes.
- Smarter handling of
volatile
keys in restricted projects #7896 - Network: Support GVRP on selected Networks and NICs
- lxd/resources: Support DMI for CPU information
- Device: Add duplicate address detected to routed NIC
- Device: Validate disk size field properly
- Device: Allow bridged NIC removal even when parent bridge interface is missing
- lxd/instance: Fix progress on ceph instance move
- lxd/utils: Compare all addresses from lookup in IsAddressCovered
- Storage: Copy parent volume config into snapshot volume config
- test: Adds snapshot block.filesystem config check for LVM & Ceph
- Rework bulk state API
- lxd/vm: Expose ISO images as SCSI cdroms
- Network: Add check for overlapping ovn.ranges and dhcp.ranges
- Storage: VolumeDBCreate function argument type change and other clean ups
- Storage: Add support for moving instance to a different pool
- Instance: Fix missing retry when generating NIC volatile.%s.name key
- Network: Only validate OVN IPv6 ranges overlap with DHCPv6 ranges when stateful DHCPv6 in use
- Instance: FillNetworkConfig fixes
- Instance: FillNetworkDevice retry fix
- Instance: Adds TemplateTrigger type and makes deferred template application option for copy and rename internally
- lxd/images: Skip keys with empty values
- lxd/instances_put: Limit to local server
- lxd/device: Fix instance type validations
LXC
- Fix compilation without seccomp when libseccomp is installed
- conf: fix containers retaining CAP_NET_ADMIN
- build: allow to build all binaries statically via --enable-static-binaries
LXCFS
- Nothing to report this week
Distrobuilder
- distrobuilder: Add repack-windows command
- Add Github Actions
- README: Point build status to GitHub Actions
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