Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

"Parity Handover" for Upgrading Parity Disk

Featured Replies

TLDR

I 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 Case


A 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 Alternatives

The majority of these are described in the documentation here.

1. Replace parity disk with new disk, start array in Normal mode, and let parity rebuild

Straightforward, 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 rebuild

This keeps the parity drive valid since nothing is being written to the data disks, but requires extended downtime.

3. Use the Parity Swap procedure

This 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 1

This 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 config

Undocumented 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 Workflow

While 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 down

  • The 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 by Rick_
Added an additional Alternative option (Parity 1 to Parity 2)

  • 1 month later...

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!

  • 7 months later...

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.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.