-
Notifications
You must be signed in to change notification settings - Fork 131
Description
Status quo
See the filesystem docs.
Proposal 1 (Phase 0): optionally pull first into c/storage
This will probably want to start out as an opt-in experimental mode. Add some sort of config file or option that turns on mode for this (could live in the origin file for now I guess)
Basically our initial fetch we pull the base OS image via just directly doing a podman pull
or skopeo copy
the same way we pull LBIs.
From there, we do a reflink/hardlink copy into the ostree store (i.e. This would duplicate metadata, but not data on disk. Reflinks should always work. If we have to do hardlinks it could potentially confuse the st_nlink
count if any LBIs happen to share layers. But that seems unlikely.
We'll also need to teach the garbage collection code about this.
Incremental transition
Probably the best way to do this is to change things so on upgrade, we only pull layers into the LBI storage if they didn't already exist in the ostree store or so.
More info
Today this project uses ostree-containers for the base image.
Much more recently, we landed logically bound app images which ended up requiring a bootc-owned containers/storage instance.
This left us in a confusing situation where we have two image storage backends used by bootc - one for the booted host, and one for LBIs.
The code they don't share is mostly containers/storage.
This issue tracks unification: Having bootc leverage more of containers/storage (which is going to likely require containers/storage improvements.
This issue also intersects #1016 in that we would need to get progress out of podman pulls
Note: I did a draft PR for this a while ago #215
Update 20250632: See also #1190 for transitioning to a "native composefs" storage.