Complete disk collector rewrite with clean architecture
All checks were successful
Build and Release / build-and-release (push) Successful in 2m8s
All checks were successful
Build and Release / build-and-release (push) Successful in 2m8s
Replaced complex disk collector with simple lsblk → df → group workflow. Supports both physical drives and mergerfs pools with unified metrics. Eliminates configuration complexity through pure auto-discovery. - Clean discovery pipeline using lsblk and df commands - Physical drive grouping with filesystem children - MergerFS pool detection with parity heuristics - Unified metric generation for consistent dashboard display - SMART data collection for temperature, wear, and health
This commit is contained in:
50
CLAUDE.md
50
CLAUDE.md
@@ -229,34 +229,44 @@ Storage:
|
||||
- Enhanced pool health calculation (healthy/degraded/critical)
|
||||
- Hierarchical tree visualization with data/parity disk separation
|
||||
|
||||
**🔄 In Progress - Unified Pool Visualization:**
|
||||
**🔄 In Progress - Complete Disk Collector Rewrite:**
|
||||
|
||||
Current auto-discovery works but displays filesystems separately instead of grouped by physical drives. Need to implement unified pool concept where single drives are treated as pools.
|
||||
The current disk collector has grown complex with mixed legacy/auto-discovery approaches. Planning complete rewrite with clean, simple workflow supporting both physical drives and mergerfs pools.
|
||||
|
||||
**Current Display (needs improvement):**
|
||||
```
|
||||
● /boot: (separate entry)
|
||||
● /nix_store: (separate entry)
|
||||
● /: (separate entry)
|
||||
```
|
||||
**New Clean Architecture:**
|
||||
|
||||
**Target Display (unified pools):**
|
||||
**Discovery Workflow:**
|
||||
1. **`lsblk`** to detect all mount points and backing devices
|
||||
2. **`df`** to get filesystem usage for each mount point
|
||||
3. **Group by physical drive** (nvme0n1, sda, etc.)
|
||||
4. **Parse `/proc/mounts`** for mergerfs pools
|
||||
5. **Generate unified metrics** for both storage types
|
||||
|
||||
**Physical Drive Display:**
|
||||
```
|
||||
● nvme0n1:
|
||||
├─ Drive: T: 35°C W: 1%
|
||||
├─ /boot: 11% 0.1GB/1.0GB
|
||||
├─ /nix_store: 23% 214.9GB/928.2GB
|
||||
└─ /: 23% 214.9GB/928.2GB
|
||||
├─ ● Drive: T: 35°C W: 1%
|
||||
├─ ● Total: 23% 218.0GB/928.2GB
|
||||
├─ ● /boot: 11% 0.1GB/1.0GB
|
||||
└─ ● /: 23% 214.9GB/928.2GB
|
||||
```
|
||||
|
||||
**Required Changes:**
|
||||
1. **Enhanced Auto-Discovery**: Group filesystems by backing physical drive during discovery
|
||||
2. **UI Pool Logic**: Treat single drives as "pools" with drive name as header
|
||||
3. **Drive Info Display**: Show temperature, wear, health at pool level for single drives
|
||||
4. **Filesystem Children**: Display mount points as children under their physical drives
|
||||
5. **Hybrid Rendering**: Physical grouping for single drives, logical grouping for mergerfs pools
|
||||
**MergerFS Pool Display:**
|
||||
```
|
||||
● /srv/media (mergerfs):
|
||||
├─ ● Pool: 63% 2355.2GB/3686.4GB
|
||||
├─ Data Disks:
|
||||
│ ├─ ● sdb T: 24°C
|
||||
│ └─ ● sdd T: 27°C
|
||||
└─ ● sdc T: 24°C (parity)
|
||||
```
|
||||
|
||||
**Expected Result**: Consistent hierarchical storage visualization where everything follows pool->children pattern, regardless of underlying storage technology.
|
||||
**Implementation Benefits:**
|
||||
- **Pure auto-discovery**: No configuration needed
|
||||
- **Clean code paths**: Single workflow for all storage types
|
||||
- **Consistent display**: Status icons on every line, no redundant text
|
||||
- **Simple pipeline**: lsblk → df → group → metrics
|
||||
- **Support for both**: Physical drives and mergerfs pools
|
||||
|
||||
## Important Communication Guidelines
|
||||
|
||||
|
||||
Reference in New Issue
Block a user