Feature: Disk-ID Namen + SMART-Daten on demand im VdevTree

- Backend: get_disk_id_map() liest /dev/disk/by-id/ dynamisch aus (ata/nvme/scsi/wwn)
- Backend: _annotate_disk_ids() hängt disk_id an Leaf-Vdevs in get_pool_status()
- Backend: get_smart_info() liest smartctl --json (Modell, Temp, Health, Stunden, Sektoren)
- Backend: GET /api/pools/disks/{disk}/smart Endpoint
- Frontend: DiskRow zeigt Modellname neben sda/sdb, aufklappbar für SMART-Details
- Frontend: Temp-Spalte farbcodiert (grün/gelb/rot), SMART-Spalte zeigt PASSED/FAILED

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-05 09:36:36 +02:00
parent 202fdfaaeb
commit ce78f0ae95
4 changed files with 273 additions and 38 deletions
+15
View File
@@ -253,6 +253,21 @@ export class ZFSManagerAPI {
return response.data
}
async getDiskSmart(disk: string): Promise<{
model?: string
serial?: string
protocol?: string
power_on_hours?: number
temperature?: number
passed?: boolean
reallocated_sectors?: number
pending_sectors?: number
uncorrectable?: number
}> {
const response = await this.client.get(`/api/pools/disks/${disk}/smart`)
return response.data
}
// Datasets
async getDatasets(pool: string = "tank"): Promise<Dataset[]> {
const response = await this.client.get("/api/datasets/", { params: { pool } })