InfraGuard

Almacenamiento y RAID

Panel en vivo de solo lectura con la salud de la controladora RAID (Optimal/Degraded/Failed), un mapa de discos físicos y el uso de disco del volumen de datos por host.

Resumen — qué hace

Infraestructura ▸ Almacenamiento y RAID (/infra/storage) es un panel de disponibilidad de solo lectura que reúne en una sola pantalla la salud del almacenamiento de cada host. Ensambla en tarjetas dos clases de telemetría.

Su propósito central es el aviso temprano de fallo de disco. Cuando una matriz RAID cae a Degraded o un disco físico pasa a Failed/Missing, el color (ámbar/rojo) lo hace visible de inmediato, de modo que pueda sustituir y reconstruir antes de que muera un segundo disco y toda la matriz se venga abajo.

Esta pantalla cubre únicamente el estado en vivo (la salud de ahora mismo). El registro de activos de almacenamiento (metadatos de los equipos, planificación de capacidad, árbol de áreas de archivos) pertenece a Activos ▸ Almacenamiento y archivos. Ambos están separados de forma deliberada (véase Fuentes de datos).

Cuándo usarlo

Disposición

Cabecera · barra de control

Tarjeta de almacenamiento

Se representa una tarjeta por host.

Región Contenido
Cabecera Nombre del host · hora de última actualización · insignia de resumen RAID (status_summary)
Uso Etiqueta DATA VOL usage + porcentaje + (used / available) + barra de progreso
Controladora Icono + modelo · temperatura · estado de la batería
Volumen lógico name (RAID level) + estado / size
Mapa de discos físicos Fichas de ranura (S-{slot} + tamaño), color según el estado, información emergente = model · serial · status

Si no hay información de la controladora, la tarjeta muestra No controller data; si no hay ninguna tarjeta, muestra No storage data.. La lista se pagina de 10 en 10.

Reglas de color de estado

Resumen RAID · estado del volumen lógico (raid_tone):

Contiene Color Significado
optimal good (verde) Correcto
degrad warn (ámbar) Degradado: un disco ha fallado, hace falta reconstruir
fail crit (rojo) RAID fallido: los datos están en riesgo
otro muted (gris) Desconocido

Estado del disco físico (disk_tone):

Contiene Color Significado
online / optimal good Correcto
rebuild warn Reconstrucción en curso
fail / missing crit Fallido / desaparecido
otro muted Desconocido

Uso de disco (usage_tone):

Uso Color
≥ 95 % crit
≥ 80 % warn
< 80 % good

Cómo usarlo

  1. Abra Infraestructura ▸ Almacenamiento y RAID desde el menú.
  2. Use el filtro por host de la parte superior para centrarse en un servidor o vea All.
  3. Revise primero la insignia RAID de la cabecera de cada tarjeta; priorice las tarjetas ámbar y rojas.
  4. En una tarjeta problemática, lea el mapa de discos físicos para localizar qué ranura está en Failed/Missing/Rebuild. Pase el cursor sobre una ficha para ver el modelo y el número de serie.
  5. Compruebe la barra de uso para ver si el volumen de datos se acerca a los umbrales del 80 %/95 %.
  6. Si los datos parecen antiguos, haga clic en Actualizar, arriba a la derecha.

Esta página no sondea de forma automática. Los datos mostrados pasan por una caché de 30 segundos en el servidor, y la pantalla solo se actualiza cuando pulsa el botón de actualizar (que vuelve a consultar /infra/storage/live). Si la deja abierta para vigilar la evolución, pulse actualizar de vez en cuando.

Fuentes de datos

Ambas tablas proceden del MySQL heredado (la conexión legacy, de solo lectura). La aplicación nunca escribe en ellas.

Tabla Qué Proveedor
storage_status host, status_summary, json_data (controllers/logical_volumes/disks), created_at sync_adp.js (arcconf de Adaptec)
server_status Instantánea de la part df-* → uso de disco run_report.js

Forma de json_data (ejemplo)

{
  "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" }
      ]
    }
  ]
}

Forma del valor df-*

server_status.value es JSON y lleva p (porcentaje) · u (usado) · a (disponible).

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

Correspondencia host ↔ alias

El uso se une mediante un mapa estático que va de storage_status.host (etiqueta en mayúsculas) a server_status.server_alias (en minúsculas). Los hosts ausentes del mapa recurren al nombre de host en minúsculas.

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

Consulta por ventana de seq — evitar los escaneos lentos

server_status es una serie temporal grande. Agregar la tabla entera con MAX(seq) … GROUP BY server_alias, part provoca un escaneo completo. En su lugar, el constructor (StorageStatusService::dfUsageByAlias) extrae por índice solo los 3 valores de seq más recientes y después lee únicamente las filas df-* de esos seq.

-- 1) Los 3 valores de seq más recientes (índice de seq → O(log N))
SELECT DISTINCT seq FROM server_status ORDER BY seq DESC LIMIT 3;

-- 2) Solo las filas df-* dentro de esos seq (de más antigua a más nueva, gana la última)
SELECT server_alias, part, value
  FROM server_status
 WHERE seq IN (?, ?, ?) AND part LIKE 'df-%'
 ORDER BY seq;

Para cada alias prefiere la part df-data; si no existe, usa como valor representativo el volumen con mayor uso (p máximo).

Las filas RAID más recientes se acotan igualmente a la más nueva por host.

SELECT MAX(id) AS mid FROM storage_status GROUP BY host;   -- la más reciente por host
SELECT * FROM storage_status WHERE id IN (?, ...) ORDER BY host;

Los resultados se cachean durante 30 segundos bajo la clave infr:infra:storage:v1. Esto suprime idas y vueltas a la base de datos heredada y absorbe a los espectadores concurrentes. Si la base de datos heredada no es alcanzable, el constructor se traga la excepción y devuelve un array vacío, de modo que la pantalla degrada con elegancia a No storage data..

Acceso

Resolución de problemas y preguntas frecuentes

P. La tarjeta aparece, pero el uso (DATA VOL) está vacío. El alias del host no coincidió con ningún dato df-* en la ventana de seq reciente. Confirme que run_report.js se está ejecutando en ese nodo y que la correspondencia host↔alias es correcta. Esa correspondencia es un mapa estático, independiente de la configuración de run_report en Administración ▸ Recolectores.

P. El mapa de discos o la controladora dicen «No controller data». El array controllers de storage_status.json_data está vacío o no se pudo analizar. Puede que ese host no tenga RAID de Adaptec, o que la recolección de sync_adp.js (arcconf) esté fallando. Revise la ruta y los permisos de arcconf.

P. Todo dice «No storage data.». Fallo de conexión con la base de datos heredada, o storage_status no tiene filas. El constructor devuelve un array vacío ante una excepción. Verifique la conexión legacy (DB_* en .env) y la salud del recolector.

P. Los valores son los mismos que hace unos minutos. (1) Esta página no sondea sola: pulse actualizar. (2) La caché del servidor vive 30 segundos. (3) De fondo, los recolectores (sync_adp.js, run_report.js) se ejecutan fuera de Laravel según una programación, así que la frescura del origen depende de la cadencia del cron.

P. Ha aparecido una insignia Degraded: ¿qué hago? Localice la ranura en Failed/Missing en el mapa de discos físicos, sustituya ese disco y confirme que la controladora inicia un Rebuild automático. Durante una reconstrucción la matriz es vulnerable a un doble fallo, así que verifique también su posición de copias de seguridad (Copias ▸ Panel de programación).

Relacionado

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