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.

Feature Request - 2 bad things

Featured Replies

Unraid 7.1.4: “Stop Array” still tears down independent ZFS pools & libvirt; Parity check scans full parity disk instead of logical range

Version: Unraid 7.1.4

Setup summary:

·         Native ZFS / ZFS plugin enabled

·         standalone ZFS pool (e.g., ssd_pool) holds all VM assets (libvirt.img, vdisks, ISOs) under /mnt/disks/ssd_pool/...

·         Minimal/auxiliary Unraid array present

·         Parity device: 16 TB; largest data disk: 8 TB (others ≤8 TB)

 

1. Lack of true separation: stopping the array also tears down independent ZFS pools and libvirt/VMs

Expected.

In a multi-pool world, a ZFS pool that is entirely independent of the Unraid array should remain imported/mounted when the array is stopped or reconfigured. VM services that live only on that pool should be able to continue running (or at least remain intact) while array maintenance happens.

Actual (7.1.4)

Clicking Stop on the array:

·         exports/unmounts all ZFS pools (including those unrelated to the array),

·         unmounts /etc/libvirt (because libvirt.img is on ZFS and gets unmounted),

·         kills libvirt and any running VMs.

Typical log symptoms:

rc.libvirt: Starting virtlock daemon...

error : main:906 : Can't load config file: Failed to open file '/etc/libvirt/virtlockd.conf'

rc.libvirt: Starting libvirt daemon...

rc.libvirt: libvirt daemon... No image mounted at /etc/libvirt

 

It forces full downtime for services that are deliberately off-array.

 

Repro (minimal)

Create/import a ZFS pool ssd_pool.

  • Place libvirt.img, vdisks, ISOs on ssd_pool (e.g., /mnt/disks/ssd_pool/...).

  • Mount libvirt.img to /etc/libvirt and start libvirt/VMs via virsh.

  • In the GUI, click Stop on the array.

  • Result: ZFS is exported, /etc/libvirt disappears, libvirt/VMs die.

 

Manual workarounds (they exist, but…)

Early import/mount of ZFS via /boot/config/go:

modprobe zfs

zpool import -N -a

zfs mount -a

 

Manually mounting libvirt.img and starting libvirt via custom scripts:

mount -t btrfs -o loop .../libvirt.img /etc/libvirt

/etc/rc.d/rc.libvirt start

Disabling VM Manager and running everything via virsh.

Hooking or bypassing plugin stop/export behavior.

 

However: these are unsupported hacks, fragile across updates, and leave the GUI inconsistent with system state. They also miss the point: users shouldn’t have to defeat core lifecycle logic to keep an independent pool online.

 

Request

  1. Per-pool lifecycle controls in the GUI (import/export/mount per pool, independent of array start/stop).

  2. ZFS option: “Do not export this pool when array is stopped” (mark a pool as independent/protected).

  3. VM Manager option: allow libvirt/VMs to run when array is stopped if all assets are off-array.

  4. Stop/Start dialog that enumerates subsystems (Array, each Pool, Docker, libvirt) with checkboxes so users can exclude independent pools/services from a global stop.

2. Parity check scans the full parity device instead of the effective logical range

Context

  • Parity disk: 16 TB

  • Largest data disk: 8 TB

  • LBAs beyond 8 TB on the parity disk cannot be influenced by any data disk; parity there is effectively parity of zeroes.

Expected

A logical parity check should, by default, scan only up to the highest LBA used by any data disk (here: 8 TB). That verifies actual array parity without wasting time on the unused tail of the parity device.

Actual (7.1.4)

Parity check reads the entire 16 TB parity drive, including the unused 8–16 TB tail. This adds hours of read I/O, wear, heat, and power draw, without improving parity correctness for the array’s effective range.

 

Request

  1. Provide two explicit modes in the parity check UI:

  2. Logical parity check (recommended): scan only up to largest data disk size.

  3. Full device surface read: optional, for users who want a long hardware read test of the parity drive.

  4. Make the logical mode the default when data disks are smaller than parity.

 

THX

FC

 

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.