Corrigindo erros "Read-only file system" - Remount e fsck
O que "Read-only file system" realmente significa?
Conclusão: Gravações são rejeitadas com
Read-only file system(EROFS). Ou a montagem é intencionalmentero, ou o kernel detectou erros de I/O e rebaixou o filesystem para somente leitura como proteção.
Salvar no vi, um touch ou uma gravação de log falha assim:
touch: cannot touch '/var/log/app.log': Read-only file system
Há três causas amplas. Faça a triagem nesta ordem de prioridade.
- A. Kernel rebaixou para
ropor erro (mais importante) -- o padrão do ext4errors=remount-roautomaticamente muda o filesystem para somente leitura quando detecta erros de I/O ou corrupção de metadados, como proteção - B. Montagem
rointencional -- uma entradaroem/etc/fstab, um CD-ROM/SquashFS, ou um volume de container somente leitura - C. Corrupção do filesystem -- inconsistências que precisam de fsck; geralmente aparece via A
A decisão-chave primeiro: no caso A, o disco pode estar falhando por baixo. Antes de gravar novamente com remount,rw, sempre verifique o dmesg para erros de I/O de hardware.
Como verificar o estado atual?
Conclusão: Confirme que o alvo está realmente
rocomfindmnt, depois usedmesgpara identificar por que ficou ro -- um erro de I/O, corrupção de metadados, ou apenas configuração. Nunca grave de volta antes de saber a causa.
1. Confirmar que está realmente em somente leitura
findmnt -o TARGET,SOURCE,FSTYPE,OPTIONS /
TARGET SOURCE FSTYPE OPTIONS / /dev/sda1 ext4 ro,relatime,errors=remount-ro
Se OPTIONS começa com ro, está em somente leitura. Você também pode ler /proc/mounts diretamente.
grep ' / ' /proc/mounts
2. Descobrir o motivo com dmesg
Este é o coração da triagem. Se erros de I/O de hardware aparecem aqui, isso determina seu próximo passo.
dmesg -T | grep -iE 'ext4-fs|i/o error|remount|read-only|critical'
[Thu Jun 5 09:12:44 2026] EXT4-fs error (device sda1): ext4_journal_check_start:84: Detected aborted journal [Thu Jun 5 09:12:44 2026] EXT4-fs (sda1): Remounting filesystem read-only [Thu Jun 5 09:12:43 2026] blk_update_request: I/O error, dev sda, sector 12869632
I/O error/blk_update_requestpresente -> suspeitar de falha de disco (abaixo)- Apenas
EXT4-fs error, sem erro de I/O de hardware -> corrupção; fsck necessário (abaixo) - Nada aparece ->
ropor configuração; verifique/etc/fstab
journalctl -k -b mostra o mesmo log do kernel. Diferente do dmesg, que limpa no reboot, pode acessar boots anteriores (-b -1, etc.).
Como voltar para leitura-gravação? (remount)
Conclusão: Para casos de configuração ou transitórios leves,
mount -o remount,rw /restaura imediatamente. Mas quando a causa é um erro de I/O ou corrupção, gravar de volta é perigoso -- faça isso apenas após a verificação dodmesg.
Execute isso apenas depois de confirmar que a causa é uma entrada ro no fstab ou um transitório sem erros de I/O.
sudo mount -o remount,rw /
Para uma partição específica, nomeie o alvo explicitamente.
sudo mount -o remount,rw /var
Em caso de sucesso, as OPTIONS do findmnt mudam para rw. Se remount,rw falhar com EROFS ou cannot remount ... read-write, isso é sinal de erro de I/O ou corrupção subjacente -- não tente novamente cegamente; prossiga para diagnóstico de fsck/disco.
remount,rw sobre corrupção suspeita piora a situação. Continuar gravando enquanto montado adiciona mais gravações sobre metadados corrompidos e pode tornar irrecuperável. Se você vir erros de I/O, evacue dados importantes enquanto ainda em somente leitura, depois repare.
Como reparar um filesystem corrompido? (fsck)
Conclusão: Execute
fsckapenas quando o filesystem estiver desmontado. Executarfsckem um filesystem montado piora o dano. Repare root a partir de um Live USB ou modo de recuperação.
Por que você não deve executar fsck em um filesystem montado
O fsck reescreve blocos diretamente. Reescrever um filesystem montado (especialmente rw) por baixo do kernel dessincroniza do cache de páginas e destrói dados. É desaconselhado mesmo quando montado ro. Sempre desmonte, ou faça boot do root a partir de um ambiente separado.
Partições não-root
sudo umount /dev/sdb1 sudo fsck -y /dev/sdb1
-y: responder sim automaticamente (evita uma enxurrada de prompts)-f: forçar verificação mesmo se marcado como limpo- para
ext4, isso invocafsck.ext4(=e2fsck)
O filesystem root
Root não pode ser desmontado enquanto em execução. Repare de uma das duas formas.
- Boot a partir de um Live USB / midia de recuperação -> execute
fsck -y /dev/sda1com root desmontado - Agendar um fsck automático no próximo boot e reiniciar
# Forcar fsck no proximo boot (systemd): passe como parametro do kernel # fsck.mode=force # Inspecionar o agendamento baseado em contagem de montagens sudo tune2fs -l /dev/sda1 | grep -i 'mount count'
Em VMs na nuvem (ex.: AWS EC2), se root ficar ro, o caminho seguro é desanexar o volume EBS, anexá-lo a outra instância e executar fsck lá. Verifique o log do console serial (o equivalente do dmesg) também.
Após o reparo, verifique que você consegue montar e gravar.
sudo mount /dev/sdb1 /mnt && touch /mnt/.write-test && rm /mnt/.write-test
Quando suspeitar de falha de disco?
Conclusão: Se o
dmesgmostraI/O errorou números de setor, falha física é provável. Verifique a saúde comsmartctl, e se o disco estiver degradando, priorize a evacuação de dados sobre o fsck.
Se você observou erros de I/O de hardware no dmesg, verifique a saúde do disco antes de reparar qualquer coisa.
sudo smartctl -a /dev/sda | grep -iE 'health|reallocated|pending|uncorrect'
SMART overall-health self-assessment test result: FAILED! 5 Reallocated_Sector_Ct 0x0033 100 100 010 - 384 197 Current_Pending_Sector 0x0012 100 100 000 - 16
FAILED, ouReallocated_Sector_Ct/Current_Pending_Sectorcrescentes -> degradação física; fsck é apenas um paliativo- Neste estágio, qualquer gravação (incluindo as gravações de reparo do fsck) pode ser o golpe final. Faça backup em somente leitura com
dd/rsyncprimeiro.
fsck em um disco com SMART degradado pode causar perda total ao gravar em setores defeituosos. Se os dados importam, prefira substituir o disco e restaurar a partir da cópia evacuada.
Como prevenir recorrência?
Conclusão:
errors=remount-roé um design de segurança que expõe falhas em vez de escondê-las. Mantenha-o, e adicione monitoramento SMART mais monitoramento de espaço livre/inodes para detectar problemas antes de ficar ro.
- Mantenha
errors=remount-ro: o padrão do ext4. Enfraquecer paraerrors=continueesconde corrupção e amplia o dano - Monitore com
smartd(smartmontools): receba alertas sobre contagens crescentes de setores defeituosos antes de ficar ro - Monitore capacidade e esgotamento de inodes: falhas de gravação por esgotamento são um problema diferente -- veja Investigando No space left on device e Lidando com esgotamento de inodes
- fsck periódico: defina uma verificação automática baseada em contagem de montagens com
tune2fs -c <N>
Fluxo mais curto: (1) confirmar ro com findmnt -> (2) identificar a causa com dmesg -> (3) erro de I/O presente = smartctl + evacuar; ausente = remount,rw ou fsck (desmontado). Nunca pular a verificação da causa é a única coisa que previne desastres.