El mayor portal de MU Online de Brasil — desde 2003
Tutorial Intermedio Infraestructura

Cómo monitorear el espacio en disco del servidor de MU Online y evitar caídas por disco lleno

Configura alertas automáticas de espacio en disco en el servidor de MU Online, identifica a los mayores consumidores (logs, backups, MySQL) y arma una rutina de limpieza que evita la caída de MySQL por disco lleno.

BR Bruno · Actualizado el 31 jul 2026 · ⏱ 13 min de lectura
Respuesta rápida

Disco lleno es una de las causas más silenciosas y más destructivas de caída en servidores privados de MU Online: a diferencia de un pico de CPU que los jugadores sienten como lag, el disco se llena poco a poco, sin síntoma visible, hasta el momento en que MySQL simplemente deja de aceptar escritura

Disco lleno es una de las causas más silenciosas y más destructivas de caída en servidores privados de MU Online: a diferencia de un pico de CPU que los jugadores sienten como lag, el disco se llena poco a poco, sin síntoma visible, hasta el momento en que MySQL simplemente deja de aceptar escrituras — y en ese instante ya estás lidiando con datos de personaje potencialmente corruptos, no solo con un servidor fuera de línea. Este tutorial muestra cómo identificar a los mayores consumidores de espacio en un servidor de MU (logs, backups, tablas de base de datos), configurar alertas automáticas antes de que el disco llegue al límite, y armar una rutina de limpieza y archivado que mantiene al servidor saludable sin perder historial importante para investigaciones de baneo y disputas entre jugadores.

Por qué el disco lleno es más peligroso que la CPU alta

Un pico de CPU degrada la experiencia (lag), pero el servidor sigue funcionando y se recupera solo cuando el pico pasa. El disco lleno es binario: en un momento MySQL escribe normalmente, al siguiente rechaza cualquier escritura, porque no hay espacio físico para que el archivo de log de transacciones (ib_logfile) o el propio tablespace crezcan. Esto puede trabar al GameServer en medio de un guardado de personaje, con riesgo real de corrupción de datos — un problema mucho más grave que cualquier lag.

Principales consumidores de espacio en un servidor de MU Online

ConsumidorPor qué creceTasa de crecimiento típica
Logs del GameServer/ConnectServerGraban cada conexión, error y acción relevantePuede llegar a GBs/semana en servidor populoso
Backups de MySQLDump completo generado periódicamente sin limpiezaCrece linealmente con el tamaño de la base de datos
Tablas de log de PK/eventos en MySQLCada muerte, drop y evento genera una líneaPuede superar millones de líneas en meses
Binlog de MySQLLog de replicación/recuperación, si está habilitadoCrece rápido en servidores con mucha escritura
Archivos de actualización del launcherVersiones antiguas de parches no eliminadasCrece con cada actualización de cliente

Paso 1 — Medir el uso actual de disco

Antes de configurar cualquier alerta, entiende dónde se está consumiendo el espacio hoy. En Linux:

df -h
du -sh /var/lib/mysql /var/log /caminho/do/servidor/Logs /backup

En Windows, herramientas como WinDirStat o el propio Get-ChildItem recursivo en PowerShell ayudan a mapear los directorios más grandes antes de decidir qué limpiar o rotar.

Paso 2 — Configurar rotación de logs

En Linux, logrotate comprime y archiva logs automáticamente, evitando que un único archivo crezca sin límite:

# /etc/logrotate.d/mu-gameserver
/caminho/do/servidor/Logs/*.log {
    daily
    rotate 30
    compress
    missingok
    notifempty
}

Esto mantiene 30 días de historial comprimido y descarta lo que pase de eso — suficiente para la mayoría de las investigaciones de disputa entre jugadores, sin dejar que el disco crezca indefinidamente.

Paso 3 — Automatizar la limpieza de backups antiguos

Los backups de MySQL necesitan una política clara de retención. Un script simple corriendo vía cron/tarea programada lo resuelve:

#!/bin/bash
# Mantiene solo los últimos 14 backups diarios
find /backup/mysql -name "*.sql.gz" -mtime +14 -delete

Nunca borres backups manualmente sin confirmar que existe al menos una copia reciente íntegra — valida siempre el backup más nuevo antes de correr la limpieza de los antiguos.

Paso 4 — Archivar tablas de log de eventos/PK que crecen sin límite

Tablas como logs de PK, logs de drop de ítems raros y logs de chat pueden crecer hasta millones de líneas a lo largo de meses. En lugar de dejarlas crecer indefinidamente dentro de la base de datos activa, archiva periódicamente los registros antiguos en una tabla separada o en un dump externo:

-- Ejemplo: mover registros de más de 90 días a una tabla de archivo
INSERT INTO LOG_PK_ARQUIVO SELECT * FROM LOG_PK WHERE Data < NOW() - INTERVAL 90 DAY;
DELETE FROM LOG_PK WHERE Data < NOW() - INTERVAL 90 DAY;
OPTIMIZE TABLE LOG_PK;

Paso 5 — Configurar alertas automáticas de espacio

Una alerta simple con cron y un webhook de Discord ya evita la mayoría de las sorpresas, incluso sin un stack completo de monitoreo:

#!/bin/bash
USO=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$USO" -gt 85 ]; then
  curl -H "Content-Type: application/json" -d "{\"content\":\"⚠️ ¡Disco al ${USO}% de uso en el servidor!\"}" https://discord.com/api/webhooks/SEU_WEBHOOK
fi

Programa este script para correr cada 15-30 minutos vía cron (Linux) o el Programador de Tareas (Windows).

Paso 6 — Definir umbrales de alerta en capas

Una sola alerta a último momento no da tiempo de reacción. Configura umbrales progresivos, cada uno con una urgencia diferente:

Umbral de usoAcción recomendada
70%Aviso informativo, sin acción inmediata
85%Alerta activa en el Discord del equipo
92%Alerta crítica + inicio de limpieza automática de logs antiguos
97%Alerta de emergencia + intervención manual inmediata

Paso 7 — Separar discos por función cuando sea posible

Si el presupuesto lo permite, mantén MySQL en un disco (o partición) separado de los logs y backups. Así, incluso si los logs crecen descontroladamente, MySQL sigue teniendo espacio para escribir — evitando el escenario más grave de corrupción de datos de personaje.

Paso 8 — Probar la recuperación de espacio en un escenario simulado

Antes de confiar en la rutina, simula un escenario de disco casi lleno en un entorno de prueba y confirma que la rotación de logs, la limpieza de backups y el archivado de tablas realmente liberan espacio suficiente y a tiempo. Un script de limpieza que nunca fue probado es tan arriesgado como no tener ninguno.

Errores comunes y soluciones

SíntomaCausa probableSolución
MySQL deja de aceptar escriturasEl disco llegó al 100% de usoLiberar espacio de inmediato y reiniciar el servicio con cuidado
Logs creciendo sin límitelogrotate no configurado o mal aplicadoRevisar /etc/logrotate.d/ y probar con logrotate -d
Backups antiguos nunca eliminadosFalta de script de retención automatizadaImplementar limpieza vía cron con find -mtime
Tablas de log gigantes dejando queries lentasAusencia de archivado periódicoMover registros antiguos a tabla de archivo
La alerta de disco nunca se disparaScript de verificación no programado correctamenteConfirmar que cron/Programador de Tareas está activo

Lista de verificación de monitoreo de disco

  • Uso actual de disco mapeado por directorio (logs, backups, MySQL).
  • Rotación de logs configurada con retención definida (ej.: 30 días).
  • Script de limpieza automática de backups antiguos implementado.
  • Rutina de archivado de tablas de log de crecimiento rápido.
  • Alertas automáticas configuradas en capas (70/85/92/97%).
  • Discos de MySQL y logs/backups separados, si es posible.
  • Recuperación de espacio probada en entorno simulado.

Con el espacio en disco bajo control, el siguiente paso es integrar estas alertas a un panel de monitoreo más completo, cruzando CPU, memoria y conexiones de base de datos en el mismo lugar — mira el tutorial de creación de servidor de MU Online para revisar la base de infraestructura antes de avanzar hacia un stack de observabilidad más robusto.

Preguntas frecuentes

¿Qué pasa cuando el disco del servidor se llena por completo?

MySQL deja de aceptar escrituras y puede corromper tablas en uso en ese momento, el GameServer se traba al intentar guardar datos de personajes, y los logs dejan de grabarse — el peor escenario posible para un servidor privado de MU Online, con riesgo real de pérdida de progreso de los jugadores.

¿Qué archivos ocupan más espacio en un servidor de MU Online con el tiempo?

Los mayores consumidores suelen ser los logs del GameServer/ConnectServer (que crecen indefinidamente si no hay rotación), los backups de MySQL acumulados sin limpieza automática, y la propia base de datos cuando las tablas de log de eventos/PK no se archivan periódicamente.

¿Con qué frecuencia debo revisar el espacio en disco?

Con una alerta automatizada, la revisión es constante (cada pocos minutos), lo cual es mucho mejor que la revisión manual. Sin automatización, revisa manualmente al menos una vez al día, y siempre antes de eventos que generan mucho log (guerra de castillo, invasiones).

¿La rotación de logs corrompe el historial que necesito para investigar baneos y disputas?

No, si está configurada correctamente. La rotación comprime y archiva logs antiguos (por ejemplo, en .gz) en lugar de borrarlos de inmediato — mantienes el historial comprimido por un período definido (30-90 días) y solo lo descartas después de eso.

¿Vale la pena separar el disco de la base de datos del disco de logs/backups?

Sí, siempre que el presupuesto lo permita. Separarlos evita que un backup gigante o un log descontrolado dejen a MySQL sin espacio para escribir, que es el escenario más peligroso de disco lleno en un servidor de MU Online.

BR
Editor de eventos, mapas e ítems

Bruno es especialista en eventos, mapas, bosses y economía de ítems de MU Online. Documenta cada detalle basándose en el juego real.

Sigue leyendo

Artículos relacionados