Sistema de archivos de solo lectura
El nombre del error lo dice todo: un programa no puede escribir en el disco porque el disco está en modo “solo lectura”, o el programa se está ejecutando con permisos restringidos de escritura.
Cómo aparece este error en Astra
Sección titulada «Cómo aparece este error en Astra»Los escenarios más comunes donde ocurre este error:
- Cuando Astra se inicia por primera vez e intenta guardar la configuración inicial
- Al guardar cambios en la interfaz web
En el registro, verás un error como este:
failed to save config /etc/astra/astra.conf [Read-only file system]Sistema de archivos montado intencionalmente como solo lectura
Sección titulada «Sistema de archivos montado intencionalmente como solo lectura»En algunos casos, el sistema de archivos puede estar montado deliberadamente en modo solo lectura. Esto puede suceder en sistemas live USB, modos de recuperación o ciertos sistemas embebidos.
Cómo comprobarlo
Sección titulada «Cómo comprobarlo»Puedes verificar si un sistema de archivos está montado como solo lectura ejecutando:
mount | grep ' / 'Busca la opción ro (solo lectura) en la salida. Ejemplo:
/dev/sda1 on / type ext4 (ro,relatime)Si ves ro en las opciones, el sistema de archivos es de solo lectura.
También puedes comprobarlo con:
cat /proc/mounts | grep ' / 'Cómo solucionarlo
Sección titulada «Cómo solucionarlo»Para volver a montar el sistema de archivos raíz como lectura y escritura:
mount -o remount,rw /Este cambio puede no ser permanente después de reiniciar. Para hacerlo permanente, revisa tu archivo /etc/fstab y asegúrate de que el sistema de archivos raíz no esté configurado para montarse como solo lectura. El cuarto campo en /etc/fstab no debe contener ro.
Transición automática a sistema de archivos de solo lectura
Sección titulada «Transición automática a sistema de archivos de solo lectura»Los sistemas de archivos Linux pueden cambiar automáticamente a modo solo lectura cuando se detectan errores críticos. Este es un mecanismo de protección para evitar la corrupción de datos.
Causas de la transición automática
Sección titulada «Causas de la transición automática»Las causas más comunes incluyen:
- Errores de disco: Problemas físicos con el disco, como sectores defectuosos o fallos de hardware
- Corrupción del sistema de archivos: Errores en la estructura del sistema de archivos detectados durante la operación
- Errores de E/S: Problemas al comunicarse con el dispositivo de almacenamiento
- Degradación de RAID: Cuando un arreglo RAID entra en estado degradado
Cómo comprobarlo
Sección titulada «Cómo comprobarlo»Revisa los registros del sistema en busca de errores de disco o sistema de archivos:
dmesg | grep -i "read-only"O:
journalctl -xe | grep -i "read-only"Busca mensajes sobre errores de E/S, errores de sistema de archivos o remontaje:
EXT4-fs error: remounting filesystem read-onlyI/O error, dev sda, sector 12345También puedes revisar los datos SMART del disco:
smartctl -a /dev/sdaBusca sectores reasignados, sectores pendientes u otros indicadores de fallo de disco.
Aislamiento de espacios de montaje (Mount Namespace)
Sección titulada «Aislamiento de espacios de montaje (Mount Namespace)»Un proceso puede estar ejecutándose en un entorno donde el sistema de archivos ha sido restringido deliberadamente usando espacios de montaje. Esto es común en entornos con contenedores o con ciertos marcos de seguridad. Si te encuentras con esta situación y sabes qué son los espacios de montaje, ya sabes cómo manejarlo.
Parámetro ProtectSystem de systemd
Sección titulada «Parámetro ProtectSystem de systemd»El parámetro ProtectSystem en los archivos de servicio de systemd puede restringir el acceso de escritura a ciertos directorios.
Acerca de ProtectSystem
Sección titulada «Acerca de ProtectSystem»La opción ProtectSystem hace que partes del sistema de archivos sean de solo lectura para el servicio:
ProtectSystem=strict- Hace que todo el sistema de archivos sea de solo lectura excepto/proc,/devy/sysProtectSystem=full- Hace que/usr,/booty/efisean de solo lecturaProtectSystem=yes- Hace que/usry/bootsean de solo lectura
Astra en sí (cuando se inicializa con astra init) no utiliza este parámetro en su archivo de servicio. Sin embargo, si Astra se inicia a través de otro servicio de monitoreo, como monit, el archivo de servicio de esa herramienta de monitoreo puede incluir ProtectSystem.
Cómo solucionarlo
Sección titulada «Cómo solucionarlo»Revisa el archivo de servicio de systemd que inicia Astra o el servicio de monitoreo:
systemctl cat astraO si Astra es iniciado por otro servicio como monit:
systemctl cat monitBusca ProtectSystem en la sección [Service]. Si está presente, elimínalo o configúralo en false:
[Service]ProtectSystem=falseDespués de editar el archivo de servicio, recarga systemd y reinicia el servicio:
systemctl daemon-reloadsystemctl restart astra