LXCFS 6.0 LTS リリースのお知らせ¶
2024/04/01
はじめに ¶
LXCFS チームが LXCFS 6.0 LTS のリリースをお知らせします!
このリリースは、LXCFS 5.0 リリース以来 2 年の取り組みの結果で、LXCFS プロジェクトの 5 つ目の LTS リリースです。
ハイライト ¶
新しい --enable-cgroup
オプション ¶
LXCFS は、コンテナ向けに、仮想的な cgroupfs (v1) ツリーを提供できます。
この機能は cgroup namespace がカーネルに実装される前に実装されており、その機能がないカーネルでも、同様の機能を提供できます。
今では、サポートされているほとんどの Linux ディストリビューションは、すべて cgroup namespace をサポートするカーネルを提供しており、新しいディストリビューションのほとんどは cgroup v1 から(v2 に)切り替わっているので、この機能をデフォルトで有効にし続ける意味がありません。そのため、この機能は新しい起動時の引数である --enable-cgroup
で有効にするようになりました。
CPU の /sys/devices/system/cpu
での非マスク化 ¶
LXCFS 5.0 は、呼び出し元の cpuset で許可されている CPU をもとに、/sys/devices/system/cpu
のエントリーをフィルタリングするロジックが存在しました。この動作は、オフラインの CPU であっても /sys/devices/system/cpu
に表示される通常のシステムの動作を実際には反映していません。
このため、LXCFS 6.0 ではこのロジックを逆転し、オンライン・オフラインの CPU のリストを最新に保つようになっただけで、個々の CPU ディレクトリーにはすべてアクセス可能なままです。
すべての変更点 ¶
すべてのChangeLogを見る
- lxcfs_fuse: ensure lxcfs_fuse_compat.h is included after including fuse header
- tree-wide: remove struct stat argument from DIR_FILLER and make it static inline
- tree-wide: ensure that file information is set even with legacy fuse
- tests: add test for issue #522
- meson: Include documentation
- workflows: disable documentation generation
- sysfs: Don't incorrectly filter entries
- tests: Fix sysfs test
- utils: add and use opathdir()
- sysfs_fuse: fix indendation
- sysfs_fuse: generate file info for cpu
entries as well - meson: bump fuse version
- github: add fuse3 tests
- meson: handle fuse versions with buggy dt_type handling
- init/meson: Use libdir instead of hardcoded /lib path
- Query systemd system unit dir.
- support explicit fuse version choice
- github: Re-organize Github Actions
- tests: Skip sysfs test on older FUSE versions
- init: Fix install paths for sysvinit and openrc
- meson: Support multiple init systems
- meson: Syntax nit
- proc_fuse: extra space in /proc/stat
- util: remove doubled comment
- sysfs: correct file size of /sys/devices/system/cpu/online.
- sysfs: cleanup sys_devices_system_cpu_online_getsize
- cgroup v2: return cpuset cpu count when no quota is set
- re-initialize library after reload
- replace opathdir with opendir_flags
- github: Restrict permissions
- github: Validate target branch
- fix reinitialization with fuse3
- set oom_score_adj of lxcfs process to -1000
- init: respect --prefix when installing systemd unit files
- Fix build on ia64
- doc: guide for mount /sys/devices/system/cpu in docker demo
- utils: add safe_uint32() helper
- macro.h: add strnprintf macro
- utils: add get_task_personality helper
- cpuview: paththrough personality when reading cpuinfo
- cpuview: fix possible use-after-free in find_proc_stat_node
- github: make coverity workflow work with meson
- README: how to build with sanitizers
- cpuset_parse: check input string in cpuset_nexttok
- github: enable ASAN and UBSAN during PR tests
- lxcfs: explicitly enable direct_IO for libfuse3
- lxcfs: fix copypaste typo in error message
- /proc/stat: render physical cpu number in non-view mode
- sysfs: don't mask cpus in /sys/devices/system/cpu
- lxcfs: handle NULL path in lxcfs_releasedir/lxcfs_release
- cpuview: fix ABBA deadlock in find_proc_stat_node
- build: tools: keep trailing newline in jinja2 renderer
- Revert "init: respect --prefix when installing systemd unit files"
- proc: fix /proc/diskstats output format
- github: start using ubuntu-22.04 image
- github: remove ubuntu-18.04
- tests: adapt for cgroup2
- cpuview: resolve cpu cgroup path separately from cpuset the cgroup path is different in kubernetes with containerd runtime.
- lxcfs: preparation for FUSE_INTERRUPT support
- lxcfs: add fuse interruptible locks
- cpuview: start to use interruptible lock primitives
- github: Update for main branch
- proc_loadavg: fix ABBA deadlock between read/refresh
- proc: Fix /proc/cpuinfo not respecting personality
- proc_loadavg.c: Fix incompatible integer to pointer conversion
- cgroups: cleanup and remove unused cgroup2_devices code
- loadavg: make cleanup of start_loadavg
- cpuview: pass a correct argument to lxcfs_debug
- lxcfs: Add startup message
- proc: fix MemAvailable in /proc/meminfo to exclude tmpfs files
- systemd: mkdir -p the target mount dir
- typofix: fix incorrect printing in lxcfs help interface
- Add macro pivot&bpf for loongarch64
- lxc.mount.hook: Skip cpu sysfs logic if missing target
- sysfs: forbid write()
- lxcfs: introduce new option --enable-cgroup
- tests: use --enable-cgroup for tests
- github: workaround CI issue with ASAN
- Revert "github: workaround CI issue with ASAN"
- proc_fuse: Fix get_swap_info typo swtotal == 0 -> *swtotal == 0
- proc: Fix swap handling for cgroups v2 (can_use_swap)
- proc: Fix swap handling for cgroups v2 (zero limits)
- cgroup_utils: explicitly check for cgroup2 FDs in cgroup_walkup_to_root
サポートとアップグレード ¶
LXCFS 6.0 は 2029 年 6 月までサポートされる、最新の LTS リリースです。LXCFS 5.0 は、より遅いメンテナンスペースに変更され、重要なバグ修正とセキュリティ更新のみが提供されます。
LXCFS のユーザーはすべて、6.0 ブランチへのアップグレードを計画することを強くおすすめします。
今後のリリースについて ¶
ユーザーが新しい LXCFS の機能をより簡単に利用できるように、今後は LTS ではないリリースの作成を開始することにしました。計画している間隔は 6 ヶ月ごとで、LXCFS 6.1 は 10 月に予定されています。
この LTS ではないリリースでは、安定性、サポート、セキュリティメンテナンスに関する LTS の保証は受けられず、次のリリースが出るまでのみサポートされます。
本番環境のユーザーは LTS リリースを利用し続けたいと思うでしょう。
ダウンロード¶
- リリース tarball : lxcfs-6.0.0.tar.gz
- GPG シグネチャー : lxcfs-6.0.0.tar.gz.asc
コントリビューター ¶
LXCFS 6.0 は、合計 25 名のコントリビューターによってリリースしました。