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.

Replacing a failed pool device, trying to replace and rebuild parity - noob help

Featured Replies

Hello Unraid community,

I'm a long time user but generally not super tech savvy.

After updating my unraid version because of the recent exploits, one of my two cache drives failed (Listed as DEGRADED). I had a replacement drive on hand so I shut down my machine, pulled the old drive and replaced it. After booting back up I selected the newly identified drive for device #2, expecting unraid to then rebuild the parity, but when trying to start the array I'm getting "Wrong Pool State Cache - too many or wrong drives missing". Drives are set up as btfrs. Am I doing something wrong or missing a step here? Any help would be greatly appreciated!

Tried following the unraid guide here:https://docs.unraid.net/unraid-os/using-unraid-to/manage-storage/cache-pools/

but it simply says:

  1. In the Main tab, stop the array (Array Operation → Stop).

  2. (Optional) If you don’t have hot-swap, physically remove the old disk.

  3. Install the replacement disk and ensure proper connection.

  4. Refresh the Main tab to detect the new disk.

  5. Assign the new disk to the previous slot.

  6. Start the array.

  7. Monitor the rebuild progress in the WebGUI.

I'm failing at step #6 somehow =(

Edited by NewGuyEddie
Added additional info

  • Author

Bumping - would be more than willing to tip/pay if anyone can help me get this figured out!

  • Author

tower-diagnostics-20261023-0753.zip

Replace the old drive to get the array to boot, this is with the DEGRADED drive online, replacement drive has been removed ATM.

Edited by NewGuyEddie
Added additional info

  • Community Expert

Pool has a missing device, so the new writes created single profile chunks, this means you no longer can use the GUI since the pool is not fully redudntant.

With the array running type

btrfs balance start -f -dconvert=single,soft -mconvert=dup,soft /mnt/cache

When that's done:

btrfs device remove missing /mnt/cache

Then stop the array and import the pool with the remaining device:

on main click on the first device for that pool and then "remove pool"

back on main, create a new pool with the same name and 1 slot

assign the good pool device (cache2), leave the filesystem set to auto

start the array to import the pool

Post new diags, but if all look normal, you can then add another device if you like to mirror it again.

  • Author

When attempting to run "btrfs balance start -f -dconvert=single,soft -mconvert=dup,soft /mnt/cache" im getting:

"Conversion with missing device(s) can be dangerous.

Please use 'btrfs replace' or 'btrfs device remove' instead.

Safety timeout skipped due to --force"

Also above you mention removing the first device, and leaving cache2, but the GUI seems to show cache2 being offline:

image.png

Edited by NewGuyEddie

  • Community Expert

That is normal, and since the pool is already using a single device, it's OK.

  • Author

Sorry linux and unraid noob, does that mean i need to type "--force" then the "btrfs balance start -f -dconvert=single,soft -mconvert=dup,soft /mnt/cache" string? or there there are command to confirm and continue?image.png

Very much appreciate your help here!

Edited by NewGuyEddie

  • Community Expert

It should have continued by itself, just wait until you get the cursor back. That means it's done.

  • Author

Next error/warning:image.png

  • Community Expert

That error suggests the previous balance didn't finish; post new diags, please.

  • Community Expert

Syslog reports the balance was canceled:

Oct 23 08:39:34 Tower kernel: BTRFS info (device sdc1): found 351 extents, stage: move data extents

Oct 23 08:39:34 Tower kernel: BTRFS info (device sdc1): balance: canceled

Run it again, with the array running type

btrfs balance start -f -dconvert=single,soft -mconvert=dup,soft /mnt/cache

When that's done:

btrfs device remove missing /mnt/cache

  • Author

got it, running now, I think i inadvertently canceled it when trying to ctr copy out the warning message. Also to loop back to the beginning you said "assign the good pool device (cache2)" but if I'm understanding the GUI right it's cache 1 that is healthy, do the diagnostic indicate otherwise?

  • Community Expert
2 minutes ago, NewGuyEddie said:

Also to loop back to the beginning you said "assign the good pool device (cache2)" but if I'm understanding the GUI right it's cache 1 that is healthy, do the diagnostic indicate otherwise?

You are correct; I had looked at the btrfs info and device 2 is typically cache2, but sdc is cache1 according to the diags, so use cache1 (sdc) to reimport the pool

Data Data Metadata Metadata System System

Id Path single RAID1 RAID1 DUP RAID1 DUP Unallocated Total Slack

-- --------- -------- --------- --------- --------- -------- -------- ----------- --------- -----

1 missing - 392.00GiB 1.00GiB - 32.00MiB - 538.48GiB 931.51GiB -

2 /dev/sdc1 38.00GiB 392.00GiB 1.00GiB 2.00GiB 32.00MiB 64.00MiB 498.42GiB 931.51GiB -

-- --------- -------- --------- --------- --------- -------- -------- ----------- --------- -----

Total 38.00GiB 392.00GiB 1.00GiB 1.00GiB 32.00MiB 32.00MiB 1.01TiB 1.82TiB 0.00B

Used 36.31GiB 391.72GiB 437.39MiB 285.72MiB 48.00KiB 48.00KiB

  • Author

Just finished with the balance and the btrfs device remove missing /mnt/cache ran without issue.

Just to make sure I understand your instructions:

Then stop the array and import the pool with the remaining device: I should shut down my server, remove the old SSD, and replace it.

on main click on the first device for that pool and then "remove pool" Once the array is started remove the cache pool entirely

back on main, create a new pool with the same name and 1 slot Create a new pool with one slot, using the old good SSD.

assign the good pool device (cache2), leave the filesystem set to auto take array offline, change cache pool size to 2, set newly added SSD as second drive

start the array to import the pool Start array again and parity will build itself

Am i understanding all that correctly? Again really appreciate your help here.

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.