Replies: 1 comment
-
Status update on this item. We have merged a PR that removes forward compatibility support: #4194. That means that Firecracker, starting with version 1.6, will not be able to create snapshots for older versions of Firecracker releases. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Firecracker provides a snapshotting feature, currently on Developer Preview. Users can take a snapshot of a running microVM and later use this snapshot to launch more microVMs, identical to the one they took the snapshot from. This feature removes the “overhead” of booting an entire Linux microVM from scratch. As a result, it allows services to reduce significantly the time it takes to start a microVM in a state in which it is ready perform its tasks.
Snapshot versions today
Snapshots come with versions which, today, are tightly coupled with Firecracker versions. When we first designed the snapshot feature we wanted to support both forward and backward snapshot compatibility that spanned as many Firecracker versions as possible. Backward compatibility refers to the ability to load snapshots created targeting an older version of Firecracker. Forward compatibility refers to the ability of a Firecracker process to create a snapshot targeting an older version of Firecracker. The intention was that we would allow users to easily migrate a fleet of microVMs to newer versions of Firecracker (backward compatibility) or roll it back to a previous version of Firecracker (forward compatibility).
Building on the experience of our users’ adoption of the snapshot feature in production, we observed that we never really use the forward compatibility functionality. Moreover, when migrating to new Firecracker versions, users typically start consuming new Firecracker features, which would not be available to a microVM if resumed from an older snapshot. As a result, even though it is possible to load older snapshot versions on new Firecracker versions, users typically don’t do it so that they take advantage of new functionality.
To support forwards and backwards compatibility spanning multiple minor/major versions, we increase code and testing complexity. According to the data we gathered during development preview, the (lack of) adoption of these features does not justify the maintenance cost. As a result, we have decided to change the versioning scheme of Firecracker snapshots and the version compatibility guarantees, taking into account the real Firecracker's users requirements of the snapshotting feature, improve code quality, and future-proofing maintainability.
Snapshot versions moving forward
We will drop completely support for snapshot forwards compatibility. This means that the field version
of the /snapshot/create PUT request will be deprecated, starting from version v1.5 and will be removed in a future release.
With version v1.6 we will introduce a new versioning scheme for Firecracker snapshots:
Should you have any questions, concerns or suggestions, please feel free to ask in this discussion, by 10/10/2023
Sincerely,
The Firecracker team
Beta Was this translation helpful? Give feedback.
All reactions