Introduce Assume Clean Operation
Introduce Assume Clean Operation
Introduction
The --assume-clean flag is added to graidctl with a confirmation prompt to allow users who desperately want to keep their failed DG serving.
Confirmation Prompt
Since this operation may bring a PD online without ensuring data integrity, potentially compromising the consistency of the array, the user must have a thorough understanding of the drive conditions and accept full responsibility for any risks. As a safeguard, the following prompt will appear, and the command will only execute upon successful confirmation.
Warning: This is an unsafe operation!
Using '--assume-clean' may cause data inconsistency or data loss.
Proceed only if you fully understand the risks and have verified your backup.
To confirm, type (Case sensitive): 'Confirm Unsafe Operation'
Confirmation:
You can also use the --confirm-unsafe-operation flag to bypass the prompt and execute the command immediately.
Note
THIS FLAG IS HIDDEN TO USERS
Affected Resources and Commands
Drive Group
graidctl create dg [raid_type] [ids] --assume-clean- Skips the initialization step of DG (replaces the original
-f/--force_cleanflag). List DGwill now display a!after its state.Describe DGwill showAssume Cleaned: true.
- Skips the initialization step of DG (replaces the original
graidctl edit dg [ID] marker forced_online- Brings a failed DG back online (same behavior as before, but now requires confirmation and is no longer hidden).
- Can only be executed on a FAILED DG.
- Can only be executed if the DG has enough healthy PDs.
List DGwill now display a!after its state.Describe DGwill showAssume Cleaned: true.
DG with Write Hole (Auto/No Prompt)
- If a DG might contain a write hole, the system will trigger an event and continue serving data.
List DGwill now display a!after its state.Describe DGwill showAssume Cleaned: true.
Physical Drive
graidctl edit pd [ID] marker [good|online] --assume-clean- Considers the PD healthy and brings it up without requiring a rebuild.
- Can only be executed on a PD that belongs to a DG.
- Can only be executed alongside an INACTIVE DG.
- Can only be executed if the DG cannot use
forced_online(i.e., already has enough healthy PDs). - After unsafely bringing up a PD, the DG will automatically
forced_onlineif there are enough PDs regarded as healthy. List PDwill now display a!after its state.List DGwill now display a!after its state.Describe PDwill showAssume Cleaned: true.Describe DGwill showAssume Cleaned: true.
Showing Status if Assume Cleaned
Example for showing
!in list DG:✔List drive group successfully. │───────│───────│────────│──────────│─────────│──────│───────────────────────│──────────│ │ DG ID │ MODE │ VD NUM │ CAPACITY │ FREE │ USED │ CONTROLLER │ STATE │ │───────│───────│────────│──────────│─────────│──────│───────────────────────│──────────│ │ 0 │ RAID5 │ 0 │ 4.3 GiB │ 4.2 GiB │ 0 B │ running: 0 prefer: 0 │ OPTIMAL! │ │───────│───────│────────│──────────│─────────│──────│───────────────────────│──────────│Example for showing
Assume Cleaned:in describe DG:✔Describe drive group successfully. DG ID: 0 NQN: nqn.2020-05.com.graidtech:GRAID-SR42AFD047BF976713 Model: GRAID-SR Serial: 42AFD047BF976713 Firmware: 1.7.0-dev Mode: RAID5 Capacity: 5.7 GiB (6085935104 B) Free Space: 5.7 GiB (6081740800 B) Used Space: 0 B Strip Size: 4096 State: OPTIMAL PD IDs: [0 1 2 3 4] Number of VDs: 0 Prefer Controller: 0 Running Controller: 0 Volatile Cache: Disabled PD Volatile Cache: Enabled Journal: Degrade Only Assumed clean: true Attributes: init_speed = high rebuild_speed = high spdk_bdev = DISABLE auto_failover = ENABLE transform_speed = high copyback_speed = high resync_speed = high cc_speed = high FreeRanges: 1 - 1450Example for showing
!in list PD:...│────────────────│──────────│─────────│───────────│─────────│───────────────────│───────────────│ ...│ MODEL │ CAPACITY │ SLOT ID │ NUMA NODE │ WEAROUT │ STATE │ SED STATE │ ...│────────────────│──────────│─────────│───────────│─────────│───────────────────│───────────────│ ...│ QEMU NVMe Ctrl │ 1.9 GiB │ N/A │ 0 │ 0% │ ONLINE! │ Not Supported │ ...│ QEMU NVMe Ctrl │ 1.9 GiB │ N/A │ N/A │ 0% │ OFFLINE │ Not Supported │ ...│ QEMU NVMe Ctrl │ 1.9 GiB │ N/A │ 0 │ 0% │ ONLINE │ Not Supported │ ...│ QEMU NVMe Ctrl │ 1.9 GiB │ N/A │ 0 │ 0% │ ONLINE │ Not Supported │ ...│────────────────│──────────│─────────│───────────│─────────│───────────────────│───────────────│Example for showing
Assume Cleaned:in describe PD:✔Describe physical drive successfully. PD ID: 0 DG ID: 0 Slot ID: -1 GUID: nqn.2019-08.org.qemu:NVME0008 Mode: QEMU NVMe Ctrl Capacity: 1.9 GiB State: ONLINE Device Path: /dev/gpd3 Numa Node: 0 Volatile Cache: Enabled Wearout: 0% Critical Warning: No warning. Assumed clean: true SED State: Not Supported Attributes: locating = false hotspare = SMART Log: Critical Warning : 0 Composite Temperature : 50°C (323 Kelvin) Available Spare : 0% Available Spare Threshold : 0% Percentage Used : 0% Endurance Group Critical Warning Summary : 0 Data Units Read : 1736 Data Units Written : 568 Host Read Commands : 7824 Host Write Commands : 2384 Controller Busy Time : 0 Power Cycles : 0 Power On Hours : 3 Unsafe Shutdown : 0 Media and Data Integrity Errors : 0 Number of Error Information Log Entries : 0 Warning Composite Temperature Time : 0 Critical Composite Temperature Time : 0 Thermal Management T1 Transition Count : 0 Thermal Management T2 Transition Count : 0 Thermal Management T1 Total Time : 0 Thermal Management T1 Total Time : 0