Corrigindo erros "Read-only file system" - Remount e fsck
O que "Read-only file system" realmente significa?
Conclusao: Gravacoes sao rejeitadas com
Read-only file system(EROFS). Ou a montagem e intencionalmentero, ou o kernel detectou erros de I/O e rebaixou o filesystem para somente leitura como protecao.
Salvar no vi, um touch ou uma gravacao de log falha assim:
touch: cannot touch '/var/log/app.log': Read-only file system
Ha tres causas amplas. Faca a triagem nesta ordem de prioridade.
- A. Kernel rebaixou para
ropor erro (mais importante) -- o padrao do ext4errors=remount-roautomaticamente muda o filesystem para somente leitura quando detecta erros de I/O ou corrupcao de metadados, como protecao - B. Montagem
rointencional -- uma entradaroem/etc/fstab, um CD-ROM/SquashFS, ou um volume de container somente leitura - C. Corrupcao do filesystem -- inconsistencias que precisam de fsck; geralmente aparece via A
A decisao-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?
Conclusao: Confirme que o alvo esta realmente
rocomfindmnt, depois usedmesgpara identificar por que ficou ro -- um erro de I/O, corrupcao de metadados, ou apenas configuracao. Nunca grave de volta antes de saber a causa.
1. Confirmar que esta realmente em somente leitura
findmnt -o TARGET,SOURCE,FSTYPE,OPTIONS /
TARGET SOURCE FSTYPE OPTIONS / /dev/sda1 ext4 ro,relatime,errors=remount-ro
Se OPTIONS comeca com ro, esta em somente leitura. Voce tambem pode ler /proc/mounts diretamente.
grep ' / ' /proc/mounts
2. Descobrir o motivo com dmesg
Este e o coracao da triagem. Se erros de I/O de hardware aparecem aqui, isso determina seu proximo 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 -> corrupcao; fsck necessario (abaixo) - Nada aparece ->
ropor configuracao; 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-gravacao? (remount)
Conclusao: Para casos de configuracao ou transitorios leves,
mount -o remount,rw /restaura imediatamente. Mas quando a causa e um erro de I/O ou corrupcao, gravar de volta e perigoso -- faca isso apenas apos a verificacao dodmesg.
Execute isso apenas depois de confirmar que a causa e uma entrada ro no fstab ou um transitorio sem erros de I/O.
sudo mount -o remount,rw /
Para uma particao especifica, 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 e sinal de erro de I/O ou corrupcao subjacente -- nao tente novamente cegamente; prossiga para diagnostico de fsck/disco.
remount,rw sobre corrupcao suspeita piora a situacao. Continuar gravando enquanto montado adiciona mais gravacoes sobre metadados corrompidos e pode tornar irrecuperavel. Se voce vir erros de I/O, evacue dados importantes enquanto ainda em somente leitura, depois repare.
Como reparar um filesystem corrompido? (fsck)
Conclusao: 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 recuperacao.
Por que voce nao 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 paginas e destroi dados. E desaconselhado mesmo quando montado ro. Sempre desmonte, ou faca boot do root a partir de um ambiente separado.
Particoes nao-root
sudo umount /dev/sdb1 sudo fsck -y /dev/sdb1
-y: responder sim automaticamente (evita uma enxurrada de prompts)-f: forcar verificacao mesmo se marcado como limpo- para
ext4, isso invocafsck.ext4(=e2fsck)
O filesystem root
Root nao pode ser desmontado enquanto em execucao. Repare de uma das duas formas.
- Boot a partir de um Live USB / midia de recuperacao -> execute
fsck -y /dev/sda1com root desmontado - Agendar um fsck automatico no proximo 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 e desanexar o volume EBS, anexa-lo a outra instancia e executar fsck la. Verifique o log do console serial (o equivalente do dmesg) tambem.
Apos o reparo, verifique que voce consegue montar e gravar.
sudo mount /dev/sdb1 /mnt && touch /mnt/.write-test && rm /mnt/.write-test
Quando suspeitar de falha de disco?
Conclusao: Se o
dmesgmostraI/O errorou numeros de setor, falha fisica e provavel. Verifique a saude comsmartctl, e se o disco estiver degradando, priorize a evacuacao de dados sobre o fsck.
Se voce observou erros de I/O de hardware no dmesg, verifique a saude 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 -> degradacao fisica; fsck e apenas um paliativo- Neste estagio, qualquer gravacao (incluindo as gravacoes de reparo do fsck) pode ser o golpe final. Faca 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 copia evacuada.
Como prevenir recorrencia?
Conclusao:
errors=remount-roe um design de seguranca que expoe falhas em vez de esconde-las. Mantenha-o, e adicione monitoramento SMART mais monitoramento de espaco livre/inodes para detectar problemas antes de ficar ro.
- Mantenha
errors=remount-ro: o padrao do ext4. Enfraquecer paraerrors=continueesconde corrupcao 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 gravacao por esgotamento sao um problema diferente -- veja Investigando No space left on device e Lidando com esgotamento de inodes
- fsck periodico: defina uma verificacao automatica 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 verificacao da causa e a unica coisa que previne desastres.