What’s LXCFS?
LXCFS is a side project of LXC and LXD. It’s basically a tiny FUSE filesystem which gets mounted in your containers and mask a number of proc files.
At present, it supports the following files:
- /proc/cpuinfo
Only returns the CPUs listed in your cpuset - /proc/diskstats
Returns I/O usage from the container - /proc/meminfo
Only shows the amount of memory and SWAP the container can use - /proc/stat
Related to cpuinfo, only lists the right CPUs - /proc/swaps
Related to meminfo, only shows your container’s swap consumption - /proc/uptime
Shows the container uptime instead of the host’s
It’s basically a userspace workaround to changes which were deemed unreasonable to do in the kernel. It makes containers feel much more like separate systems than they would without it.
On top of the proc virtualization feature, lxcfs also supports rendering a partial cgroupfs view which can then be mounted into a container on top of /sys/fs/cgroup, allowing processes in the container to interact with the cgroups in a safe way.
This part is only enabled on kernels that do not support the cgroup namespace, as newer kernels (4.6 upstream, 4.4 Ubuntu) no longer need this.
Why do I need it?
lxcfs isn’t absolutely needed to run LXC or LXD containers.
That being said, you will want it if:
- You want proper resource consumption reporting inside your container
- You need to start a systemd based container on a system running a kernel older than 4.6 upstream (or 4.4 Ubuntu)
LXD in Ubuntu actually depends on LXCFS as we think it’s a critical part of offering a good container experience on Ubuntu.
How to get it?
LXCFS is available in quite a few distributions, so chances are you can just grab it with your package manager. It may take a few days/weeks for 2.0 to be available though.
Ubuntu users have had lxcfs available for a few years now and the 2.0 release is now in the Ubuntu development release. Up to date packages for all Ubuntu releases can also be found in our PPAs.
What kind of support will this get?
LXCFS 2.0 is a long term support release. That means that upstream LXCFS will be pushing out bugfix and security releases for the next 5 years.
A separate stable branch will be setup upstream and bugfixes will be cherry-picked into it, when enough fixes have accumulated a bugfix release (like 2.0.1) will be released.
Project information
Upstream website: https://linuxcontainers.org/lxcfs/
Release announcement: https://linuxcontainers.org/lxcfs/news/
Code: https://github.com/lxc/lxcfs
IRC channel: #lxcontainers on irc.freenode.net
Mailing-lists: https://lists.linuxcontainers.org
Try it online
Want to see what a container with LXCFS installed feels like?
You can get one online to play with here.
Hi I enjoy your tutorials and find them quite helpful. Could you possibly do one on how to run a GUI app from inside a container using LXD? Thanks.
I may do one of those outside of the planned series once I’m done with the current ones.
Hi Stephane,
Is there any way to get the load average of a running container ?
lxc exec — uptime
returns the load average of the host system.
sorry container name is supposed to be in between exec and —