feat(post-install): rebuild Log2RAM with the journal and task logs kept on disk

This commit is contained in:
MacRimi
2026-10-27 19:48:26 +01:00
parent ac9b8c2705
commit 4cefc0484b
57 changed files with 992 additions and 1065 deletions
@@ -79,7 +79,7 @@
},
{
"tool": "Log2RAM (según el SSD, automático)",
"what": "Reduce el desgaste del SSD/NVMe moviendo /var/log a una ramdisk tmpfs con sync periódico al disco. Se instala desde el proyecto oficial cuando el disco raíz es SSD o NVMe. Dimensiona la ramdisk según la RAM (128M / 256M / 512M), programa el sync periódico y un guardián de auto-sync que compacta al 80% y trunca los logs calientes al 92% antes de escribir. Ajusta los límites de journald para caber en la ramdisk. Detalle completo en <link>Log2RAM</link>.",
"what": "Reduce el desgaste del SSD/NVMe moviendo /var/log a una ramdisk tmpfs que se escribe en disco de forma programada. Se instala desde el proyecto oficial cuando el disco raíz es SSD o NVMe. Dimensiona la ramdisk según la RAM del host (128M / 256M / 512M) y añade una vigilancia que rota y escribe los logs cuando la ramdisk supera el 85%. El journal y los registros de tareas de Proxmox VE y Proxmox Backup Server se quedan en disco. Todos los detalles en <link>Log2RAM</link>.",
"category": "Almacenamiento",
"categorySlug": "storage"
},
@@ -109,7 +109,7 @@
}
],
"hardwareTitle": "Valores predeterminados adaptados al hardware",
"hardwareBody": "El script lee el hardware del host antes de aplicar los ajustes. Log2RAM solo se instala en discos raíz SSD / NVMe por defecto (pregunta si la detección dice lo contrario). El tamaño del ramdisk de Log2RAM se elige a partir de la RAM total (<code>≤ 8 GB → 128M</code>, <code>≤ 16 GB → 256M</code>, <code>'>' 16 GB → 512M</code>). Los límites de journald se ajustan al tamaño del ramdisk cuando Log2RAM está activo, para no llenarlo.",
"hardwareBody": "El script lee el hardware del host antes de aplicar los ajustes. Log2RAM solo se instala en discos raíz SSD / NVMe por defecto (pregunta si la detección dice lo contrario). El tamaño del ramdisk de Log2RAM se elige a partir de la RAM total (<code>≤ 8 GB → 128M</code>, <code>≤ 16 GB → 256M</code>, <code>'>' 16 GB → 512M</code>). Con Log2RAM activo, el journal se queda en disco con su propio límite.",
"upgrade": {
"heading": "Actualizar y hacer upgrade del sistema",
"intro": "El primer paso del bundle Automatizado es el upgrade de Proxmox. La guía oficial de Proxmox para hacer upgrade de un host en ejecución (dentro de la misma versión mayor) es ejecutar:",
@@ -133,25 +133,25 @@
},
"log2ram": {
"title": "Instalar Log2RAM (reducción de desgaste en SSD/NVMe)",
"intro": "Log2RAM monta <code>/var/log</code> en una ramdisk tmpfs y lo sincroniza periódicamente al disco. Almacenar temporalmente en RAM las escrituras frecuentes de journald puede reducir el desgaste del SSD y la E/S. La sincronización y un apagado limpio guardan los registros, pero un corte brusco puede perder las entradas posteriores a la última sincronización.",
"intro": "Log2RAM monta <code>/var/log</code> en una ramdisk tmpfs y la escribe en disco de forma programada, de modo que los registros que cambian constantemente, como el log de accesos de pveproxy, se escriben en RAM en lugar de en el SSD raíz. El journal y los registros de tareas de Proxmox VE y Proxmox Backup Server se quedan en disco. Un apagado limpio escribe la ramdisk en disco; un corte de luz brusco solo pierde los logs de texto escritos desde la última sincronización.",
"upstreamLabel": "Proyecto oficial:",
"upstreamUrl": "https://github.com/azlux/log2ram",
"upstreamLinkLabel": "azlux/log2ram en GitHub",
"doesLabel": "Qué hace ProxMenux:",
"doesItems": [
"Detecta si el disco raíz es SSD/NVMe leyendo <code>/sys/block/&lt;dev&gt;/queue/rotational</code>. En un disco rotacional el flujo Automatizado pregunta antes de instalar.",
"Clona el repositorio oficial (<code>azlux/log2ram</code>) en <code>/tmp/log2ram</code> y aplica un patch a su <code>install.sh</code>, sustituyendo <code>rsync -aAXv</code> por <code>rsync -aXv --no-acls</code>. Ese ajuste evita el fallo <em>set_acl: Operation not supported</em> con exit 23 que el script vanilla produce al mover /var/log en sistemas de archivos sin soporte de ACLs. La unit systemd <code>log2ram</code> se habilita después de la instalación.",
"Instala Log2RAM 1.7.2 desde el proyecto oficial, comprobando que lo descargado es esa versión, y deja su código sin modificar. Su correo de error se desactiva con <code>NOTIFICATION=false</code>, ya que Proxmox VE no incluye un comando de correo.",
"Dimensiona la ramdisk según la RAM del host: <code>≤ 8 GB → 128M</code>, <code>≤ 16 GB → 256M</code>, <code>&gt; 16 GB → 512M</code>. Escribe el valor en <code>SIZE=</code> de <code>/etc/log2ram.conf</code>.",
"Programa una sincronización periódica a disco vía <code>/etc/cron.d/log2ram</code>: cada 1h / 3h / 6h según el mismo tramo de RAM.",
"Instala un guardián de auto-sync en <code>/usr/local/bin/log2ram-check.sh</code>, conectado a <code>/etc/cron.d/log2ram-auto-sync</code> para ejecutarse cada 10 minutos. Cuando <code>/var/log</code> alcanza el 80% del tamaño de la ramdisk el guardián compacta journald; al 92% primero ejecuta <code>logrotate -f /etc/logrotate.d/proxmox-backup-api</code> si ese archivo existe (para forzar la rotación de los logs del API de PBS, que suelen ser los que más crecen en un host con PBS) y a continuación trunca <code>pveproxy access/error</code> y <code>pveam.log</code> antes de sincronizar. El comando <code>log2ram write</code> por sí solo copia tmpfs a disco pero NO reduce la tmpfs, así que este guardián evita que PVE caiga con <em>No space left on device</em> cuando los logs crecen sin control.",
"Detecta si <code>proxmox-backup-server</code> corre como servicio en el host. Cuando está presente, deposita <code>/etc/logrotate.d/proxmox-backup-api</code> (rotación de 20 MB × 3) y <code>/etc/cron.hourly/proxmox-backup-logrotate</code>, de forma que los logs del API de PBS — el origen habitual del crecimiento en un host con PBS — queden acotados incluso entre las sincronizaciones periódicas de Log2RAM. En hosts sin PBS este paso es un no-op.",
"Ajusta los límites de systemd-journald (<code>SystemMaxUse</code>, <code>RuntimeMaxUse</code>) para que quepan en la ramdisk y así una ráfaga puntual no la llene.",
"Se registra en <code>installed_tools.json</code> para poder revertirlo desde Desinstalar optimizaciones."
"Mantiene en disco el journal (<code>/var/log/journal</code>), los registros de tareas de Proxmox VE (<code>/var/log/pve</code>) y, si está instalado, los de Proxmox Backup Server (<code>/var/log/proxmox-backup</code>), en <code>/var/hdd.journal</code>, <code>/var/hdd.pve</code> y <code>/var/hdd.proxmox-backup</code>. Cada ruta habitual pasa a ser un enlace a su carpeta en disco. El traslado se hace al arrancar, antes de que se inicie Log2RAM.",
"Escribe la ramdisk en disco con el temporizador de Log2RAM cada 1h / 3h / 6h según el mismo tramo de RAM, y vuelca el disco después de cada escritura, de modo que una sincronización terminada sobrevive a un corte de luz.",
"Instala una vigilancia en <code>/etc/cron.d/log2ram-auto-sync</code> que se ejecuta cada 10 minutos. Cuando <code>/var/log</code> supera el 85% de la ramdisk, rota los logs, comprime los recién rotados y escribe todo en disco. No vacía ningún log.",
"Mantiene el journal de systemd en disco con un límite de 1 GB, en <code>/etc/systemd/journald.conf.d/proxmenux-log2ram.conf</code>. En un host con Proxmox Backup Server, añade <code>/etc/logrotate.d/proxmox-backup-api</code> (rotación de 20 MB × 3) para sus logs de la API.",
"Se registra en <code>installed_tools.json</code> para poder revertirse desde Desinstalar optimizaciones. Una actualización desde una versión anterior conserva el tamaño y el intervalo de sincronización, y lleva el journal a disco en el siguiente arranque."
],
"howUseLabel": "Cómo se usa:",
"howUseBody": "En el flujo automatizado Log2RAM se instala sin intervención al detectar un disco raíz SSD/NVMe. El personalizable pregunta por tamaño, intervalo y activación del auxiliar de sincronización. El mensaje indica 90%, pero el auxiliar generado usa los umbrales de limpieza del 80% y actuación intensiva del 92% descritos arriba.",
"howUseBody": "En el flujo automatizado Log2RAM se instala sin intervención al detectar un disco raíz SSD/NVMe. El personalizable pregunta por el tamaño, el intervalo de sincronización y si activar la vigilancia. Los cambios se aplican en el siguiente arranque.",
"verifyLabel": "Verificar y gestionar desde la shell:",
"verifyCode": "# Service state and configured timers\nsystemctl status log2ram\nsystemctl list-timers log2ram*\n\n# Current ramdisk usage — /var/log IS the tmpfs itself\ndf -h /var/log\n\n# Force a sync now (tmpfs → disk); does NOT shrink the tmpfs\nlog2ram write\n\n# Trigger the auto-sync guard on demand (vacuum + sync when usage is high)\n/usr/local/bin/log2ram-check.sh\n\n# Current config: SIZE, mail settings, path\ncat /etc/log2ram.conf\n\n# ProxMenux-specific cron jobs\ncat /etc/cron.d/log2ram /etc/cron.d/log2ram-auto-sync\n\n# Recent Log2RAM activity\njournalctl -u log2ram -n 50 --no-pager"
"verifyCode": "# Service state and sync timer\nsystemctl status log2ram\nsystemctl list-timers log2ram-daily.timer\n\n# Ramdisk usage — /var/log IS the tmpfs itself\ndf -h /var/log\n\n# Folders kept on disk, and the journal size\nls -l /var/log | grep -- '->'\njournalctl --disk-usage\n\n# Write the ramdisk to disk now\nsystemctl reload log2ram\n\n# Current configuration\ncat /etc/log2ram.conf\nsystemctl cat log2ram\n\n# Recent Log2RAM activity\njournalctl -u log2ram -n 50 --no-pager"
},
"zram": {
"title": "Activar el perfil de swap con ZRAM",
@@ -125,7 +125,7 @@
},
{
"tool": "Log2RAM",
"restores": "Para y desactiva el servicio y el timer. Purga cron jobs, units systemd, binarios, archivos de configuración y el directorio /var/log.hdd. También desinstala el paquete apt si se instaló por esa vía."
"restores": "Desactiva el servicio y el temporizador y elimina la configuración de ProxMenux para Log2RAM. En el siguiente apagado Log2RAM escribe /var/log en disco; en el siguiente arranque el journal y los registros de tareas vuelven a /var/log y se eliminan los ficheros de Log2RAM."
},
{
"tool": "TRIM automático de ZFS",