oxidecomputer / oxidecomputer/omicron
Support for expungement leading to faulted disks
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 572
- Forks
- 97
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 96
Description
Nexus currently only faults disks in a few scenarios, none of which respond to when a physical disk is expunged. This issue tracks implementing the following:
-
a disk could be faulted while attached to an instance but the current
DiskState::Faultedenum variant does not have an attached instance id. Adding this requires three API bumps and investigating the existing logic in Nexus that checks functions likeDiskState::is_attached -
a background task should scan for disks backed by local storage, and set those disks to faulted if the physical disk that the local storage dataset is on was expunged.
-
similarly, a task should scan for disks backed by crucible and check if all the downstairs in any region set for a volume were expunged. if this is true then that disk should be set to faulted as well
-
deciding what to do with instances whose disks are faulted: discussions about this landed on either requesting that the instance stops immediately, or sending a hot-unplug event, depending probably on some user configurable policy
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with DiskState::Faulted and the existing DiskState::is_attached checks, then trace the API bumps and background task entry points described in the issue. Review how local-storage datasets and Crucible downstairs are represented when physical disks are expunged. Done means both storage paths fault affected disks and the instance behavior policy is resolved and implemented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- api, backend, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100