Pool all your drives — local and networked — into one unified filesystem
drive-nmonit turns a cluster of Linux machines (hosts, SBCs, servers) into a single distributed storage system. It combines mergerfs for local drive pooling with GlusterFS for network distribution — giving you one mount point with the combined capacity of every drive in the cluster.
Architecture
Each node pools all its local drives via mergerfs into /mnt/local-pool. Then each node contributes its pool as a GlusterFS brick, creating a distributed volume mounted at /mnt/workspace on every machine.
How It Works
- Local Pooling (mergerfs): Each node pools all its local drives (HDD, SSD, USB) into
/mnt/local-pool. mergerfs is a union filesystem — it presents multiple underlying filesystems as one, preserving the individual filesystems so data is never at risk if the pool software fails. - Network Distribution (GlusterFS): Each node contributes its pool as a GlusterFS brick spanning all machines.
- Unified Mount: Every node mounts the cluster at
/mnt/workspace— one filesystem, total capacity.
Key Features
- Two-tier pooling: mergerfs locally + GlusterFS across the network
- Any drive type: Internal, external, USB — mix and match
- Safe by design: mergerfs preserves individual filesystems, so data is never at risk if the pool software fails
- Interactive CLI: Full menu-driven management with health monitoring and status dashboard on every launch
- Non-interactive mode: All operations available as direct commands for scripting and automation
- State detection: Auto-detects installed services, mount states, volume status, peer count, and managed drives on startup
- Web Dashboard: Real-time cluster status with per-node health indicators
- Samba/NFS export: Share the cluster with any OS
- Health checks: Nagios-compatible monitoring with alerting
- Systemd integration: All services auto-start on boot
- MIT Licensed: Free and open source
Interactive CLI
# Interactive menu mode (auto-detects system state on launch) sudo ./drive-nmonit-cli # Direct command mode (non-interactive, useful for automation) sudo ./drive-nmonit-cli status # Quick cluster status overview sudo ./drive-nmonit-cli health --json # Health check in JSON format sudo ./drive-nmonit-cli health --watch # Live-updating health dashboard (5s interval) sudo ./drive-nmonit-cli install # Install dependencies
Quick Start
# On ALL nodes: Install dependencies sudo ./scripts/install-deps.sh # On ALL nodes: Pool local drives sudo ./scripts/setup-mergerfs.sh # On PRIMARY node: Initialize cluster sudo ./scripts/setup-glusterfs.sh --init # On SLAVE nodes: Join cluster sudo ./scripts/setup-glusterfs.sh --join <primary-ip> # On ALL nodes: Mount workspace sudo ./scripts/mount-all.sh # Now /mnt/workspace has your combined storage!
Requirements
- Ubuntu 20.04+ / Debian 11+ / any systemd Linux
- One or more storage drives per node
- Gigabit Ethernet between nodes (10GbE recommended)
- All nodes must be able to reach each other on TCP ports: 24007, 24008, 49152–49251 (GlusterFS)
- Static IP addresses or hostname resolution (see
templates/hosts.template)
Download
Source code + full documentation + CLI + dashboard + health monitoring. Just clone and run.
