-
Notifications
You must be signed in to change notification settings - Fork 159
feat: enable btrfs #2001
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
feat: enable btrfs #2001
Conversation
|
Welcome @motiejus! |
Hi @motiejus. Thanks for your PR. I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
Hmm so supporting btrfs resizing on Hyperdisk volumes requires creating a smaller volume, migrating data, and deleting the original. This seems like a half supported feature for PDCSI driver, I am not sure if we want to have it enable. /assign @mattcary |
/ok-to-test Since this is just adding another option to the storage class and not changing any of the control flow, I'm inclined to go ahead and enable it. Although if resizing is not working the tests probably need to be updated to skip them -- let's see what the CI does. |
@motiejus can you update the README with details of support? Including any quirks around usage, like resize as Sunny mentioned (I haven't verified any of this myself). |
AFAIK CSI API only supports expansion? From here:
Let me know if this is wrong, I would be very happy to stand corrected. As far as I understand, btrfs is the only filesystem out of the 3 (others of course being xfs and ext4) that supports online shrinking. If there is an API I can hook into, I would be more than happy to implement it for btrfs.
As far as I have tried, all the features present in |
Those failing tests seem like flakes? Windows-2019 and Windows-2022. To @mattcary 's comment
Early in testing we realized that the default Given that the memory limits are not part of this repository, do you think this warrants an entry in the README? |
I think updating the readme to say that btrfs is available, but it's new and has not been production-tested. Things like increased memory needs would also be helpful. |
Added a note in the README. If you prefer other wording, please let me know how, so I'll update it, or feel free to change it yourself. Thanks! |
That looks great, thanks |
Hmm, it didn't look like the integration test ran with your sc-btrfs. I'm not sure why, can you take a look? |
Tried to take a look. Are we missing a big chunk of integration tests? Anyhow, this seems to be a bigger problem than btrfs. Happy to help, but my knowledge of the test setup is lacking. |
You should try to replace the --storageclass-files=sc-balanced.yaml in the run-k8s-integration.sh and see if the integ tests run. |
As per [this suggestion](kubernetes-sigs#2001 (comment))
The integration test failed with this:
|
Integration test doesn't like non-COS:
i will add a note in the README that CSI does not currently have btrfs kernel driver, thus only Ubuntu is supported (from the list of GCP-blessed OS images). If the OCI team asks, I would appreciate if you could support the clause. |
This change is enough to provision and run a btrfs filesystems on Ubuntu. Tested workflows: [x] provisioning (formatting) [x] disk expansion The integration tests are not updated to run btrfs, because as of writing [COS does not support btrfs](https://cloud.google.com/container-optimized-os/docs/concepts/supported-filesystems).
@motiejus: The following tests failed, say
Full PR test history. Your PR dashboard. Please help us cut down on flakes by linking to an open issue when you hit one in your PR. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
We've started the process internally, we'll see what happens.
If you go to the prow job yaml from the build details page, you see the following: So it's the run-integration-test.sh script that's executed for presubmit. The -ci script is run periodically to make the following: https://testgrid.k8s.io/provider-gcp-compute-persistent-disk-csi-driver. Sorry, I misremembered what was what. Anyway it looks like for the presubmit we only run on one storage class anyway, to save presubmit time. That's probably a good idea, ie we wouldn't want to add btrfs to the presumbit anyway. Thank you for arranging a one-off run to confirm the COS issue. Since we've listed this support as experimental, and the presubmit run does confirm that enabling btrfs doesn't break anything else (not that we would have expected to but that's what testing is for....), I think we can submit this. Thanks for your contribution! /lgtm |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: mattcary, motiejus The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
@motiejus are you on slack? I have a couple questions to ask. Thanks! |
Sent you an email to your @google.com address. |
This change is enough to provision and run a btrfs filesystems.
Tested workflows:
[x] provisioning (formatting)
[x] disk expansion
/kind feature
Fixes #2000
What this PR does / why we need it:
Enables formatting new PVCs using
btrfs
filesystem.Mount options like
compress=zstd
work as expected.Does this PR introduce a user-facing change?: YES
Non-btrfs users are not impacted by this change.
It is not explicitly supported in GCP docs, and it does not have to be, at least in the interim. This PR allows users easily experiment with the FS.
The integration tests are not updated to run btrfs, because as of writing COS does not support btrfs.