Read-only file system
O nome do erro já diz tudo: um programa não consegue gravar no disco porque o disco está em modo “somente leitura” ou porque o programa está rodando com permissões de escrita restritas.
Como esse erro aparece no Astra
Seção intitulada “Como esse erro aparece no Astra”Os casos mais comuns em que esse erro ocorre:
- Quando o Astra inicia pela primeira vez e tenta salvar a configuração inicial
- Ao salvar mudanças na interface web
No log, você verá um erro assim:
failed to save config /etc/astra/astra.conf [Read-only file system]Sistema de arquivos montado como somente leitura de propósito
Seção intitulada “Sistema de arquivos montado como somente leitura de propósito”Em alguns casos, o sistema de arquivos pode ter sido montado em modo somente leitura de propósito. Isso acontece com sistemas live USB, modos de recuperação ou alguns sistemas embarcados.
Como verificar
Seção intitulada “Como verificar”Você pode verificar se um sistema de arquivos está montado como somente leitura executando:
mount | grep ' / 'Procure pela opção ro (read-only) na saída. Exemplo:
/dev/sda1 on / type ext4 (ro,relatime)Se você ver ro nas opções, o sistema de arquivos é somente leitura.
Você também pode verificar com:
cat /proc/mounts | grep ' / 'Como corrigir
Seção intitulada “Como corrigir”Para remontar o sistema de arquivos raiz com permissão de leitura e escrita:
mount -o remount,rw /Essa mudança pode não continuar depois de reiniciar. Para deixá-la permanente, verifique o arquivo /etc/fstab e confirme que o sistema de arquivos raiz não está configurado para montar como somente leitura. O quarto campo do /etc/fstab não deve conter ro.
Mudança automática para somente leitura
Seção intitulada “Mudança automática para somente leitura”Os sistemas de arquivos do Linux podem mudar automaticamente para o modo somente leitura quando erros críticos são detectados. Esse é um mecanismo de proteção para evitar a corrupção dos dados.
Causas da mudança automática
Seção intitulada “Causas da mudança automática”As causas mais comuns são:
- Erros de disco: problemas físicos no disco, como setores defeituosos ou falha de hardware
- Corrupção do sistema de arquivos: erros na estrutura do sistema de arquivos detectados durante o funcionamento
- Erros de I/O: problemas de comunicação com o dispositivo de armazenamento
- Degradação de RAID: quando um array RAID entra em estado degradado
Como verificar
Seção intitulada “Como verificar”Verifique os logs do sistema em busca de erros de disco ou do sistema de arquivos:
dmesg | grep -i "read-only"Ou:
journalctl -xe | grep -i "read-only"Procure mensagens sobre erros de I/O, erros do sistema de arquivos ou remontagem:
EXT4-fs error: remounting filesystem read-onlyI/O error, dev sda, sector 12345Você também pode verificar os dados SMART do disco:
smartctl -a /dev/sdaProcure setores realocados, setores pendentes ou outros indicadores de falha do disco.
Isolamento por mount namespace
Seção intitulada “Isolamento por mount namespace”Um processo pode estar rodando em um ambiente em que o sistema de arquivos foi restringido de propósito com mount namespaces. Isso é comum em ambientes com contêineres ou com alguns frameworks de segurança. Se você se deparar com essa situação e souber o que são mount namespaces, você já sabe como lidar com ela.
Parâmetro ProtectSystem do systemd
Seção intitulada “Parâmetro ProtectSystem do systemd”O parâmetro ProtectSystem nos arquivos de serviço do systemd pode restringir o acesso de escrita a certos diretórios.
Sobre o ProtectSystem
Seção intitulada “Sobre o ProtectSystem”A opção ProtectSystem torna partes do sistema de arquivos somente leitura para o serviço:
ProtectSystem=strict- torna todo o sistema de arquivos somente leitura, exceto/proc,/deve/sysProtectSystem=full- torna/usr,/boote/efisomente leituraProtectSystem=yes- torna/usre/bootsomente leitura
O próprio Astra (quando inicializado com astra init) não usa esse parâmetro no seu arquivo de serviço. Porém, se o Astra for iniciado por outro serviço de monitoramento de processos, como o monit, o arquivo de serviço dessa ferramenta de monitoramento pode incluir o ProtectSystem.
Como corrigir
Seção intitulada “Como corrigir”Verifique o arquivo de serviço do systemd que inicia o Astra ou o serviço de monitoramento:
systemctl cat astraOu, se o Astra for iniciado por outro serviço, como o monit:
systemctl cat monitProcure por ProtectSystem na seção [Service]. Se estiver presente, remova ou defina como false:
[Service]ProtectSystem=falseDepois de editar o arquivo de serviço, recarregue o systemd e reinicie o serviço:
systemctl daemon-reloadsystemctl restart astra