-
Notifications
You must be signed in to change notification settings - Fork 837
Fix fuse mount issue on ubuntu 18.04 #7531
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
Fix fuse mount issue on ubuntu 18.04 #7531
Conversation
sky/data/mounting_utils.py
Outdated
| f'/blobfuse2-{BLOBFUSE2_VERSION}-Debian-11.0.${{ARCH_SUFFIX}}.deb ' | ||
| '-O /tmp/blobfuse2.deb && ' | ||
| 'sudo dpkg --install /tmp/blobfuse2.deb && ' | ||
| ' sudo dpkg --install /tmp/blobfuse2.deb; ' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We had a problem installing blobfuse2 on older system images like Ubuntu 18.04. This code change allows successful installation of blobfuse2.2 on older system versions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The problem is even if we install blobfuse on Ubuntu 18, our fuse proxy doesn't seem to work for mode: MOUNT. So we should either make e-proxy support this in the future, or remove the installation code and exit with clear instructions.
|
/smoke-test --remote-server --kubernetes -k test_docker_storage_mounts |
|
/smoke-test --kubernetes -k test_docker_storage_mounts |
aylei
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm confused why this does not fail before, but great work! Thanks @zpoint !
This PR address the failure of smoke test: https://buildkite.com/skypilot-1/smoke-tests/builds/4096#0199bde8-a2c8-4c03-b5bb-72ee38aedbaf.
Check the Azure documentation for installing fuse2:
Latest: https://github.com/Azure/azure-storage-fuse/wiki/Blobfuse2-Installation
Ubuntu 18: https://github.com/Azure/azure-storage-fuse/wiki/Blobfuse2-Installation/a91840d19717aabbd87dd3b319e92550726a4fdf
The issue is on Ubuntu 18, fuse3 isn't in deb source and fails to install.
The blobfuse2 we downloaded from GitHub releases is compiled with fuse3.so.
So blobfuse2 will fail to run because it can't find fuse3.so even if we download it.
Approach 1: Install an older version of libfuse2 and download a blobfuse2.2 compiled with libfuse2.so
This doesn't work.
Our fuse-proxy needs to run in non-privileged mode and requires libfuse3's feature to mount custom fd
/dev/fd/n, which libfuse2 doesn't support. Libfuse2 requires container privilege, and even with privilege set, our fuse proxy still doesn't work due to the fd mount issue. The older libfuse hardcodes mounting of/dev/fuse, which requires privilege and isn't compatible with our fuse-proxy's working logic.Approach 2: Install libfuse3 for Ubuntu 18
This is a bit hacky but works. Use Ubuntu 20's source to install libfuse3.so for Ubuntu 18.
This PR fixes the fuse installation issue.
Reproduce:
Tested (run the relevant ones):
bash format.sh/smoke-test(CI) orpytest tests/test_smoke.py(local)/smoke-test -k test_name(CI) orpytest tests/test_smoke.py::test_name(local)/quicktest-core(CI) orpytest tests/smoke_tests/test_backward_compat.py(local)