Unified storage: Tracker for ostree <-> composefs reflinking
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- 機能追加
- 明瞭さ
- 説明が足りない
- 活発さ
- 静か
- 技術スタック
- rust
調査の方向性
まず pull request #2205 と、関連する issue #20、#1190、containers/container-libs#144 を読んでください。提案されている composefs、ostree、containers-storage のフローを、指定された set-unified、fsck images、install.storage、bootc status インターフェースと照らし合わせて整理してください。tracker に向けた設計について合意に達した時点で完了とします。ここでは実装の詳細は指定しません。
索引モデルが issue の本文から書いたものです。
説明
We were having a chat about large PRs (esp LLM generated), and after some (internal team) discussion I think a general best practice should really be for us to have a tracker issue where we come to consensus on design first.
Here's one for https://github.com/bootc-dev/bootc/pull/2205 that proposes the rough shape.
Related: #20, #1190,
containers/container-libs#144.
Core idea: On filesystems with reflinks, we can share disk extents between
disparate storage systems easily.
Goal 1: set-unified composefs (ostree systems only)
On ostree-backed systems, replace the pull pipeline with one that pulls into
composefs, and from there into ostree via reflinks:
composefs OCI repo →(FICLONE)→ ostree bare repo
The actual "fetch from registry" code still goes through containers-image-proxy.
bootc upgrade triggers the re-pull; a reboot activates it. Until then
bootc status shows Storage: ostree-composefs-bound.
On a native composefs system set-unified composefs is a no-op with an
explanatory message — the composefs↔ostree binding is intrinsic there.
Goal 2: set-unified full (both system types)
Uses podman pull to write directly into containers-storage, then reflinks from
there into composefs. On ostree systems a further reflink goes into the ostree repo:
containers-storage →(FICLONE)→ composefs OCI repo →(FICLONE)→ ostree bare repo
This makes the booted image immediately visible to podman run and backfills
rollback and staged images. The unified flag is written only after everything
succeeds, so a failure leaves the system unmarked rather than half-migrated.
Supporting interface
bootc internals fsck images [--repair]
Checks that every composefs-tagged image is present in containers-storage and referenced
by a live bootloader entry, emitting a structured report (human or --json). --repair
fixes gaps by re-importing from the composefs repo. This covers the "make it right" case
too; bootc image sync duplicates this and will be removed.
Install config: [install.storage] unified
[install.storage]
unified = "enabled-with-copy" # recommended: byte-copy fallback on ext4
# unified = "enabled" # hard-fail if no reflinks
# unified = "disabled" # default
Lets a bootc image opt in at build time without CLI flags.
bootc status storage field
Storage unified (enabled-with-copy) # fully active (both system types)
Storage ostree-composefs-bound # ostree only: binding set, upgrade+reboot needed
Native composefs systems show no Storage: line until set-unified full completes.
Longer-term
Once stable, the next step is to have podman's composefs backend write directly into
/sysroot/composefs, eliminating containers-storage as a separate pool and giving
flatpak, podman, and bootc a single global deduplicated object store. Out of scope here.
- 主要言語
- Rust
- スター
- 2.3k
- フォーク
- 230
- 平均マージ
- 2日 12時間
- マージ済み PR(30日)
- 53
環境構築
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
bootc-dev/bootc のほかの issue
-
install: root SSH tmpfiles.d drop-in is labeled etc_runtime_t instead of etc_t対応中かも @andrewdunndev が 4 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
auto-updates fail with `opendir(boot): Operation not permitted` when /boot is a systemd automount that has idled out対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンtriaged
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
bootc-dev/bootc#2402 · コメント 9 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
install: improve error message when systemd-boot is selected without composefs backend対応中かも @ASVLCII が 28 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 3/5 半日 初心者へのやさしさ 45/100
bootc-dev/bootc#2562 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
bootc-dev/bootc の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
メンテナーはふだん 5 日以内に返信
-
✨ enhancement needs-discussion
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
-
virtio-fs (Linux passthrough): debug log in do_lookup panics the fs worker on non-UTF-8 file names対応中かも @zcl-g5 が今日担当しました。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
メンテナーはふだん 2 日以内に返信
-
area:docs documentation good first issue priority:low
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信