Ü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.
- Zustand des RAID-Controllers — aus der Alttabelle
storage_status.json_data(der Ausgabe der Adaptec-arcconf-Erfassung): Controller-Status (Optimal/Degraded/Failed), Temperatur, Batteriestatus, logische Volumes (RAID-Level · Status · Größe) und eine physische Datenträgerkarte (Status je Steckplatz · Modell · Seriennummer · Größe). - Auslastung des Datenvolumes — aus der
df-*-Momentaufnahme in der Alttabelleserver_status: Auslastung in Prozent · belegt · verfügbar, oben auf der Karte dargestellt.
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
- Bei den regelmäßigen Rundgängen, um den RAID-Status jedes Knotens auf einen Blick zu sehen.
- Wenn ein Server träge ist oder Sie E/A-Warnungen erhalten, um freien Plattenplatz und Verbundzustand rasch einzuordnen.
- Vor und nach einem Datenträgertausch, um über die Steckplatzkarte den Fortschritt bzw. Abschluss der Wiederherstellung optisch zu bestätigen.
- Wenn in Infrastruktur ▸ Alarme ein Alarm über freien Plattenplatz auslöst und Sie ermitteln müssen, welches Volume betroffen ist.
Aufbau
Kopfbereich · Steuerleiste
- Titel/Untertitel + Zeitstempel der letzten Aktualisierung (
Updated: HH:MM:SS) + Aktualisierungsschaltfläche (manuelle Abfrage). - Host-Filterleiste —
Allsowie je eine Schaltfläche pro Host. Die Auswahl eines Hosts filtert auf ihn und setzt auf Seite 1 zurück.
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
- Öffnen Sie Infrastruktur ▸ Speicher und RAID über das Menü.
- Nutzen Sie oben den Host-Filter, um sich auf einen Server zu konzentrieren, oder zeigen Sie
Allan. - Prüfen Sie zuerst die RAID-Plakette im Kopf jeder Karte; behandeln Sie bernsteinfarbene und rote Karten vorrangig.
- Lesen Sie auf einer auffälligen Karte die physische Datenträgerkarte, um den Steckplatz mit
Failed/Missing/Rebuildzu finden. Fahren Sie über einen Chip, um die Kurzinfo mit Modell und Seriennummer zu sehen. - Prüfen Sie den Auslastungsbalken, um zu sehen, ob sich das Datenvolume den Schwellen von 80 %/95 % nähert.
- 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/liveerneut 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:v1fü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 aufNo storage data.zurückfällt.
Zugriff
- Ansehen: Jede authentifizierte Person (Mindestwert
user_level1 = demo für den Bereich Infrastruktur) kann den Bildschirm einsehen. Die Route liegt in der Gruppeinfr.auth. - Keine Schreibvorgänge: Dieser Bildschirm ist vollständig schreibgeschützt. Es gibt keine Aktionen, die den RAID- oder Datenträgerzustand ändern oder Verbünde manipulieren (Austausch und Wiederherstellung erledigt ein SE auf dem betroffenen Host).
- Das Anlegen und Bearbeiten von Speicher-Assets (Gerätemetadaten, Dateibereiche) geschieht auf dem separaten Bildschirm Assets ▸ Speicher und Dateien, dessen Schreibvorgänge
user_level2 oder höher erfordern.
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
- Infrastruktur ▸ Zustand — Live-Status von CPU · Arbeitsspeicher · Festplatte · Diensten je Knoten.
- Infrastruktur ▸ Server — Zeitreihen der Last je Server.
- Infrastruktur ▸ Alarme — Alarmrichtlinien für freien Plattenplatz und RAID-Status.
- Assets ▸ Speicher und Dateien — Bestandsverzeichnis für Speicher und Baum der Dateibereiche (mit Schreibzugriff).
- Verwaltung ▸ Collectors — Collector-Registry für
sync_adp.jsundrun_report.js.
