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.

[PLUGIN] Disk Viewer

Featured Replies

@Lazaros Chalkidis The unassigned drive is now working, thank you! I also really appreciate the font size changer. This plug-in is very, very nice!

@Lazaros Chalkidis The widget is showing all disks defined in /var/local/emhttp/disks.ini. My disks.ini has 24 disks defined while my array only has 8 disks in it. All of the "empty" entries in the disks.ini file have status="DISK_NP". Would it be possible for you to have a toggle to automatically filter status="DISK_NP" entries in the disks.ini file?

Here's an example entry:

["disk8"]
idx="8"
name="disk8"
device=""
id=""
size="0"
sectors="0"
sector_size="0"
transport=""
rotational=""
discard=""
removable=""
spundown="0"
status="DISK_NP"
format="-"
temp="*"
numReads="0"
numWrites="0"
numErrors="0"
type="Data"
color="grey-off"
spindownDelay="-1"
spinupGroup=""
idSb=""
sizeSb="0"
deviceSb=""
luksState="0"
fsType="auto"
fsStatus="-"
autotrim=""
compression=""
warning=""
critical=""
exportable="no"
comment=""
fsColor="grey-off"
fsEmpty="no"
fsSize="0"
fsFree="0"
fsUsed="0"
  • Author

Hi @mrvnsk9 you're right, those empty array slots (no disk assigned, size 0, DISK_NP) shouldn't be showing at all.

I already hide empty parity slots and just missed the data ones, so the next update will filter them out automatically, no toggle needed.

  • Author

v2026.06.16 is out

Fixed

A pool scrub scheduled in Unraid is now detected, so the Tool page shows the next scrub time instead of always reading "no schedule". This covers both ZFS and BTRFS pool scrubs.

Empty array slots are no longer shown as phantom rows. Unraid keeps a placeholder entry for every configured array position and the unused ones were appearing as blank rows. A disk that is assigned but currently missing still appears, since that is a real warning worth seeing.

A configured array or pool disk whose drive is missing (disconnected or removed) is now shown as "NOT INSTALLED or MISSING": the name is dimmed with a label beside it, spaced clearly from the name, and every column is blank instead of an empty 0 percent row, and its spin control shows no tooltip since there is no drive to spin. This covers missing parity, data and pool disks, and can be turned off separately for the widget and the Tool page under Settings, Display.

New Features

The Unraid boot (flash) drive is now shown as its own Boot Device section after the unassigned devices, on both the widget and the Tool page. It cannot be spun up or down from the bolt, and a new Boot device Display setting (separate for each, on by default) controls whether it appears.

Hovering a disk name now shows a tooltip with the drive's identification (model, serial and device node), like the Main page Identification column. It works on both the widget and the Tool page, for array, pool and unassigned disks, and can be turned on or off separately for each under Settings, Display.

NVMe drives now show their wear level, the percentage of rated life used, next to the health icon in the Tool page Health column, coloured green, amber or red as it rises. Drives that do not report it stay blank.

Improvements

The Reallocated, Pending and CRC columns on the Tool page are now colour-coded green, amber or red, so a healthy zero stands out from a count worth watching.

The Age column now shows the drive's age in years next to its total power-on hours, on a single line.

Pool and array totals rows are cleaner: columns that apply only to a single disk are left blank instead of showing "n/a", and pool-level values such as scrub and fragmentation show once on the summary row instead of on every member.

On the Tool page, array disks and multi-disk pool members now carry the same subtle row highlight as on the widget, making them easy to tell apart from the totals row.

The spin tooltip on the bolt now starts at the bolt and extends to the right, on both the widget and the Tool page, instead of being centred over the bolt.

The header icon's tooltip is now sized to its contents with aligned columns, and grows as needed so a disk's error count is never cut off.

* Full compatibility with Unraid Themes (Black - White - Azure - Gray)

Hello, it seems that its for now not working 100% correct with internal boot - or at least for me.

It shows show FLASH2 of my internal boot pool.

image.png
image.png
image.png

  • Author

Hi @izzymoren0, I see what the problem is. I hadn't accounted for 7.3 letting you boot the OS from internal disks.

I'll fix the issue you ran into in the next release.

Thanks for the report!

  • Author

v2026.06.19 is out

Fixed

The settings gear has been removed from the summary rows (Array, Cache, Pool and Boot). Those rows are totals, not a single disk, so the gear only opened a blank settings page. The gear stays on the real disk rows.

New Features

NVMe drives now show their power draw in watts next to the temperature, on both the widget and the Tool page, the same as Unraid's own display. It follows Unraid's "Enable NVME power monitoring" setting under Settings, Disk Settings, and drives that report no draw stay blank.

The Boot Device section now also covers a dedicated internal boot pool, whether a single drive or a RAID pool, not just the USB flash drive. The Boot device Display setting still controls whether it appears, separately for the widget and the Tool page.

Improvements

On the widget, the disk columns now match the Tool page: cells that do not apply to a row stay blank instead of showing a dash (for example free and used space on parity and pool member rows), and a disk with no activity reads "idle" or "sleep" in the Speed and Temperature columns instead of a dash.

The Used column title on the widget is now centred over its column, like the Tool page.

Hovering a disk name, or the temperature, error and health icons, no longer shows a question-mark cursor, and the divider line inside those tooltips has been removed.

Note: Since I don't have a way to reproduce this setup with a boot OS on an internal drive, or with internal drives configured as RAID, I based these changes on the way the official plugin implements the same functionality. If you notice any issues, please report them and I'll take a look.

Do you think you could add a disk activity percentage like this plugin did? Or add a way to use the other plugin's data?

  • Author
On 6/20/2026 at 5:40 AM, Thorman said:

Do you think you could add a disk activity percentage like this plugin did? Or add a way to use the other plugin's data?

I'll add it in the next release as a show/hide option in the settings (off by default), so you can turn it on if you find it useful.

image.png

Hello,

I think this still doesn't look quite right. I would have expected it to look similar to the cache implementation. It would be also cool if it shows the file system like on cache, in my case its an zfs boot pool.

Maybe also a nice thing to have is if we are able to hide some of the devices, especially for the unassigned part.

image.png

as example, to hide here the MASSSTORAGECLASS.

Edited by izzymoren0

  • Author

Hi, @izzymoren0, could you post your disks.ini so I can see exactly how 7.3 lists your internal boot pool?

You'll find it at /var/local/emhttp/disks.ini (open a terminal and run cat /var/local/emhttp/disks.ini, or grab it with the file manager).

That is the file Disk Viewer reads, so it will show me why the boot pool is being split into a separate POOL row and a 1 MB boot entry.

Feel free to strip any serial numbers before posting.

["parity"]
idx="0"
name="parity"
device="sdd"
id="TOSHIBA_MG10ACA20TE"
size="19531825100"
sectors="39063650304"
sector_size="512"
transport="ata"
rotational="1"
discard="0"
removable="0"
spundown="0"
status="DISK_OK"
format="GPT: 4KiB-aligned"
temp="30"
numReads="1605"
numWrites="2147"
numErrors="0"
type="Parity"
color="green-on"
spindownDelay="-1"
spinupGroup=""
idSb="TOSHIBA_MG10ACA20TE"
sizeSb="19531825100"

["disk1"]
idx="1"
name="disk1"
device="sde"
id="TOSHIBA_MG09ACA18TE"
size="17578327020"
sectors="35156656128"
sector_size="512"
transport="ata"
rotational="1"
discard="0"
removable="0"
spundown="0"
status="DISK_OK"
format="GPT: 1MiB-aligned"
temp="29"
numReads="73814"
numWrites="546"
numErrors="0"
type="Data"
color="green-on"
spindownDelay="-1"
spinupGroup=""
idSb="TOSHIBA_MG09ACA18TE"
sizeSb="17578327020"
deviceSb="md1p1"
luksState="0"
fsType="xfs"
fsStatus="Mounted"
fsMountpoint="/mnt/disk1"
autotrim="off"
compression="off"
comment=""
fsProfile=""
fsWidth="1"
fsGroups="1"
state="7"
slots="1"
devices="1"
devicesSb="1"
fsColor="green-on"
fsEmpty="no"
fsSize="17576240108"
fsFree="8843980924"
fsUsed="8732259184"

["disk2"]
idx="2"
name="disk2"
device="sdf"
id="TOSHIBA_MG09ACA18TE"
size="17578327020"
sectors="35156656128"
sector_size="512"
transport="ata"
rotational="1"
discard="0"
removable="0"
spundown="0"
status="DISK_OK"
format="GPT: 1MiB-aligned"
temp="30"
numReads="70111"
numWrites="555"
numErrors="0"
type="Data"
color="green-on"
spindownDelay="-1"
spinupGroup=""
idSb="TOSHIBA_MG09ACA18TE"
sizeSb="17578327020"
deviceSb="md2p1"
luksState="0"
fsType="xfs"
fsStatus="Mounted"
fsMountpoint="/mnt/disk2"
autotrim="off"
compression="off"
comment=""
fsProfile=""
fsWidth="1"
fsGroups="1"
state="7"
slots="1"
devices="1"
devicesSb="1"
fsColor="green-on"
fsEmpty="no"
fsSize="17576240108"
fsFree="10183193516"
fsUsed="7393046592"

["disk3"]
idx="3"
name="disk3"
device="sdg"
id="WDC_WD30EFRX-68AX9N0"
size="2930265540"
sectors="5860533168"
sector_size="512"
transport="ata"
rotational="1"
discard="0"
removable="0"
spundown="0"
status="DISK_OK"
format="GPT: 1MiB-aligned"
temp="32"
numReads="947"
numWrites="523"
numErrors="0"
type="Data"
color="green-on"
spindownDelay="-1"
spinupGroup=""
idSb="WDC_WD30EFRX-68AX9N0"
sizeSb="2930265540"
deviceSb="md3p1"
luksState="0"
fsType="xfs"
fsStatus="Mounted"
fsMountpoint="/mnt/disk3"
autotrim="off"
compression="off"
comment=""
fsProfile=""
fsWidth="1"
fsGroups="1"
state="7"
slots="1"
devices="1"
devicesSb="1"
fsColor="green-on"
fsEmpty="yes"
fsSize="2928834748"
fsFree="2872721952"
fsUsed="56112796"

["disk4"]
idx="4"
name="disk4"
device="sdh"
id="WDC_WD30EFRX-68AX9N0"
size="2930265540"
sectors="5860533168"
sector_size="512"
transport="ata"
rotational="1"
discard="0"
removable="0"
spundown="0"
status="DISK_OK"
format="GPT: 1MiB-aligned"
temp="31"
numReads="947"
numWrites="523"
numErrors="0"
type="Data"
color="green-on"
spindownDelay="-1"
spinupGroup=""
idSb="WDC_WD30EFRX-68AX9N0"
sizeSb="2930265540"
deviceSb="md4p1"
luksState="0"
fsType="xfs"
fsStatus="Mounted"
fsMountpoint="/mnt/disk4"
autotrim="off"
compression="off"
comment=""
fsProfile=""
fsWidth="1"
fsGroups="1"
state="7"
slots="1"
devices="1"
devicesSb="1"
fsColor="green-on"
fsEmpty="yes"
fsSize="2928834748"
fsFree="2872721952"
fsUsed="56112796"

["parity2"]
idx="29"
name="parity2"
device=""
id=""
size="0"
sectors="0"
sector_size="0"
transport=""
rotational=""
discard=""
removable=""
spundown="0"
status="DISK_NP_DSBL"
format="-"
temp="*"
numReads="0"
numWrites="0"
numErrors="0"
type="Parity"
color="grey-off"
idSb=""

["boot"]
idx="30"
name="boot"
device="nvme2n1"
id="INTEL_MEMPEK1J016GAL"
size="1004"
sectors="28131328"
sector_size="512"
transport="nvme"
rotational="0"
discard="1"
removable="0"
spundown="0"
status="DISK_OK"
format="GPT: 1MiB-aligned (bootable)"
temp="31"
numReads="94"
numWrites="0"
numErrors="0"
type="Cache"
color="green-on"
deviceSb="nvme2n1p4"

["boot2"]
idx="31"
name="boot2"
device="nvme1n1"
id="INTEL_MEMPEK1J016GAD"
size="1004"
sectors="28131328"
sector_size="512"
transport="nvme"
rotational="0"
discard="1"
removable="0"
spundown="0"
status="DISK_OK"
format="GPT: 1MiB-aligned (bootable)"
temp="33"
numReads="84"
numWrites="0"
numErrors="0"
type="Cache"
color="green-on"
deviceSb="nvme1n1p4"

["cache"]
idx="32"
name="cache"
device="nvme3n1"
id="Lexar_SSD_NM790_2TB"
size="2000397656"
sectors="4000797360"
sector_size="512"
transport="nvme"
rotational="0"
discard="1"
removable="0"
status="DISK_OK"
format="MBR: 1MiB-aligned"
temp="38"
numReads="165865"
numWrites="3633859"
numErrors="0"
type="Cache"
color="green-on"
deviceSb="nvme3n1p1"
fsType="btrfs"
fsStatus="Mounted"
fsMountpoint="/mnt/cache"
autotrim="on"
fsFree="1273180168"
fsUsed="726690904"

["cache2"]
idx="33"
name="cache2"
device="nvme0n1"
id="Lexar_SSD_NM790_2TB"
size="2000397656"
sectors="4000797360"
sector_size="512"
transport="nvme"
rotational="0"
discard="1"
removable="0"
status="DISK_OK"
format="MBR: 1MiB-aligned"
temp="34"
numReads="173511"
numWrites="3638807"
numErrors="0"
type="Cache"
color="green-on"
deviceSb="nvme0n1p1"

["flash"]
idx="34"
name="flash"
device="nvme2n1"
id="INTEL_MEMPEK1J016GAL"
size="14064640"
sectors="28131328"
sector_size="512"
transport="nvme"
rotational="0"
discard="1"
removable="0"
status="DISK_OK"
format="GPT: 1MiB-aligned (bootable)"
temp="31"
numReads="4757"
numWrites="18582"
numErrors="0"
type="Boot"
color="green-on"
fsType="zfs"
fsStatus="Mounted"
fsMountpoint="/boot"

["flash2"]
idx="35"
name="flash2"
device="nvme1n1"
id="INTEL_MEMPEK1J016GAD"
size="14064640"
sectors="28131328"
sector_size="512"
transport="nvme"
rotational="0"
discard="1"
removable="0"
status="DISK_OK"
format="GPT: 1MiB-aligned (bootable)"
temp="33"
numReads="5694"
numWrites="18524"
numErrors="0"
type="Boot"
color="green-on"
  • Author

v2026.06.24 is out

Fixed

The internal boot pool is now detected correctly on Unraid 7.3. On a server that boots from an internal pool instead of a USB stick, the pool now appears once under Boot Device with its real size, usage and member drives, and the tiny bootable partition Unraid keeps on those same drives is no longer shown as a separate 1 MB pool or listed twice.

The widget now keeps the height you set after a reboot or a fresh login, not only for the current browser session.

New Features

You can now hide individual unassigned devices and single-disk pools from the disk list, with a separate list for the widget and for the Tool page, so you can hide something on one without touching the other. Handy for clutter like built-in card readers that always read 0 B. Devices are matched by their stable id, so they stay hidden across reboots and reconnects, and your array, parity, pool members and boot device are never on the list. A Rescan button picks up anything you just plugged in.

Improvements

NVMe drives now show a chip icon and no longer have a spin control, since they don't spin down. SATA SSDs and hard drives keep the bolt.

The Tool page section headings now match the widget, showing the disk count and RAID profile next to the name.

On the Tool page, the Realloc, Pending and CRC headings turn amber or red when a disk in that column needs attention, the same as the Temp heading.

Unassigned devices now start hidden on a fresh install and after Reset to Defaults, like the Boot Device section. Settings you have already saved are not touched.

  • Author

v2026.06.26 is out

Fixed

Disk name labels could appear invisible on the white and azure themes, and on systems where the dashboard theme had never been explicitly chosen. The plugin now follows Unraid's active theme reliably and also confirms light or dark from the page itself, so the disk names always show.

On the gray theme the widget and Tool page now use Unraid's slate-blue surface colors for the sticky column header and the cache and pool row striping, instead of a flat neutral gray that clashed with the dashboard.

On the Tool settings page the header indicator options no longer unlock by mistake on a fresh install or right after a reboot, before the dashboard has been opened. The dashboard widget is treated as present until it is genuinely removed, so the options stay managed by the widget as intended.

New Features

The Tool page now shows how busy each disk is, not just how fast. The Speed column, renamed Speed r/w - i/o, shows each active disk's i/o as a percentage next to its read/write speed, with a bar. SSD and NVMe drives show it in blue, spinning drives go from green to amber to red as they get busier, at thresholds you can set. It reads the kernel's activity counters, so it never wakes a sleeping disk, and updates live with the speed. Idle and sleeping disks read idle or sleep. On by default; switch it off under the Tool tab.

On 6/26/2026 at 1:09 AM, Lazaros Chalkidis said:

New Features

The Tool page now shows how busy each disk is, not just how fast. The Speed column, renamed Speed r/w - i/o, shows each active disk's i/o as a percentage next to its read/write speed, with a bar. SSD and NVMe drives show it in blue, spinning drives go from green to amber to red as they get busier, at thresholds you can set. It reads the kernel's activity counters, so it never wakes a sleeping disk, and updates live with the speed. Idle and sleeping disks read idle or sleep. On by default; switch it off under the Tool tab.

Thank you so much for adding this. Could you please add this to the widget as well?

Edited by Thorman

  • Author
On 6/27/2026 at 11:07 PM, Thorman said:

Thank you so much for adding this. Could you please add this to the widget as well?

I tried adding the I/O info to the widget, but I'm running out of space. I might need to make the row a bit taller to fit everything in. I'll see what works best.

I'll add it in the next update.

image.png

looks good now here with the internal boot, thank you :)

  • 2 weeks later...
  • Author

v2026.07.08 is out

Fixed

On systems set to Fahrenheit, the Tool page showed the temperature in Celsius with an F after it, so a 38C disk read as 38F. It now converts correctly. The widget and header badge were already right.

The health dot in each section header of the widget was always red. It now shows amber for SMART warnings and red only for a real fault.

A pool whose scrub schedule you had turned off could still show a next scrub date on the Tool page. It now follows Unraid's current schedule, so a disabled pool shows no schedule.

Note: if Unraid left the old job behind in its own crontab, the scrub can still run until you rebuild cron or reboot.

On the Tool page, scrolling sideways to reach the far columns no longer jumps back to the start every time the page refreshes.

Cleared a harmless PHP warning from the log when spinning a disk up or down from the Tool page.

New Features

The dashboard widget can now show disk activity in the Speed column, like the Tool page does. Each busy disk shows its i/o as a percentage next to the read/write speed, with a small bar: blue for SSD and NVMe, green through amber to red for hard drives as they get busier. It reads the kernel's counters, so it never wakes a sleeping disk. Off by default, turn it on under the Widget tab in settings.

Two new columns on the Tool page. Link shows each drive's current interface speed against its maximum, so a SATA disk stuck at 1.5 Gb/s on a 6 Gb/s port, or an NVMe drive running below its PCIe speed, is easy to spot. That is often what sits behind CRC errors and corruption. Written shows total lifetime writes for drives that report it. Both use SMART data the plugin already collects, so there is no extra disk access.

Improvements

The Tool page now fits a 1920-wide screen without a sideways scrollbar. The Speed column was made narrower, and NVMe power draw now sits under the temperature on a small second line instead of beside it.

The Link column spells out the unit, for example S 6 Gb/s instead of a bare 6.0.

New icon for NVMe drives that reads better at small sizes.

  • Author

v2026.07.09 is out

Fixed

The browser now always loads the current version of the plugin's files after an update. They previously had no version tag, so a browser could keep serving old cached copies of the dashboard and Tool page code even after the plugin was updated, which made fixes look like they had not applied. A normal page reload after updating is now enough.

Spin up and down failed with a "bad csrf token" message on both the widget and the Tool page, on individual disks and the bulk buttons. Recent Unraid versions validate the security token themselves and then strip it from the request, both from the form body and from headers, before the plugin sees it, so the plugin's own check found nothing and refused. The token now also travels under a second field name that Unraid leaves untouched, satisfying both checks. The plugin additionally keeps the token fresh on every update and retries once automatically if it is ever rejected.

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.