Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Remove deprecated devicemapper storage driver #43637

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

Merged
merged 2 commits into from
May 18, 2023

Conversation

thaJeztah
Copy link
Member

@thaJeztah thaJeztah commented May 24, 2022

@AkihiroSuda
Copy link
Member

LGTM but maybe devicemapper can be discussed in a separate PR?

containerd had once excluded devicemapper but added devicemapper later due to a request from the community of VM-based runtimes.

@tianon
Copy link
Member

tianon commented May 26, 2022

Discussing in the maintainers meeting (specifically: @tianon @neersighted @corhere @tonistiigi @cpuguy83), there's some consensus that with the imminent containerd migration plans (cc @chris-crone), we should probably put a pause on completely removing these until that's done such that we keep coverage of the use cases for these other graph drivers (even if there won't be an explicit migration path).

https://github.com/containerd/containerd/blob/f033f6ff85ce397202ee69de22b4e3a4bf4093f5/docs/snapshotters/README.md

@thaJeztah
Copy link
Member Author

Given that AuFS has been deprecated both in docker and containerd, perhaps we should move that one separate?

@thaJeztah thaJeztah force-pushed the remove_deprecated_storage_drivers branch 3 times, most recently from 9096d6e to adb02a9 Compare April 15, 2023 12:28
@thaJeztah
Copy link
Member Author

Given that AuFS has been deprecated both in docker and containerd, perhaps we should move that one separate?

I opened #45342 with only the first commit

@thaJeztah thaJeztah force-pushed the remove_deprecated_storage_drivers branch from adb02a9 to 4758e99 Compare April 19, 2023 15:07
@thaJeztah thaJeztah changed the title Remove deprecated aufs, devicemapper, and legacy overlay storage drivers Remove deprecated devicemapper, and legacy overlay storage drivers Apr 19, 2023
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
@thaJeztah thaJeztah force-pushed the remove_deprecated_storage_drivers branch from 4758e99 to c33b311 Compare April 20, 2023 21:52
@thaJeztah thaJeztah changed the title Remove deprecated devicemapper, and legacy overlay storage drivers Remove deprecated devicemapper storage driver Apr 20, 2023
Comment on lines -317 to -325
// isDeprecated checks if a storage-driver is marked "deprecated"
func isDeprecated(name string) bool {
switch name {
// NOTE: when deprecating a driver, update daemon.fillDriverInfo() accordingly
case "devicemapper":
return true
}
return false
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's an orthogonal discussion, but a use case for keeping this function: can we deprecate the zfs driver? (does overlay2 on top of ZFS work "ok" now?)

I guess we'll have to come up with a better generic "graph driver" deprecation message once we're ready to go all-in on the containerd migration, so maybe worth ignoring this thought and just letting this PR ride as-is.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

overlay2 will work on top of ZFS in the next release of ZFS, but at the moment there are no ZFS releases with the necessary support for overlayfs.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

overlay2 will work on top of ZFS in the next release of ZFS, but at the moment there are no ZFS releases with the necessary support for overlayfs.

I'm curious: what is/was the missing feature?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bra-fsn there's some discussion in #46337 (comment) related to overlayfs support on zfs

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bra-fsn there's some discussion in #46337 (comment) related to overlayfs support on zfs

Thanks! So if the plan is to remove the ZFS driver at the end should it be safe to switch to ZFS+overlayfs (given I have the right ZFS version) now?
We have issues with it, sometimes destroying the FS fails with:

driver \"zfs\" failed to remove root filesystem: exit status 1: \"/usr/sbin/zfs destroy -r data/docker/c72f8a5f2af773735ad2ae5a96eebe6cf1593cf770d9475a1da1af76bd6d0cb6\" => cannot destroy 'data/docker/c72f8a5f2af773735ad2ae5a96eebe6cf1593cf770d9475a1da1af76bd6d0cb6': dataset is busy\n"

but ZFS is so effective for the docker workload with compression and deduplication (currently we have 6.87x dedup and 2x compression, that is huge) that switching away from it is a no-go.

Copy link
Member Author

@thaJeztah thaJeztah Jan 26, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The very honest answer is that the usage of the zfs (and btrfs) drivers is marginal, and that they are a lot less "battle-tested" than overlay. We know there's some issues in both, and that some of the dependencies used in the implementation are poorly maintained (if at all). Contributions and fixes in those areas are definitely welcome, but with limited bandwidth/engineering time among maintainers for this project, work on these drivers is not on the top of the priority list. These drivers were originally contributed before overlay was a viable solution and to allow docker to run on other filesystems (zfs, btrffs), but our hope is for kernel support of overlay on zfs to mature so that overlay can be used in all situations (leaving zfs for expertise, "I know what I'm doing" use-cases).

We're also in the process of migrating to the containerd image-store, which provides native multi-arch support using containerd's snapshotters for storing images (whereas the graph-driver implementation only allows storing a single architecture for an image-tag). Graph-drivers will continued to be provided to help users transition, but will eventually go away. Containerd also has a snapshotter implementation for zfs (and btrfs), but I know the containerd maintainers are in a similar situation w.r.t. support for it (low amount of use, and poorly maintained dependencies), so they're also evalutating their future.

@tianon
Copy link
Member

tianon commented Apr 20, 2023

IMO, the containerd migration is sufficiently advanced now that I withdraw my earlier hesitation and personally think this PR is good-to-go.

This was referenced Jun 6, 2023
@thaJeztah thaJeztah mentioned this pull request Nov 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants
Morty Proxy This is a proxified and sanitized view of the page, visit original site.