Repository navigation
feat(backup): consistency-group backup foundation (records, manifest,… - #1467
Open
geoffrey1330 wants to merge 13 commits into
Open
geoffrey1330 wants to merge 13 commits into
geoffrey1330 wants to merge 13 commits into
Conversation
…adding attributes' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
… refusals with 409
… refusals with 409
… refusals with 409
Collaborator
|
Could you add a brief description of what the change is trying to achieve and how it is doing so? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
… decisions)
Consistency-group backup and restore (control plane)
Backs up one generation of a consistency group to S3 as a single all-or-nothing unit and restores it into a new group.
What changes
GroupBackuprecord and group manifest. A group backup names the member backups of one generation (group_seq). It commits only when every member backup completed; one terminal member failure fails the whole group. The group manifest in the bucket lists the members, so a bucket can be read without the cluster that wrote it. MemberBackuprecords carrygroup_backup_idandgroup_seq, indexed so "members of a group backup" is a point read.POST /clusters/{id}/consistency-groups/{cg}/backupsandsbctl consistency-group backup-createtake a fresh crash-consistent generation, or back up an existing one by sequence, and fan out to the single-volume backup path per member. Members must be homogeneous (one bucket, one encryption disposition).POST /clusters/{id}/group-backups/{id}/restoreandsbctl group-backup restorerecreate every member from S3 into a new consistency group, all or nothing: chains are validated before any volume exists, members are pinned to one store, and a member failure unwinds what was created. Each member recovers asynchronously as a single-volume restore does.sbctl group-backup export/import/discovercarry a group backup across clusters as a unit, ids preserved, for the DR case.target_type: consistency_group). The group schedule takes one generation per interval, keeps at most one group backup in flight, and prunes whole generations per tier.sbctl group-backup list/get/delete, group-backup DTOs, and the OpenAPI surface the operator client is generated from.Fixes from the live bed
Driven end to end with a three-member group under fsync'd I/O, backup, restore and data checks against real SPDK and S3:
max_namespace_per_subsys; the manifest carries it off the record so it survives the volume and an import; restore reapplies it and a group restore creates each member into the new group, so a restored group shares one subsystem like its source instead of one subsystem per member.group_idso deletion can detach them.