-
Notifications
You must be signed in to change notification settings - Fork 98
Add support for remote Firecracker snapshots #1107
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
base: main
Are you sure you want to change the base?
Conversation
The target branch of this PR is currently stargz-snapshotter, but will be |
b10ef5f
to
8139f78
Compare
43fcf55
to
23fd3bd
Compare
23fd3bd
to
817fc62
Compare
b81fc78
to
def6841
Compare
4762bc0
to
a6db1e9
Compare
@leokondrashov I'll temporarily change the target of this PR to avoid triggering CI |
c0977e3
to
6eed888
Compare
9f5a856
to
4887968
Compare
4887968
to
69d7a38
Compare
@moharaka please review it first, then notify me to do my pass |
@moharaka @leokondrashov sorry, but don't review it yet. There's a test that is not passing in GitHub actions and I need to debug it |
b14ad5d
to
644aa3d
Compare
644aa3d
to
455b375
Compare
- When remote snapshots are enabled, after committing the snapshot, it is uploaded to a MinIO instance. When loading from a snapshot, if it is not available locally, it checks if it is available in MinIO and fetches it. - Remote Firecracker snapshots are currently only supported using the Stargz snapshotter (there are some container corruption issues when using devmapper). Signed-off-by: André Jesus <andre.jesus.pilar@gmail.com>
455b375
to
bdeafcb
Compare
@leokondrashov @moharaka This is finally ready for review. The changes are described in the PR description. Feel free to comment if anything looks off—I'm also open to suggestions for design improvements. As for the tests, I know they could be better, but I really can’t spend more time on this PR since I need to start working on the scheduler optimization. |
When set to false and using remote snapshots, snapshots will not be cached locally. The default value is true. Signed-off-by: André Jesus <andre.jesus.pilar@gmail.com>
Summary
When remote snapshots are enabled, after committing a snapshot, it is uploaded to a MinIO instance. When loading from a snapshot, if it is not available locally, the system checks whether it is available in MinIO and fetches it if found.
Closes #823
Implementation Notes ⚒️
-snapshots
option type from a boolean to a string, with three valid values:local
,remote
, ordisabled
(default).ObjectStorage
with methods to upload and download objects. CreatedMinioStorage
as an implementation of this interface.SnapshotManager
to support uploading and downloading snapshots via theObjectStorage
interface.Remote Firecracker snapshots are currently only supported using the Stargz snapshotter (there are known container corruption issues when using devmapper).
External Dependencies 🍀
github.com/minio/minio-go/v7
dependency.Breaking API Changes⚠️