Disk Monitor for ZimaOS

Disk Monitor for ZimaOS

I wanted to share a small project I’ve been working on for ZimaOS.

The original idea was actually very simple: I wanted to be able to see when my hard drives are active and when they have entered standby mode.

ZimaOS itself does not make this especially obvious, and I wanted a clearer overview without having to check everything manually from the terminal.

From that starting point, the project gradually grew into a more complete Disk Monitor dashboard.

It now shows, among other things:

  • Total number of disks and total storage capacity

  • Active and standby disks

  • Current disk temperature

  • Read and write activity

  • Mount points

  • Power-on hours

  • Power cycles

  • SMART status and warnings

  • Detailed SMART attributes

  • Model, serial number, firmware and protocol

  • Partitions and detected mount points

One important point for me was that the monitor itself should not constantly wake sleeping hard drives just to read SMART data.

For disks that are in standby, the dashboard therefore displays the last cached SMART values. A fresh SMART check can be triggered manually with Wake & read SMART when required.

The dashboard has also developed further on the UI side, with options for language, refresh interval, layout and disk sorting.

What started as a simple way to answer the question, “Is this disk actually sleeping?”, has therefore turned into a more general disk monitoring tool for my ZimaOS system.

My next goal is to package the project properly as a Docker application, so that other ZimaOS users can install and use it on their own systems as well.

I hope we can get that part working too and eventually make the Disk Monitor easy to deploy for anyone who finds this kind of overview useful.

This is still an ongoing project, so I’m interested in feedback, especially from people using several HDDs or USB drives with ZimaOS.

2 Likes

I like this, when can I try it out?

Thanks! I’m glad you like it.

At the moment it is still running as my own development setup, so I don’t want to release it too early before the installation is clean and reproducible.

The next step is to package it properly as a Docker app for ZimaOS. Once that is working reliably, I’d like to make it available for testing.

So hopefully soon — but I’d rather wait until the Docker setup is stable enough that testers don’t have to fix half the installation manually.

1 Like

Disk Monitor – Development Update

Today I spent most of the day continuing development of my Disk Monitor for ZimaOS.

A lot has changed since the previous version, so I wanted to share an intermediate status before continuing with the remaining testing.

What was added and improved today

  • New information menu next to the Disk Monitor logo

    • CPU usage of the Disk Monitor container

    • RAM usage

    • “Online since” date and time

    • The information panel is visually integrated into the top header instead of looking like a separate floating window.

  • Settings panel redesign

    • The settings panel is now visually merged with the top header.

    • The header contour continues naturally into the settings panel.

    • The settings icon was enlarged and centered.

    • A new 1 second refresh interval was added in addition to 2, 5, 10 and 30 seconds.

  • Improved drive status summary

    • SSDs, NVMe drives and flash storage that are currently IDLE are still counted as available/active drives in the main ACTIVE counter.

    • This prevents the ACTIVE counter from constantly jumping up and down whenever SSDs briefly change between ACTIVE and IDLE.

    • A separate IDLE summary box was added for SSD/NVMe/Flash devices, so their real-time idle state can still be seen independently.

  • Improved flash-storage detection

    • The monitor no longer relies only on Linux rotational=0/1.

    • This was necessary because my USB flash device actually reports ROTA=1, even though it is flash storage.

    • USB transport, removable status, model/vendor information and other sysfs information are now considered.

  • SMART support for flash storage

    • My Generic MassStorageClass flash device does expose limited SMART information through SCSI.

    • The monitor can now detect and use this automatically.

    • In my case it reports:

      • SMART capability available

      • SMART enabled

      • SMART Health Status: OK

    • Unsupported values such as a reported temperature of 0 °C are treated as unavailable instead of being displayed as a real temperature.

    • Devices with only partial SMART information are shown as having Limited SMART coverage.

  • Manual HDD standby

    • HDD details now contain a Standby now function.

    • The button is only available for HDDs.

    • SSDs, NVMe drives and flash devices do not receive this option.

    • RAID members are protected from being manually put into standby individually.

    • The monitor also checks for current I/O and detected process access before attempting standby.

  • USB HDD standby support

    • This turned into a very interesting test.

    • Normal SATA HDDs worked correctly with the existing standby method.

    • My WD USB HDDs required a different approach.

    • We confirmed manually that:

smartctl -s standby,now /dev/sde

successfully puts the USB HDD into standby.

A non-waking check afterwards returns:

Device is in STANDBY mode, exit(2)

However, the ZimaOS Local Storage API still reports:

{"standby":false}

for the same USB drive while it is physically in SMART-reported standby.

Because of this, the monitor now uses smartctl -n standby as the primary power-state source for USB HDDs, while direct SATA HDDs continue using the ZimaOS standby API.

This is visible in the current dashboard: the USB HDDs can now correctly show STANDBY even though the ZimaOS API still reports false.

  • RAID display mode

    • A new setting was added:

      • Separate – display the physical RAID members individually.

      • Combined – display the RAID as one logical drive card.

    • In combined mode the RAID card shows the RAID device, capacity, mount point, state and combined activity.

    • The details still show the individual member disks, including their temperatures and SMART status.

    • The logical RAID card does not offer an HDD standby button.

Current status

The dashboard is now showing the physical drives, RAID, SSD/NVMe/Flash idle state, HDD standby state, SMART health, temperatures, current disk access, ZimaOS standby timer and Disk Monitor resource usage in one interface.

One particularly useful result from today’s testing was discovering that ZimaOS’ standby API is reliable for my directly attached SATA HDDs, but not for the tested WD USB HDDs. The Disk Monitor can now compensate for that difference instead of simply trusting one source for every drive.

I am currently away from the machine, so I have not yet physically confirmed the USB drive LEDs/spin-down state after the latest changes. The SMART power-state checks do confirm standby, and I will verify the physical behaviour when I am back home.

This is still a development version, but the project is starting to feel much more complete now.

I will add a few screenshots below showing the current dashboard, the combined RAID view, the new settings and the standby/idle states.

1 Like

The Disk Monitor project is now essentially feature-complete.

I have finished the main functionality and have been testing it extensively on my own ZimaOS system. At this point, I have not found any additional major issues.

The current version includes disk activity monitoring, current read/write access with process information, SMART data, SMART history, extended SMART attributes, RAID support, HDD standby handling, USB HDD standby estimation, persistent activity tracking, filesystem information, storage usage, temperature monitoring, and both compact and comfort layouts.

The USB HDD standby behavior is also working the way I wanted. When a disk is accessed, it switches to Active. Once the access stops, it returns to Standby Waiting and the configured standby timer starts again. If another read occurs, for example while a media player fetches more cached data during a movie, the disk becomes Active again and the standby timer is reset.

For USB HDDs, the user only needs to know or measure the approximate automatic standby time of the USB enclosure or drive and enter that value in the Disk Monitor settings.

The next step is to prepare the project for public/community use. I will clean up the current files, review the configuration and security settings, prepare the documentation and installation instructions, and create a proper release package.

I will also add a few new screenshots showing the current interface and features.

So from my side, the development and testing phase is basically complete. The next phase is preparing it so other users can install and test it themselves.

3 Likes

Disk Monitor – Quick Development Update

Since August 30, quite a lot has changed in Disk Monitor:

  • Added SMART automation with Off / 1× / 2× / 3× daily checks. Sleeping HDDs are never woken just for SMART; automatic checks wait for a natural wake-up.

  • Added a startup SMART check for already-active drives and SSDs.

  • Added per-drive information showing how many automatic SMART checks ran today and when the last one was performed.

  • Improved the SMART Full Check results and made the summary layout more compact.

  • Standardized SMART and RAID action buttons for a cleaner and more consistent UI.

  • Improved hover states and several small alignment/layout details.

  • Reworked USB Auto-Standby: preset times are saved immediately when selected.

  • Added a new touch-friendly custom minutes keypad for custom standby times, designed to work well on desktop, iPhone and iPad.

  • Removed unnecessary Save buttons and simplified the overall interaction.

  • Fixed several smaller UI/interaction bugs found during testing.

I also created a short video showing the current interface and some of the new functions.

Still a work in progress, but the UI and SMART/standby handling are now much closer to the final direction.

1 Like