June 26, 20251 yr TLDRI recommend a feature that allows a user to perform a "Parity Handover", which maintains synchronization between an existing parity drive to a new drive and allows the original parity drive to be removed.Use CaseA user would like to replace an existing Parity 1 or Parity 2 drive with an equal or larger disk while minimizing down time and risk of data loss. They may want to replace a parity disk because it's getting close to end of life, or they may want to replace the disk with a larger-capacity disk, allowing them to repurpose the existing parity drive as a data drive (as described in this thread).Current AlternativesThe majority of these are described in the documentation here.1. Replace parity disk with new disk, start array in Normal mode, and let parity rebuildStraightforward, but if a data drive fails during the parity rebuild, the original parity disk will no longer be valid. Data recovery will likely be a headache.2. Replace parity disk with new disk, start array in Maintenance mode, and let parity rebuildThis keeps the parity drive valid since nothing is being written to the data disks, but requires extended downtime.3. Use the Parity Swap procedureThis option is intended for replacing a disabled/failed disk to expedite the process, and would only add more risk if used in this scenario (something highlighted in the documentation as well).4. Add Parity 2 and remove Parity 1This option seems to be best choice right now for maximizing uptime and protection. It involves assigning the new disk to Parity 2, letting Parity 2 be built, and then unassigning the original Parity disk. It's valid to only have Parity 2, but Parity 2 is more computationally expensive and the location of the disks matters, meaning they can't be moved around in the future without rebuilding parity. This same operation can be performed in the future to shift back to Parity 1. 5. Copy the parity drive and create a new configUndocumented to my knowledge. Manually sync the parity drive to a new, unassigned drive using a tool like dd, building a new config with the new drive as the parity drive, and attesting that parity is valid when rebuilding. I have NO IDEA if this would actually work.Conceptual Feature and WorkflowWhile the array is stopped, in the Main tab of the Web GUI add a button below the existing parity disks that says "Configure Parity Handover". If both Parity 1 and Parity 2 are present, it will ask the user which disk they want to copy. Whichever one the user selects, a new slot will be added below the respective parity disk. For example, if I only have Parity 1 in my system, if I click "Configure Parity Handover", a new slot is added under Parity called "Parity Copy".I can then select the unassigned disk I want to copy parity to (limited to equal or greater-sized drives).If I click START, the array starts up as usual, but begins syncing the Parity disk and the Parity Copy disk. Optionally, you can provide the user an option to preclear the drive to stress-test it, but that should be able to be bypassed.During synchronization between the two drives, there should be some indicator (in the dashboard, Main tab, and/or bottom of the GUI) to show progress.During synchronization, the Parity Copy drive should show "Sync in Progress" to indicate that it's not safe to use the new drive as parity yet.Once the two drives are fully synced, the Parity Copy drive should show a "Synced" indicator with a button next to it that says "Complete Handover".If the user clicks "Complete Handover", a dialog should explain what is going to happen, which is:All services (Docker/VMs) will be shut downThe array will enter maintenance mode (cannot write any more data to the data disks)The Parity Copy drive will be finalized (any remaining writes are completed to ensure it's in sync with the original Parity drive)The array is stopped, the old parity drive is removed from the Parity slot, the Parity Copy drive is assigned to the Parity slot with valid parity, and the array is started in Normal mode.Afterward, everything looks as it should. There was never a lack of data protection, and there was minimal downtime. Edited June 26, 20251 yr by Rick_ Added an additional Alternative option (Parity 1 to Parity 2)
August 11, 2025Aug 11 I think this feature would be awesome!The current options either leave your data unprotected, take many steps and much time or you end up with the more expensive and inflexible parity 2 in single parity setups.This would allow basically zero downtime and require less performance penalty than a regular parity rebuild, as reads from data disks are not affected at all, while still retaining full protection throughout the process.My feeling is that it wouldn't be too hard to implement this, as it is basically just running dd from the old to the new parity drive, while also mirroring every write that happens to the old drive to the new drive, but only if it happens in the area that was already written to by the dd'ing process. After the dd is done, only the write-mirroring remains to keep the drives in sync until the user decides to drop the old parity drive.Maybe this "replace disk" feature could even work for data disks as well? The approach should not be different there.I'm looking forward to seeing this idea develop!
April 6Apr 6 I would like to cast my vote on this feature too. I have an array of 5x 4tb drives (4data/1parity), and is about to add a 8tb drive which will have to be the parity drive. This feature would had helped a lot on preparation for the swap over.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.