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.

[7.0.0] ZFS pools missing l2arc devices

Featured Replies

I upgraded to 7.0.0 from 6.12.15.

 

hddmain and ssdmain are zfs pools created before 6.12, but were successfully auto imported to 6.12. They probably did not have l2arc devices before 6.12.

 

Prior to the upgrade, I manually added l2arc devices to the pools hddmain and ssdmain with a command like

zpool add hddmain cache nvme-INTEL<drive identifier>

Then set various parameters to more aggressively offload arc into l2arc and only storing metadata.

 

hddmain and ssdmain each used a single dedicated drive for l2arc (2 drives total).

 

Upon upgrading to 7.0.0, I saw all pools/arrays showing up, but when I looked at zfs pool status and zfs pool information, I noticed that the l2arcs were missing from both pools. Using the command line to show pool information showed the same information.

 

I have the plugins Unassigned Devices and Unassigned Devices Plus installed, so I was hoping that it can list to me which drives were the l2arcs of which pool, but the pool name partition is missing in that view and I briefly tried some other command lines to try listing partitions with no success. I marked the devices as passthrough with Unassigned Devices, if that is relevant to my issue. I didn't record which drive was the l2arc for which device, since I expected the pool imports to have succeeded as always.

 

 

I don't think I restarted the server since the upgrade, but I have stopped and started the arrays multiple times to add l2arc devices again, remove the array drives, and created another zfs pool mach2test which uses other unused drives never touched by hddmain and ssdmain.

 

Other manual/non-UI related changes I have done to zfs before was tuning various parameters using zfs set, and adding zfs.conf file to modify the following options:

options zfs zfs_arc_max=62277025792
options zfs l2arc_headroom=0
options zfs l2arc_noprefetch=0

 

 

If there is no other information to grab from the server before a restart, I will be planning on a hardware swap on the server sometime tomorrow to Saturday.

 

alagaesia-diagnostics-20250212-2358.zip

Solved by JorgeB

  • Community Expert
54 minutes ago, Percutio said:

Prior to the upgrade, I manually added l2arc devices to the pools hddmain and ssdmain with a command like

Do you mean prior to upgrading to v7? An if yes, did you reimport the pools in v6.12 so that all devices were assigned to the pool in the WebGUI?

  • Author
32 minutes ago, JorgeB said:

Do you mean prior to upgrading to v7? An if yes, did you reimport the pools in v6.12 so that all devices were assigned to the pool in the WebGUI?

l2arc devices were added sometime within v6.12. I did not add the l2arc devices in the WebGUI, so only the data disks were assigned to the pool in WebGUI. This worked fine for me up until now since I wasn't sure what would happen if I added devices that were not from normal data vdevs into the WebGUI.

  • Community Expert
  • Solution
2 hours ago, Percutio said:

I did not add the l2arc devices in the WebGUI, so only the data disks were assigned to the pool in WebGUI.

That's not supported, the pool should have been reimported with all the devices.

 

Is the pool now working correctly with v7 or do you still need help? You have multiple pools running, so need more detail if you do.

 

 

  • Author
14 minutes ago, JorgeB said:

That's not supported, the pool should have been reimported with all the devices.

 

Is the pool now working correctly with v7 or do you still need help? You have multiple pools running, so need more detail if you do.

 

 

All pools are working for me. Only the l2arc devices were removed, but I added them back as cache subpools and slowly warming them back up.

 

I guess one learning that I had is to be more careful with using unsupported zfs features. 6.12 didn't support subpools so I assumed that meant 6.12 WebGUI only supported adding data vdevs and nothing else. In my case, I also got lucky with the special vdevs, since I wasn't planning on making any pools with special vdevs until Unraid officially supported subpools.

  • Community Expert
18 minutes ago, Percutio said:

6.12 didn't support subpools so I assumed that meant 6.12 WebGUI only supported adding data vdevs and nothing else.

6.12 doesn't let you use the GUI to add any subpools, but if you add them manually, you can (and should) then re-import the pool and it would import them all.

 

Taking a more careful look at your diags, I do see that the l2arc devices were removed from both pools, that happened because they were unassigned, but it's still news to me, didn't think that could happen:


 

Feb  9 00:46:31 Alagaesia emhttpd: shcmd (69): /usr/sbin/zpool remove hddmain /dev/disk/by-id/nvme-INTEL_SSDPEK1A118GA_PHOC310500K0118B-part1

Feb  9 00:46:33 Alagaesia emhttpd: shcmd (76): /usr/sbin/zpool remove ssdmain /dev/disk/by-id/nvme-INTEL_SSDPEK1A118GA_BTOC14120WKD118B-part1

 

On the positive side, they were both removed cleanly, not wiped, and I assume if was a special vdev from a raidz for example, that would not happen since it cannot be cleanly removed, it would just fail to mount the pool, but will test to make sure.

 

 

  • Community Expert
2 hours ago, JorgeB said:

but will test to make sure.

Yep, an unassigned cache vdev is removed when first starting v7, a special vdev is left intact and the pool doesn't mount, user then just needs to reimport the pool with all the devices.

 

 

  • 2 months later...
On 2/13/2025 at 4:10 PM, JorgeB said:

Yep, an unassigned cache vdev is removed when first starting v7, a special vdev is left intact and the pool doesn't mount, user then just needs to reimport the pool with all the devices.

 

 

Is this still the case? Do I have to manually import my pool with L2ARC on every boot?

 

I am using 7.1.1

 

@JorgeB

Edited by L0rdRaiden

  • Community Expert
2 hours ago, L0rdRaiden said:

Do I have to manually import my pool with L2ARC on every boot?

You just have to import the pool with all the devices once, if you need more help, please post the diagnostics and the output from

zpool import

 

1 hour ago, JorgeB said:

You just have to import the pool with all the devices once, if you need more help, please post the diagnostics and the output from

zpool import

 

every time a reboot I have to do "zpool import data"

services pool works fine.

 

Diagnostics attached

 

It works fine after zpool import data

 

imagen.thumb.png.18b2c8b650296c10fd1e3a56d97ab097.png

 

But UI doesn't recognize it properly and is not able to import it properly after reboot.

 

 

imagen.thumb.png.7495e000ba2ad06d80cf9653579c6d3b.png

 

 

imagen.thumb.png.a166f73edc1c5853fd87a2f18b40b13c.png

unraid-diagnostics-20250510-1416.zip

Edited by L0rdRaiden

  • Community Expert

Like mentioned in this thread, all devices form a pool must be assigned to that pool, including any subpool, make sure the pool is exported with

zpool export data

Then click the pool device and then "remove pool"

back on main, create a new pool with the same name and 2 slots
assign both pool device to the pool, don't create subpools, leave the filesystem set to auto
start the array to import the pool

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.