-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Native overlay
storage has significant impact on rootless containers creation time
#1749
Comments
fuse-overlayfs
in containers-common moved to Suggests
fuse-overlayfs
in containers-common
moved to Suggests
The Podman folks want to move off fuse-overlayfs and encourage people to use the Linux kernel's overlay file system. I think the question for Fedora CoreOS is: how important is backwards compatibility for old containers? Backwards compatibility is important for Toolbx. So, I am considering adding at least a |
I tried to upstream the changes to unbreak Fedora 40: |
We should look into this again as we're nearing the F41 release/rebase so that would be a good time to remove it. Otherwise, we might have to carry it until F42. |
@travier @debarshiray - trying to tease out some details for the meeting discussion today:
ideally if it's installed it's just there for backwards compat, but newly created machines (or even possibly new containers on upgrading machines) would use the preferred in kernel overlayfs. |
At least on my f40 Silverblue, it's there (which I guess is thanks to @travier) but my backend is still
I think this is one of those things that only gets updated if you do e.g. I'd be surprised if a lot of people are still using it, so the impact should be minimal. Though OTOH we also didn't mention it in our f41 communications and it feels a bit late for a potentially breaking change. |
This was discussed today in #meeting-1:fedoraproject.org, AGREED: We won't remove the package for F41 but will work with the podman team to determine the appropriate time to do the deprecation. This may be on a Fedora major boundary with an associated Fedora change request. |
Maybe not so important but good to know:
|
Nice @eriksjolund. @giuseppe I assume containers/podman#16541 (comment) is still the state? |
Is there any particular reason to drop it? It is a quite small binary (~112kb on Fedora 40) and there are still cases where it is needed. For example, running on NFS. That is not possible for rootless using native overlay. |
I did a benchmark in Fedora CoreOS 41.20241006.1.1 VM running on a Macbook Pro M1
In the test I ran this command 10 times in a for loop:
native overlay
fuse-overlayfs
|
To clarify, we're not purposely dropping fuse-overlayfs. This is just the combination of (1) podman moving it from a Requires to a Suggests and (2) FCOS not picking up weak deps by default. We're purposely keeping it in f41, but longer term if there are reasons to keep it by default, then it seems more appropriate to revert the change to a weak dep. Otherwise, users will always be free to layer it back if they need it. |
Just to nitpick on some details. :) It was already a weak dependency in
I am guessing it was being explicitly pulled in by Fedora CoreOS because it generally skips weak dependencies. Right after Fedora 40 came out, it was demoted to a That's how it fell off the Fedora Silverblue images, until it was rescued by @travier
For what it's worth, just yesterday, I filed some pull requests to revert the change for Fedora 40 and older. |
Not having liveuser@localhost-live:~$ podman version
Error: configure storage: 'overlay' is not supported over overlayfs, a mount_program is required: backing file system is unsupported for this graph driver I ended up putting I don't want to break old containers without offering users a migration strategy. Ideally, I want to detect that a container is still using |
@jlebon @dustymabe I haven't yet been able to figure out the exact conditions under which Note that My plan is to do some Git archaeology to find out exactly when the switch away from One thing is certain, though. Just having I have no idea how many users have containers like this, but we did get some reports when it disappeared from the Fedora Silverblue 40 image: |
I added it back for Fedora 40 Atomic Desktops but it's going away in F41 for now: https://pagure.io/workstation-ostree-config/pull-request/526 This is also very similar to what happened for fedora-silverblue/issue-tracker#547 & fedora-silverblue/issue-tracker#246.
That's my understanding as well. One thing I've realized is that we just had people do a Thus it's very likely that their system are already using the new
|
Catching up and reading #1749 (comment) & #1749 (comment) & #1749 (comment), it feels like we should keep it and even recommend it for rootless containers until containers/podman#16541 (comment) is fixed. I'm going to add it back to the Atomic Desktops. |
this is unlikely to be fixed soon. You'll hit this issue only with nested user namespaces (i.e. rootless users using |
my question is this.. In the case fuse-overlayfs would be much faster for creating a container, is it automatically used if available? or would a user have to know about it and configure things to use it? If it has to be configured I imagine no one is using it TBH. A helpful log message that got printed to stderr if a container create took more than 10s mentioning it as an alternative would be useful here. |
it is automatically used when native overlay is not usable. It can be for several reasons, like running on a network file system, too old kernel, or already running on top of overlay |
@giuseppe that is great information! I wonder if we can get https://github.com/containers/podman/blob/993ecd5a05a42269cf5b4547d3bf92cae9efffed/docs/tutorials/performance.md#performance-considerations updated to include that information? To my former question: OK, so it will only be used when native overlay can't, meaning there are cases where it will be used but not performant (like @eriksjolund demonstrated above). Would detecting this scenario and printing a helpful message be useful? |
there is already a note about fuse-overlayfs vs native overlay in a user namespace (https://github.com/containers/podman/blob/993ecd5a05a42269cf5b4547d3bf92cae9efffed/docs/tutorials/performance.md#choosing-a-storage-driver). What do you think should be added?
switching to fuse-overlayfs will affect the whole storage, once you start using fuse-overlayfs you can't go back unless you run |
yes. from what I can tell that section mentions the performance tradeoffs of each when either could be used, but it doesn't mention at all when
In other words, there are reasons to keep
I wish they were interchangeable and could be applied dynamically based on the conditions, but I guess that's not really in the realm of possibility otherwise it would have been implemented that way. |
Commit 5ad221d ("Revert \"Move fuse-overlayfs to suggests\" for Fedora 40 and older") restored the dependency on fuse-overlayfs for Fedora 40 and older to not disrupt stable Fedora releases by breaking backwards compatibility with existing containers. Fedora completely ignores Suggests by default [1]. So, listing anything as Suggests is as good as not mentioning it at all, unless it's intended for tools and users who specifically respect it. It turns out that there are important use-cases where the Linux kernel's overlay file system doesn't work, and one could really benefit from having fuse-overlayfs(1). A container cannot use an overlayfs when the underlying file system is also an overlayfs, such as on the Fedora Workstation live media, or a network file system. Therefore, it's worth restoring the dependency on all Fedora releases to cover these use-cases. As suggested by Giuseppe Scrivano. This reverts Fedora commit 447945e59a01cb6715ed2a21877d45bf0b91ef67 for all Fedora releases. [1] https://docs.fedoraproject.org/en-US/packaging-guidelines/WeakDependencies/ Fixes: coreos/fedora-coreos-tracker#1749 Fixes: containers/toolbox#1512 Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2299284 Signed-off-by: Debarshi Ray <[email protected]>
Sent a pull request to restore the I didn't touch any Fedora derivatives, because I assume that it needs further discussion. |
I've switched my systems back to I wrote an issue for the Atomic Desktops: https://gitlab.com/fedora/ostree/sig/-/issues/57 |
fuse-overlayfs
in containers-common
moved to Suggests
fuse-overlayfs
storage has significant impact on rootless containers creation time
fuse-overlayfs
storage has significant impact on rootless containers creation timeoverlay
storage has significant impact on rootless containers creation time
I kind of agree that maybe Since this won't be fixed anytime soon in native Overlay perhaps switching the default for rootless podman would be advisable. |
podman now defaults to native overlayfs for the storage driver and removed the dependency on fuse-overlayfs in containers-common. We had manually kept it in Fedora 40 as it was released with fuse-overlayfs so we had to keep it for compatibility during the major release lifetime. From discussions, it appears that this driver is still useful in rootless container use cases and has better performance there, thus let's keep it in the Atomic Desktops for now as this is a common use case. See: https://src.fedoraproject.org/rpms/containers-common/c/447945e59a01cb6715ed2a21877d45bf0b91ef67 See: coreos/fedora-coreos-tracker#1749
Native
overlay
storage has significant impact on container creation time and podman command responsiveness (podman images
).Switching back to
fuse-overlayfs
mitigates this issue, trading it off for some runtime cost. Note that for most rootless containers such as toolboxes, the performance overhead offuse-overlayfs
is likely negligible as the home directory is bind mounted and thus not going throughfuse
. Containers that also store their data in volumes are not penalized either.See:
Original issue: Dependency on
fuse-overlayfs
incontainers-common
moved toSuggests
fuse-overlayfs
has been moved from aRecommends
to aSuggests
in Fedora 40 and later:I manually added it back in Fedora Atomic Desktops for F40: https://pagure.io/workstation-ostree-config/pull-request/526
In Fedora CoreOS we have it explicitly listed in https://github.com/coreos/fedora-coreos-config/blob/testing-devel/manifests/fedora-coreos-base.yaml#L106.
We should reach out to the podman folks to figure out if we should also remove it with the update to F41.
The text was updated successfully, but these errors were encountered: