Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Unified storage: Tracker for ostree <-> composefs reflinking

オープン
#2,247 コメント 0 件 リアクション 1 件 担当者 0 名 GitHub で見る

メンテナーはふだん 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

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

bootc-dev/bootc のほかの issue

bootc-dev/bootc の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。