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.
- Salud de la controladora RAID: procede de la tabla heredada
storage_status.json_data(la salida de la recolección conarcconfde Adaptec): estado de la controladora (Optimal/Degraded/Failed), temperatura, estado de la batería, volúmenes lógicos (nivel RAID · estado · tamaño) y un mapa de discos físicos (estado por ranura · modelo · número de serie · tamaño). - Uso de disco del volumen de datos: procede de la instantánea
df-*de la tabla heredadaserver_status: porcentaje de uso · espacio usado · espacio disponible del volumen de datos, mostrados en la parte superior de la tarjeta.
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
- En las rondas rutinarias, para ver el estado RAID de todos los nodos de un vistazo.
- Cuando un servidor va lento o recibe avisos de E/S, para clasificar rápidamente el espacio libre en disco y el estado de la matriz.
- Antes y después de sustituir un disco, para confirmar visualmente el progreso/finalización de la reconstrucción mediante el mapa de ranuras.
- Cuando se dispara una alerta de espacio libre en disco en Infraestructura ▸ Alertas y necesita profundizar en qué volumen está afectado.
Disposición
Cabecera · barra de control
- Título/subtítulo + marca de tiempo de última actualización (
Updated: HH:MM:SS) + botón de actualizar (sondeo manual). - Barra de filtro por host:
Allmás un botón por host. Al seleccionar un host se filtra por él y se vuelve a la página 1.
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
- Abra Infraestructura ▸ Almacenamiento y RAID desde el menú.
- Use el filtro por host de la parte superior para centrarse en un servidor o vea
All. - Revise primero la insignia RAID de la cabecera de cada tarjeta; priorice las tarjetas ámbar y rojas.
- 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. - Compruebe la barra de uso para ver si el volumen de datos se acerca a los umbrales del 80 %/95 %.
- 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 aNo storage data..
Acceso
- Ver: cualquier usuario autenticado (el mínimo del área de Infraestructura es
user_level1 = demo) puede verla. La ruta reside en el grupoinfr.auth. - Sin escrituras: esta pantalla es enteramente de solo lectura. No hay acciones que cambien el estado del RAID o de los discos ni que manipulen matrices (la sustitución y la reconstrucción las realiza un SE en el host de destino).
- La creación/edición de activos de almacenamiento (metadatos de equipos, áreas de archivos) se hace en la pantalla aparte Activos ▸ Almacenamiento y archivos, cuyas escrituras requieren
user_level2 o superior.
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
- Infraestructura ▸ Estado: estado en vivo de CPU · memoria · disco · servicios por nodo.
- Infraestructura ▸ Servidores: series temporales de carga por servidor.
- Infraestructura ▸ Alertas: políticas de alerta de espacio libre en disco y de estado RAID.
- Activos ▸ Almacenamiento y archivos: registro de activos de almacenamiento y árbol de áreas de archivos (con escritura).
- Administración ▸ Recolectores: registro de los recolectores
sync_adp.jsyrun_report.js.
