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.

BTRFS RAID10 Cache Pool - Slow??

Featured Replies

Hardware:

Supermicro 846 Chassis, EPYC 7452, 128GB RAM, 10 HDD array, 8 SSD Cache Pool, P2000 GPU

Use Case:

Plex, *arrs, Home Assistant, Windows 11 (Blue Iris), Frigate, PiAware, etc...etc...

Background:
My previous configuration had a single XFS SSD cache drive. I never observed any sluggishness with the GUI, Plex or other containers.

Current Situation:

After a migration, my Cache pool is now eight 1TB SSD configured in BTRFS RAID10.
I initially had this pool configured as a RAID1, but the same lag was noted.

Whenever loading Plex libraries (On any device, on any network - local or remote) the thumbnails take 5-10 seconds to populate.

Whenever navigating the unRAID GUI, the screens take 5-10 seconds to load.

All of these mundane tasks seem to take ~5 or more seconds to complete.

Plex is obviously the most annoying, because friends and family have also noted the change.

Attempted:
Started as RAID1 before moving to RAID10.
Balanced, scrubbed, defragged........

Ask:
Am I insane? Shouldn't this pool absolutely dominate these tasks?
Do I attempt to migrate this pool to ZFS?
Do I give up and move back to a single XFS drive?

Am I really losing performance on small files due to overhead or something?

This is new territory for me, so I thank you in advance.

tower-diagnostics-20251228-1958.zip

Solved by JorgeB

  • Community Expert
6 hours ago, mortist said:

Whenever navigating the unRAID GUI, the screens take 5-10 seconds to load.

Pool should have no effect on navigating the GUI, retest in safe mode and/or with the services disabled

  • Author
8 hours ago, JorgeB said:

Pool should have no effect on navigating the GUI, retest in safe mode and/or with the services disabled

Alright - You're correct, maybe the GUI is just in my mind because Plex is bugging me.
Safe Mode- a solid 2 seconds to render any page.
Normal Boot- Most pages load in 2 seconds, the dashboard takes 3.

The easiest place to notice this lag is on the Plex Collections, I just timed one page at 13 seconds to load the poster thumbnails.

Is BTRFS suitable for this type of workload? Hundreds of tiny random files?

Thanks again,

9 hours ago, JorgeB said:

Pool should have no effect on navigating the GUI, retest in safe mode and/or with the services disabled

8 hours ago, JorgeB said:

Pool should have no effect on navigating the GUI, retest in safe mode and/or with the services disabled

Alright - You're correct, maybe the GUI is just in my mind because Plex is bugging me.
Safe Mode- a solid 2 seconds to render any page.
Normal Boot- Most pages load in 2 seconds, the dashboard takes 3.

The easiest place to notice this lag is on the Plex Collections, I just timed one page at 13 seconds to load the poster thumbnails.

Is BTRFS suitable for this type of workload? Hundreds of tiny random files?

Thanks again,

  • Community Expert
16 minutes ago, mortist said:

Is BTRFS suitable for this type of workload? Hundreds of tiny random files?

IMHO no less suitable than other file systems, but plenty of small files will always be slow. You can do a test with ZFS striped mirrors; if you set a large enough ARC that can keep most of the metadata there, it may be noticeably faster.

  • Author
31 minutes ago, JorgeB said:

IMHO no less suitable than other file systems, but plenty of small files will always be slow. You can do a test with ZFS striped mirrors; if you set a large enough ARC that can keep most of the metadata there, it may be noticeably faster.

Alright so my current pool is eight disks, only 30% utilized.
What's the safest, non-destructive, way to shrink the pool?

I was reading the wiki, and it seems like using the "btrfs device remove" might be the fastest?
But I got hung up on the wiki where it says remove all assigned devices and boot the pool, and then boot the pool a second time to reassign all devices?

Is there a safer way?

  • Author
21 hours ago, JorgeB said:

If the pool is using btrfs raid10, you can remove 4 devices while keeping the data, one at a time, assuming the data fits on the remaining 4.

https://forums.unraid.net/topic/46802-faq-for-unraid-v6/#findComment-480418


So I stopped the array and unassigned Disk #8 and restarted the array, but the array did not immediately go into Balance/Delete mode and the "Stop" button is still active.

Thoughts? Start a Balance operation?

image.png
image.png
image.png

  • Community Expert

Sorry, that was my bad, I forgot the GUI can only decrease pool count for raid1, you can do it using the CLI, first:

btrfs device remove missing /mnt/cache

you can then remove the other devices you want one by one

btrfs device remove /dev/sdf1 /mnt/cache

btrfs device remove /dev/sdh1 /mnt/cache

btrfs device remove /dev/sdg1 /mnt/cache

Each removal will take some time while that data is balanced. When you get the cursor back, that one is done. Once all four devices are removed, you will need to reimport the pool with the 4 remaining devices:

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 4 slots

assign the 4 remaining pool devices, leave the filesystem set to auto

start the array to import the pool

  • Author
2 hours ago, JorgeB said:

Sorry, that was my bad, I forgot the GUI can only decrease pool count for raid1, you can do it using the CLI, first:

btrfs device remove missing /mnt/cache

you can then remove the other devices you want one by one

btrfs device remove /dev/sdf1 /mnt/cache

btrfs device remove /dev/sdh1 /mnt/cache

btrfs device remove /dev/sdg1 /mnt/cache

Each removal will take some time while that data is balanced. When you get the cursor back, that one is done. Once all four devices are removed, you will need to reimport the pool with the 4 remaining devices:

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 4 slots

assign the 4 remaining pool devices, leave the filesystem set to auto

start the array to import the pool

Thanks - Currently starting the removal process.

Regarding the future "new" pool- Does "remove pool" destroy any data on the remaining 4 devices?
Is this a similar process to "new config" ?

Thanks - Learning as I go here.

  • Community Expert
12 hours ago, mortist said:

Does "remove pool" destroy any data on the remaining 4 devices?

Nope, it just removes the pool config, only "erase" will destroy the data.

  • Author
On 12/31/2025 at 1:39 AM, JorgeB said:

Nope, it just removes the pool config, only "erase" will destroy the data.


Hm - I tried it and I'm now at "Unmountable: unsupported or no file system"

image.png

  • Author
1 hour ago, mortist said:


Hm - I tried it and I'm now at "Unmountable: unsupported or no file system"

image.png

On 12/31/2025 at 1:39 AM, JorgeB said:

Nope, it just removes the pool config, only "erase" will destroy the data.


Alright I think I resolved this error after a little research.
I feel like I might have been able to complete this process without "Remove Pool", but I'm not sure.

Anyway- Upon shrinking the original BTRFS cache pool and removing the four drives, I also created a new ZFS pool at the same time.
I guess using "Remove Pool" wipes the UUID from the unraid config, but since I created a new 'cache_zfs' pool- restarting the array triggered some emhttpd bug with multi-pool setups and unRAID was unable to read the original UUID on the BTRFS pool??

I have no clue, but here's the fix:

Removed the second ZFS pool that I had created.

Run New Config, retain assignments for array & cache pool.

REBOOT

Start the array, which also triggers a parity sync.

Doing this, with only one cache pool- I'm back to normal with a single BTRFS pool and four drives.
I'll create the ZFS pool separately now.

  • Community Expert
  • Solution
12 hours ago, mortist said:

but since I created a new 'cache_zfs' pool- restarting the array triggered some emhttpd bug with multi-pool setups and unRAID was unable to read the original UUID on the BTRFS pool??

Would need to see the diags, but it's more likely that btrfs was still detecting part of a signature in some of the old devices, confusing it.

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.