InfraGuard

Speicher und RAID

Schreibgeschütztes Live-Dashboard für den Zustand des RAID-Controllers (Optimal/Degraded/Failed), eine physische Datenträgerkarte und die Auslastung des Datenvolumes je Host.

Überblick — was dieser Bildschirm leistet

Infrastruktur ▸ Speicher und RAID (/infra/storage) ist ein schreibgeschütztes Verfügbarkeits-Dashboard, das den Speicherzustand jedes Hosts auf einem Bildschirm zusammenführt. Es setzt zwei Arten von Telemetrie zu Karten zusammen.

Der Kernzweck ist die Frühwarnung vor Datenträgerausfällen. Fällt ein RAID-Verbund auf Degraded oder geht ein physischer Datenträger auf Failed/Missing, macht die Farbe (Bernstein/Rot) das sofort sichtbar, sodass Sie ersetzen und wiederherstellen können, bevor ein zweiter Datenträger ausfällt und der gesamte Verbund zusammenbricht.

Dieser Bildschirm deckt ausschließlich den Live-Status ab (den Zustand genau jetzt). Das Bestandsverzeichnis des Speichers (Gerätemetadaten, Kapazitätsplanung, Baum der Dateibereiche) gehört zu Assets ▸ Speicher und Dateien. Beide sind bewusst getrennt (siehe Datenquellen).

Wann Sie ihn nutzen

Aufbau

Kopfbereich · Steuerleiste

Speicherkarte

Je Host wird eine Karte gerendert.

Bereich Inhalt
Kopf Hostname · Zeitpunkt der letzten Aktualisierung · RAID-Zusammenfassungsplakette (status_summary)
Auslastung Beschriftung DATA VOL usage + Prozent + (used / available) + Fortschrittsbalken
Controller Symbol + Modell · Temperatur · Batteriestatus
Logisches Volume name (RAID level) + Status / size
Physische Datenträgerkarte Steckplatz-Chips (S-{slot} + Größe), Farbe je Status, Kurzinfo = model · serial · status

Liegen keine Controller-Informationen vor, zeigt die Karte No controller data; gibt es überhaupt keine Karten, erscheint No storage data.. Die Liste blättert mit 10 Einträgen pro Seite.

Farbregeln für Status

RAID-Zusammenfassung · Status des logischen Volumes (raid_tone):

Enthält Farbe Bedeutung
optimal good (grün) Gesund
degrad warn (bernstein) Degradiert — ein Datenträger ist ausgefallen, Wiederherstellung nötig
fail crit (rot) RAID ausgefallen — Daten in Gefahr
sonstige muted (grau) Unbekannt

Status des physischen Datenträgers (disk_tone):

Enthält Farbe Bedeutung
online / optimal good Gesund
rebuild warn Wiederherstellung läuft
fail / missing crit Ausgefallen / verschwunden
sonstige muted Unbekannt

Plattenauslastung (usage_tone):

Auslastung Farbe
≥ 95 % crit
≥ 80 % warn
< 80 % good

Vorgehen

  1. Öffnen Sie Infrastruktur ▸ Speicher und RAID über das Menü.
  2. Nutzen Sie oben den Host-Filter, um sich auf einen Server zu konzentrieren, oder zeigen Sie All an.
  3. Prüfen Sie zuerst die RAID-Plakette im Kopf jeder Karte; behandeln Sie bernsteinfarbene und rote Karten vorrangig.
  4. Lesen Sie auf einer auffälligen Karte die physische Datenträgerkarte, um den Steckplatz mit Failed/Missing/Rebuild zu finden. Fahren Sie über einen Chip, um die Kurzinfo mit Modell und Seriennummer zu sehen.
  5. Prüfen Sie den Auslastungsbalken, um zu sehen, ob sich das Datenvolume den Schwellen von 80 %/95 % nähert.
  6. Wirken die Daten veraltet, klicken Sie oben rechts auf Aktualisieren.

Diese Seite fragt nicht automatisch ab. Die angezeigten Daten laufen über einen serverseitigen 30-Sekunden-Cache, und der Bildschirm aktualisiert sich nur, wenn Sie die Aktualisierungsschaltfläche drücken (die /infra/storage/live erneut abfragt). Wenn Sie ihn zur Trendbeobachtung geöffnet lassen, drücken Sie regelmäßig auf Aktualisieren.

Datenquellen

Beide Tabellen stammen aus dem alten MySQL (die Verbindung legacy, nur lesend). Die Anwendung schreibt sie niemals.

Tabelle Was Lieferant
storage_status host, status_summary, json_data (controllers/logical_volumes/disks), created_at sync_adp.js (Adaptec arcconf)
server_status Momentaufnahme der part df-* → Plattenauslastung run_report.js

Aufbau von json_data (Beispiel)

{
  "controllers": [
    {
      "model": "Adaptec ASR-5805",
      "temperature": "41C",
      "battery_status": "Optimal",
      "status": "Optimal",
      "logical_volumes": [
        { "name": "Data", "raid_level": "6", "status": "Optimal", "size": "10.9TB" }
      ],
      "disks": [
        { "slot": 0, "status": "Online", "model": "ST4000NM0033", "serial": "Z1Z00000", "size": "3.6TB" }
      ]
    }
  ]
}

Aufbau des df-*-Werts

server_status.value ist JSON und trägt p (Prozent) · u (belegt) · a (verfügbar).

{ "p": 72, "u": "7.2T", "a": "2.8T" }

Zuordnung Host ↔ Alias

Die Auslastung wird über eine statische Zuordnung von storage_status.host (Beschriftung in Großbuchstaben) zu server_status.server_alias (in Kleinbuchstaben) verknüpft. Hosts, die in der Zuordnung fehlen, greifen auf den kleingeschriebenen Hostnamen zurück.

host alias host alias
AMBER am ART art
MEDIA media BUD bud
ARCH1 arch1 GLORY glory
SOL sol DOCU documents
BLUE blue DNS_SERVER demo

seq-Fenster-Abfrage — langsame Scans vermeiden

server_status ist eine große Zeitreihe. Die gesamte Tabelle mit MAX(seq) … GROUP BY server_alias, part zu aggregieren, löst einen vollständigen Scan aus. Stattdessen holt der Builder (StorageStatusService::dfUsageByAlias) über den Index nur die 3 jüngsten seq-Werte und liest anschließend allein die df-*-Zeilen dieser seq.

-- 1) Die 3 jüngsten seq-Werte (seq-Index → O(log N))
SELECT DISTINCT seq FROM server_status ORDER BY seq DESC LIMIT 3;

-- 2) Nur die df-*-Zeilen innerhalb dieser seq (älteste → neueste, die neueste gewinnt)
SELECT server_alias, part, value
  FROM server_status
 WHERE seq IN (?, ?, ?) AND part LIKE 'df-%'
 ORDER BY seq;

Je Alias wird die part df-data bevorzugt; fehlt sie, dient das Volume mit der höchsten Auslastung (p maximal) als repräsentativer Wert.

Ebenso werden die aktuellsten RAID-Zeilen auf die jeweils neueste je Host eingegrenzt.

SELECT MAX(id) AS mid FROM storage_status GROUP BY host;   -- die neueste je Host
SELECT * FROM storage_status WHERE id IN (?, ...) ORDER BY host;

Ergebnisse werden unter dem Schlüssel infr:infra:storage:v1 für 30 Sekunden zwischengespeichert. Das unterdrückt Roundtrips zur Altdatenbank und fängt gleichzeitige Betrachter ab. Ist die Altdatenbank nicht erreichbar, schluckt der Builder die Ausnahme und liefert ein leeres Array, sodass der Bildschirm sauber auf No storage data. zurückfällt.

Zugriff

Fehlersuche und FAQ

F. Die Karte erscheint, aber die Auslastung (DATA VOL) ist leer. Der alias des Hosts passte im jüngsten seq-Fenster zu keinen df-*-Daten. Prüfen Sie, ob run_report.js auf diesem Knoten läuft und die Zuordnung Host↔Alias stimmt. Diese Zuordnung ist eine statische Karte und unabhängig von der run_report-Konfiguration in Verwaltung ▸ Collectors.

F. Die Datenträgerkarte bzw. der Controller meldet „No controller data“. Das Array controllers in storage_status.json_data ist leer oder ließ sich nicht auswerten. Dieser Host hat möglicherweise kein Adaptec-RAID, oder die Erfassung durch sync_adp.js (arcconf) schlägt fehl. Prüfen Sie Pfad und Berechtigungen von arcconf.

F. Alles meldet „No storage data.“. Verbindungsfehler zur Altdatenbank, oder storage_status enthält keine Zeilen. Der Builder gibt im Ausnahmefall ein leeres Array zurück. Überprüfen Sie die Verbindung legacy (DB_* in .env) und den Zustand des Collectors.

F. Die Werte sind dieselben wie vor einigen Minuten. (1) Diese Seite fragt nicht selbsttätig ab — drücken Sie auf Aktualisieren. (2) Der Server-Cache lebt 30 Sekunden. (3) Grundsätzlich laufen die Collectors (sync_adp.js, run_report.js) außerhalb von Laravel nach Zeitplan; die Aktualität der Quelle hängt daher vom Cron-Takt ab.

F. Eine Degraded-Plakette ist aufgetaucht — was tun? Suchen Sie in der physischen Datenträgerkarte den Steckplatz mit Failed/Missing, tauschen Sie diesen Datenträger aus und vergewissern Sie sich, dass der Controller automatisch ein Rebuild startet. Während einer Wiederherstellung ist der Verbund anfällig für einen Doppelausfall, prüfen Sie deshalb auch Ihre Sicherungslage (Backup ▸ Zeitplan-Board).

Verwandte Themen

스토리지 · RAID 건전성
스토리지 · RAID 건전성