Please refer to the 6.12.0-rc1 topic for a general overview.
Anticipating stable release in a couple of days.
Version 6.12.0-rc5 2023-05-01
- Auto-mount all nested ZFS datasets upon array Start.
- Fix bug in bind-mount when share names contain spaces.
- Restrict avahidaemon to primary interface.
- Restrict 'newperms' script to operate on /mnt/ only.
- Fixed typos in help text.
Fixes bug in bind-mount when share names contain spaces.
- version: 6.1.27
Version 6.12.0-rc4 2023-04-27
New in this release is a conceptual change in the way storage is assigned to shares. Normally such a change would not happen in an -rc series; however, in this case the under-the-hood coding was minimal. The concept outlined below is something we planned on introducing in the Unraid OS 6.13 cycle. We decided to introduce this change now because of increased interest in Unraid OS now that ZFS is supported.
The old concept of main storage being the unRAID array with an optional "Cache" is confusing to many new users, especially since cache has a specific meaning in ZFS.
Also outlined below, we introduced the concept of an exclusive share. This is simply a share where all the data exists in a single named pool. In this case we set up a bind-mount, bypassing the FUSE-based User Share file system. This feature is primarily aimed at maximizing I/O for large fast ZFS pools accessed via a fast network
Share storage conceptual change
Configuring the storage options for a share is specified using two inputs:
- Primary storage
- Secondary storage
Primary storage is where new files/folders are created. If Primary storage is below the Minimum Free Space setting then new files and folders will be created in Secondary storage, if configured.
Each input presents a drop-down which lists "array", "none", and each named pool as a selection according to some configuration rules:
For the Primary storage drop-down:
- the "none" option is omitted, ie, Primary storage must be selected
- any named pool can be selected
- "Array" can be selected (meaning the unRAID array)
For the Secondary storage drop-down:
- the "none" option is included, ie, Secondary storage is optional
- if Primary storage is a pool name, then the only options are "none" and "Array"
- if Primary storage is "Array", then only "none" appears as an option
When "Array" is selected for either Primary or Secondary storage, a set of additional settings slide in:
- Allocation method
- Included disk(s)
- Excluded disk(s)
- Split level
When a btrfs named pool is selected for either Primary or Secondary storage, an additional setting slides in:
- Enable Copy-on-write
When a ZFS named pool is selected for either Primary or Secondary storage, there are no additional settings at this time but there could be some in the future. For example, since a share is created as a ZFS dataset, it could have a different compression setting than the parent pool if we need to implement this.
When there is Secondary storage configured for a share the "Mover action" setting becomes enabled, letting the user select the transfer direction of the mover:
- Primary to Secondary (default)
- Secondary to Primary
If Primary storage for a share is a pool and Secondary storage is set to "none", then we can set up a bind-mount in /mnt/user/ directly to the pool share directory. (An additional check is made to ensure the share also does not exist on any other volumes.) There is a new status flag, 'Exclusive access' which is set to 'Yes' when a bind-mount is in place; and, 'No' otherwise. Exclusive shares are also indicated on the Shares page.
The advantage of setting up a bind-mount is that I/O bypasses FUSE-based user share file system (shfs) which can significantly increase performance.
There are some restrictions:
- Both the share Min Free Space and pool Min Free Space settings are ignored when creating new files on an exclusive share.
- If there are any open files, mounted loopback images, or attached VM vdisk images on an exclusive share, no settings for the share can be changed.
- If the share directory is manually created on another volume, files are not visible in the share until after array restart, upon which the share is no longer exclusive.
Change Log vs. 6.12.0-rc3
- version: 6.1.26
- avahi: enable/disable IPv4/IPv6 based on network settings
- webgui: DeviceInfo: show shareFloor with units
- webgui: DeviceInfo: added automatic floor calculation
- webgui: Added autosize message
- webgui: Shares: added info icon
- webgui: Updated DeviceInfo and Shares page [explain]
- webgui: Fix network display aberration.
- webgui: Auto fill-in minimum free space for new shares
- webgui: feat(upc): update to v3 for connect
- webgui: Share/Pool size calculation: show and allow percentage values
- webgui: VM manager: Make remote viewer and web console options selectable.
- webgui: VM manager: Option to download .vv file and start remote viewer is browser set to open file .vv when downloaded.
- webgui: VM manager: Add remote viewer console support
- webgui: VM manager: Remove-lock-posix='on'-flock='on'/-
- openzfs: version 2.1.11
Version 6.12.0-rc3 2023-04-14
If you created any zpools using 6.12.0-beta5 please Erase those pools and recreate.
If you revert back from 6.12 to 6.11.5 or earlier, you have to force update all your Docker containers and start them manually after downgrading. This is necessary because of the underlying change to cgroup v2 in 6.12.0-rc1.
Upon boot, if all PCI devices specified in 'config/vfio-pci.cfg' file do not properly bind, VM Autostart is prevented. You may still start individual VMs. This is to prevent Unraid host crash if hardware PCI IDs changed because of a kernel update or physical hardware change. To restore VM autostart, examine '/var/log/vfio-pci-error' and remove offending PCI IDs from 'config/vfio-pci.cfg' file and reboot.
Linux Multi-Gen LRU is a relatively new feature now included but not enabled by default. You can enable by adding this line to your 'config/go' file:
echo y > /sys/kernel/mm/lru_gen/enabled
If you revert back from 6.12 to 6.11.5 or earlier you many need to remove that line.
There are a few plugins which are known to be incompatible with Unraid 6.12, and upon boot will not be installed. You will get a notification for each plugin that is affected, and can review the list by going to Plugins/Plugin File Install Errors.
- disklocation-master version 2022.06.18 (Disk Location by olehj, breaks the dashboard)
- plexstreams version 2022.08.31 (Plex Streams by dorgan, breaks the dashboard)
- corsairpsu version 2021.10.05 (Corsair PSU Statistics by Fma965, breaks the dashboard)
- gpustat version 2022.11.30a (GPU Statistics by b3rs3rk, breaks the dashboard)
- ipmi version 2021.01.08 (IPMI Tools by dmacias72, breaks the dashboard)
- nut version 2022.03.20 (NUT - Network UPS Tools by dmacias72, breaks the dashboard)
- NerdPack version 2021.08.11 (Nerd Tools by dmacias72)
- upnp-monitor version 2020.01.04c (UPnP Monitor by ljm42, not PHP 8 compatible)
- ZFS-companion version 2021.08.24 (ZFS-Companion Monitor by campusantu, breaks the dashboard)
Some of the affected plugins have been taken over by different developers, we recommend that you go to the Apps page and search for replacements. Please ask plugin-specific questions in the support thread for that plugin.
New in this release is the ability to create a ZFS file system in a user-defined pool. In addition you may format any data device in the unRAID array with a single-device ZFS file system.
We are splitting full ZFS implementation across two Unraid OS releases. Initial support in this release includes:
- Support raid0, mirror, raidz1, raidz2 and raidz3 root profiles. Up to 4-way mirror in a mirror vdev. Multiple vdev groups.
- Support removing single device: if device still present in server, 'wipefs' is used to clear the partition table.
- Support replacing single missing device with a new device of same or larger size.
- Support scheduled trimming of ZFS pools.
- Support pool rename.
- Pool names must begin with a lowercase letter and only contain lowercase letters, digits, the underscore and dash. Pool names must not end with a digit.
- Non-root vdev cannot be configured in this release, however, they can be imported. Note: imported hybrid pools may not be expanded in this release.
- Pools created on other systems may or may not import depending on how the the pool was created. A future update will permit importing pools from any system.
A ZFS pool has three variables:
- profile - the root data organization: raid0, mirror (up to 4-way), raidz1, raidz2, raidz3
- width - the number of devices per root vdev
- groups - the number of root vdevs in the pool
At time of ZFS pool creation, the webGUI will present all topology options based on the number of devices assigned to the pool.
Special treatment for root single-vdev mirrors:
- A single-device ZFS pool can be converted to multiple-device mirror by adding up to 3 additional devices in one operation.
- A 2-device mirror can be increased to 3-device by adding a single device; similarly a 3-device mirror can be increased to 4-device mirror by adding a single device.
To add an additional root vdev, you must assign 'width' number of new devices to the pool at the same time. The new vdev will be created with the same 'profile' as the existing vdevs. Additional flexibility in adding/expanding vdevs will be provided in a future update.
Pools created with the steini84 plugin can be imported as follows: First create a new pool with the number of slots corresponding to the number of devices in the pool to be imported. Next assign all the devices to the new pool. Upon array Start the pool should be recognized, though certain zpool topologies may not be recognized (please report).
Mixed topologies are not supported. For example, a pool with both a mirror root vdev and a raidz root vdev is not recognized.
Autotrim can be configured as on or off (except for single-device ZFS volumes in the unRAID array).
Compression can be configured as on or off, where on selects lz4. Future update will permit specifying other algorithms/levels.
When creating a new ZFS pool you may choose zfs - encrypted, which, like other encrypted volumes, applies device-level encryption via LUKS. ZFS native encryption is not supported at this time.
During system boot, the file /etc/modprobe.d/zfs.conf is auto-generated to limit the ZFS ARC to 1/8 of installed memory. This can be overridden if necessary by creating a custom 'config/modprobe.d/zfs.conf' file. Future update will include ability to configure the ARC via webGUI, including auto-adjust according to memory pressure, e.g., VM start/stop.
Top-level user shares in a ZFS pool are created as datasets instead of ordinary directories.
Autotrim can be configured as on or off when used in a pool.
Compression can be configured as on or off. on selects zstd. Future update to permit specifying other algorithms/levels.
Autotrim can be configured as on or off when used as a single-slot pool.
It is possible to configure the Docker data-root to be placed in a directory on a ZFS storage pool. In this case Docker will use the 'zfs' storage driver. This driver creates a separate dataset for each image layer. Because of this, here is our recommendation for setting up Docker using directory:
First, create a docker user share configured as follows:
- Share name: docker
- Use cache pool: Only
- Select cache pool: name of your ZFS pool
Next, on Docker settings page:
- Enable docker: Yes
- Docker data-root: directory
- Docker directory: /mnt/user/docker
If you ever need to delete the docker persistent state, then bring up the Docker settings page and set Enable docker to No and click Apply. After docker has shut down click the Delete directory checkbox and then click Delete. This will result in deleting not only the various files and directories, but also all layers stored as datasets.
Before enabling Docker again, be sure to first re-create the docker share as described above.
- CreateDocker: changed label Docker Hub URL to Registry URL because of GHCR and other new container registries becoming more and more popular.
- Honor user setting of stop time-out.
- Accept images in OCI format.
- Add option to disable readmore-js on container table
- Fix: Docker Containers console will not use bash if selected
If you enable copy/paste for virtual consoles you need to install additional software on the client in addition to the QEMU agent if that has been installed. Here is the location for spice-vdagent for both Windows and Linux. Note copy/paste function will not work with web spice viewer you need to use virt-viewer.
- Add Serial option to vdisk.
- Spice Bug fix for users with non standard GUI ports defined.
- OVMF for QEMU: version stable202302
- Fix for bus text.
- Enable copy paste option for virtual consoles
- Update Memory Backup processing for Virtiofs.
- Fix lockup when no VMs are present
- Add support for rtl8139 network model.
- fix translation omission
- added lock/unlock for sortable items
- Fix for Spice Mouse if Copy paste enabled.
The webGUI Dashboard has been redesigned and it is now possible to move elements (tiles) up and down and between columns. This allows the user to organize the tiles in any way they desire. There is a small lock icon on the menu bar which must be clicked to enable this function.
Note: The lock icon also appears on the Docker and VM pages and must be clicked to rearrange the startup order.
Release bz file differences
Unraid OS is comprised of a set of 5 so-called bz files in the root of the USB Flash boot device:
- bzimage - the Linux kernel
- bzroot - the root file system, sans console desktop
- bzroot-gui - additional files needed for console desktop
- bzmodules - modules (drivers) associated with the Linux kernel
- bzfirmware - device firmware required by certain modules
Starting with 6.12 release, the content of these files has been rearranged:
- bzimage - the Linux kernel (same as before)
- bzroot - the root file system excluding the /usr directory tree
- bzroot-gui - a single file which auto-starts the console desktop (for compatibility)
- bzmodules - modules (drivers) associated with the Linux kernel and device firmware required by certain modules
- bzfirmware - the /usr directory and all files contained therein, including console desktop
The results of this change is to speed up the boot process and free up nearly 1G of RAM. It also permits us to add more "stuff" to Unraid OS in the future without requiring more RAM. Finally, when booted in non-GUI mode, the desktop can be started by logging in at the console and typig the 'slim' command.
The files bzfirmware and bzmodules are squashfs images mounted using overlayfs at /usr and /lib respectively. Since these files are loopback-mounted, care must be taken if ever you want to perform a manual update.
What is a manual update? This is a method of updating Unraid OS on your USB flash boot device without using the Tools/Update OS function. Typically one would either:
- open a Terminal window, wget the release zip file, unzip the release, and then 'cp' the bz files to root of the boot device.
- export the 'flash' share on your network and drag the bz files from a PC directly to the flash.
Either method, starting with 6.12 can fail because the bzfirmware file will be overwritten while it is still mounted - not good.
To get around this, you must first create a temp directory on the flash device and then 'mv' (or drag) all the bz files to this temp directly. Now you can copy the new bz files in place and reboot.
- version 6.1.23
- md/unraid: version 2.9.27
- CONFIG_FS_DAX: File system based Direct Access (DAX) support
- CONFIG_VIRTIO_FS: Virtio Filesystem
- CONFIG_ZONE_DEVICE: Device memory (pmem, HMM, etc...) hotplug support
- CONFIG_USBIP_HOST: Host driver
- CONFIG_INTEL_MEI: Intel Management Engine Interface
- CONFIG_INTEL_MEI_ME: ME Enabled Intel Chipsets
- CONFIG_INTEL_MEI_GSC: Intel MEI GSC embedded device
- CONFIG_INTEL_MEI_PXP: Intel PXP services of ME Interface
- CONFIG_INTEL_MEI_HDCP: Intel HDCP2.2 services of ME Interface
- CONFIG_INTEL_PMC_CORE: Intel PMC Core driver
- CONFIG_DRM_I915_PXP: Enable Intel PXP support
- CONFIG_SCSI_FC_ATTRS: FiberChannel Transport Attributes
- CONFIG_FUSION_SPI: Fusion MPT ScsiHost drivers for SPI
- CONFIG_FUSION_FC: Fusion MPT ScsiHost drivers for FC
- CONFIG_FUSION_CTL: Fusion MPT misc device (ioctl) driver
- CONFIG_FUSION_LOGGING: Fusion MPT logging facility
- CONFIG_X86_AMD_PSTATE: AMD Processor P-State driver
- CONFIG_LRU_GEN: Multi-Gen LRU
- CONFIG_SERIAL_8250_NR_UARTS=32: Maximum number of 8250/16550 serial ports
- CONFIG_SERIAL_8250_RUNTIME_UARTS=4: Number of 8250/16550 serial ports to register at runtime
- cgroup2 now the default
- loopback images no longer mounted using directio
- upgradepkg patched to prevent replacing existing package with older version.
- current PCI bus/device information saved in file '/boot/previous/hardware' upon Unraid OS upgrade.
- NFS: enable UPD transport
- emhttp: fix cache pool (null) syslog strings
- emhttp: fix cache pool display wrong device size for selected replacement device
- networking: fix nginx recognizing IP address from slow dhcp servers
- mover: fix: improper handling of symlinks
- mover: fix: Mover logging syslog entries format different from previous releases
- plugin: Display Run command retval in error message
- shfs: igonore top-level hidden directoris (names beginning with '.')
- terminal: OpenTerminal: change termination signal (hard stop)
- upgrade Unraid OS: check for earlier upgrade without reboot
- VM Manager: let page load even when PCI devices appear missing or are misassigned
- wireguard: add SSL support for WG tunnel IP addresses (myunraid.net wildcard certs only)
- webgui: support PHP8, increase PHP max memory from 128M to 256M
- webgui: ManagementAccess: Disable Provision/Renew/Upgrade buttons when no IP on eth0
- webgui: ManagementAccess: Support wireguard local IP addresses in combination with myservers.unraid.net SSL cert
- webgui: Move "view" icon on Main and Shares page to the left
- webgui: Dashboard: fix regression error in "select case"
- webgui: Dashboard: make items moveable between columns
- webgui: Keep dismissed banners hidden for a month
- webgui: Dashboard: API for adding custom tiles
- webgui: Dashboard: rearrange processor information
- webgui: Dashboard: rearrange UPS info
- webgui: Dashboard: rearrange memory info
- webgui: Dashboard: VPN header rearrangement
- webgui: Dashboard: header rearrangements
- webgui: Add jqueryUI touch punch for mobile devices
- webgui: Changed ID to CLASS for elements occurring more than once
webgui: Make header in white and black themes scrollable
- When more items are present than screen space, the user can now scroll through them (previously these items were invisible)
webgui: Dashboard and Docker: introduce lock button for sortable items
- By default sortable items are locked, which allows mobile devices to scroll the page. Upon request items can be made sortable
- webgui: Users: add icon to title bar
webgui: Tools: new function -> PHP Settings
- View PHP info
- Configure error reporting
- Open LOG to see errors in real-time
- webgui: System info: fix reading inactive ports
- webgui: Plugin: Include the actual command, being executed
- webgui: System info: cache enhancement
- webgui: System info: memory enhancement
- webgui: DeviceInfo: disable buttons when erase operation is running
- webgui: Docker: filetree corrections
- webgui: Fixed: Dashboard: show heat alarm per pool
webgui: Notifications: revised operation
- Autoclose new notifications after 3 seconds
- Fix notifications reappearing after closure
- webgui: DeviceList: add FS type in offline state
- webgui: Add notification agent for Bark
- webgui: Main: hide browse icon when disk is not mounted
- webgui: Diagnostics: add additional btrfs and zfs info
- webgui: Dashboard: add ZFS memory usage
webgui: Revised New Permissions
- Select either disks or shares (not both)
- webgui: Add testparm to diagnostics
- webgui: Support new UD reserved mount point of /mnt/addons
- webgui: fix issue displaying Attributes when temperature display set to Fahrenheit
webgui: Dashboard changes:
- lock the Dashboard completely: Editing/moving only becomes possible when unlocking the page
- An empty column is refilled when the respective tiles are made visible again, no need to reset everything
- added a visual "move indicator" on the Docker and VM page, to make clearer that rows can be moved now.
- change cursor shape when moving is enabled
- use tile title as index
- webgui: fix: Local Firefox account pop-up postmessages not working
- webgui: VM Manager: fix VM marked as Autostart not starting following manual array Start
- webgui: SMART test cannot be run on a UD disk because there is no spin down delay selection
- webgui: status footer stuck on "Starting services" when applying share config setting chagnes.
- webgui: Fix table layout for orphan images
- webgui: Plugin: Do not show update button if incompatible
- webgui: OpenTerminal: limit clients
- webgui: Context menu: automatic triangle placement
- webgui: Dashboard: fix pool warnings
- webgui: Allow SMART long test for UD
- webgui: Read processor type from /proc/cpuinfo
- webgui: CSS: solve scrollbar issue in firefox
- webgui: plugin: Make wget percentage detection more robust
- webgui: Add share: fix hidden share name check
- webgui: Display settings: add missing defaults
- webgui: Array Operation: prevent double clicking of Start button
- wireguard: fix nginx issue when partial WireGuard config
- aaa_glibc-solibs: version 2.37
- adwaita-icon-theme: version 43
- at-spi2-core: version 2.46.0
- bash: version 5.2.015
- bind: version 9.18.12
- btrfs-progs: version 6.2.1
- ca-certificates: version 20221205
- cryptsetup: version 2.6.1
- curl: version 7.88.1
- dbus: version 1.14.6
- diffutils: version 3.9
- dnsmasq: version 2.89
- docker: version 20.10.23
- e2fsprogs: version 1.47.0
- encodings: version 1.0.7
- file: version 5.44
- firefox: version 111.0 (AppImage)
- freetype: version 2.13.0
- fuse3: version 3.12.0
- gawk: version 5.2.1
- git: version 2.39.2
- glib2: version 2.74.6
- glibc: version 2.37
- glibc-zoneinfo: version 2022g
- gnutls: version 3.7.9
- gptfdisk: version 1.0.9
- gtk+3: version 3.24.37
- harfbuzz: version 7.1.0
- htop: version 3.2.2
- iproute2: version 6.2.0
- iptables: version 1.8.9
- iputils: version 20221126
- less: version 612
- libICE: version 1.1.1
- libSM: version 1.2.4
- libX11: version 1.8.4
- libXau: version 1.0.11
- libXcomposite: version 0.4.6
- libXdamage: version 1.1.6
- libXdmcp: version 1.1.4
- libXpm: version 3.5.15
- libXrandr: version 1.5.3
- libXres: version 1.2.2
- libXxf86dga: version 1.1.6
- libarchive: version 3.6.2
- libdrm: version 2.4.115
- libfontenc: version 1.1.7
- libglvnd: version 1.6.0
- libjpeg-turbo: version 188.8.131.52
- libpcap: version 1.10.3
- libpng: version 1.6.39
- libpsl: version 0.21.2
- liburcu: version 0.14.0
- libwebp: version 1.3.0
- libxkbcommon: version 1.5.0
- libxkbfile: version 1.1.2
- libxshmfence: version 1.3.2
- lmdb: version 0.9.30
- logrotate: version 3.21.0
- lsof: version 4.98.0
- lz4: version 1.9.4
- lzlib: version 1.13
- mc: version 4.8.29
- mcelog: version 191
- mpfr: version 4.2.0
- nano: version 7.2
- ncurses: version 6.4
- nginx: version 1.23.3
- nghttp2: version 1.52.0
- openssh: version 9.2p1
- openssl: version 1.1.1t
- openssl-solibs: version 1.1.1t
- openzfs: version 2.1.9
- pango: version 1.50.14
- pciutils: version 3.9.0
- pcre2: version 10.42
- php: version 8.2.4
- php-libvirt: version 0.5.7
- php-markdown: version 2.0.0
- samba: version 4.17.7
- sqlite: version 3.41.0
- sudo: version 1.9.13p2
- sysstat: version 12.7.2
- tdb: version 1.4.8
- tevent: version 0.14.1
- traceroute: version 2.1.2
- transset: version 1.0.3
- tree: version 2.1.0
- usbutils: version 015
- xcb-util: version 0.4.1
- xdriinfo: version 1.0.7
- xf86-video-vesa: version 2.6.0
- xfsprogs: version 6.1.1
- xhost: version 1.0.9
- xinit: version 1.4.2
- xkbcomp: version 1.4.6
- xkeyboard-config: version 2.38
- xorg-server: version 21.1.7
- xprop: version 1.2.6
- xrandr: version 1.5.2
- xset: version 1.2.5
- xterm: version 379
- xz: version 5.4.1
- zstd: version 1.5.4