Linux提示只读文件系统怎么办
保存配置、上传文件时出现 Read-only file system,意思是对应写入被只读状态拒绝。它和 Permission denied、磁盘容量不足不是同一回事。先记录完整路径和错误发生时间,不要立即批量改权限、重启或强制改回可写。
从报错路径找到实际挂载
以下是 Linux 主机上的只读检查。/srv/app 是示例目录,应替换为报错文件所在的已存在目录。查看内核日志需要相应权限。
findmnt --target /srv/app --output TARGET,SOURCE,FSTYPE,OPTIONS
df -hT -- /srv/app
df -i -- /srv/app
findmnt 用于确认该路径对应的挂载点、来源、文件系统和选项。看选项中是否有独立的 ro;errors=remount-ro 只是发生错误后的处理策略,不能单凭这几个字认定现在已只读。rw 表示该挂载允许写入,但应用仍可能受其他权限或隔离设置限制。
df 分别看容量与 inode。如果真正报的是“空间不足”,按对应问题处理;扩容或清理文件不会自动修好损坏导致的只读状态。也不要只看根目录,因为业务可能写入另一块盘、绑定挂载或网络文件系统。
只有一个服务报错,要看它自己的环境
宿主机显示可写,但容器内失败时,核对容器根文件系统、数据卷及目录挂载是否被设置为只读。systemd 服务也可能通过文件系统隔离选项限制写入。它们看到的挂载可以与宿主机终端不同,应按该程序的实际运行环境检查。
若是设计上的只读保护,把需要写的数据放到明确允许写入的位置;若是本次部署误加的只读选项,保存旧配置后只修正这一项,再验证所需目录。不要关闭全部隔离,也不要因主机目录存在就直接向另一个同名目录写数据。
突然变只读:先保留内核与磁盘证据
journalctl -k -b -n 120 --no-pager
lsblk --output NAME,TYPE,FSTYPE,SIZE,RO,MOUNTPOINT
关注故障附近的 I/O error、设备超时、EXT4-fs error、日志中止或重新挂载提示。末尾120条没有覆盖事发时间时,应按实际时间段继续查询。lsblk 的 RO 反映块设备只读属性;RO 为 0,不保证上面的文件系统或某个绑定挂载可写。
保存报错时间、挂载来源、文件系统类型和必要日志,写到健康的其他存储或从管理终端保存;不要继续往故障盘写诊断文件。云服务器看到的是虚拟块设备,不能仅凭来宾系统输出就断定物理硬盘损坏,需结合存储层检查。
| 找到的原因 | 处理顺序 |
|---|---|
| 挂载、容器或服务配置主动设为只读 | 确认设计要求,修正误配或选择专用可写目录,保留原配置便于回退。 |
| 文件系统错误或底层I/O异常 | 先控制写入、保留证据并保护数据,再安排存储检查和适用的离线修复。 |
| 网络文件系统或远端共享只读 | 同时核对服务端导出策略和客户端挂载;只改本机权限通常无效。 |
需要修复时,先确认数据和设备
有重要数据且尚可读取时,优先确认已有备份,并把必要数据保存到健康的独立位置。持续出现读取错误时,不要反复全盘扫描或复制施压,应先确定数据保护与存储处理方案;快照也不能直接视为已经验证可恢复的备份。
文件系统检查必须匹配实际类型和设备。不要对仍挂载使用的文件系统执行修复;即使某些只读检查选项允许运行,其结果也可能受在线变化影响。系统盘通常需要维护或救援环境,数据盘要先停用相关写入并确认已卸载。核对设备标识和挂载关系后再操作,不能照抄其他机器的设备名。
ext4、XFS 等修复工具和参数不同。本文不提供一条自动确认所有修复的通用命令,也不把强制重新挂载为可写作为第一步。若近期是配置变更引起,只恢复本次误改;发现存储异常则不能靠反复切换挂载状态掩盖问题。
恢复后怎样确认
底层原因处理完、目标目录允许写入后,使用业务实际账户,在指定测试目录创建临时文件、写入短文本、读回并删除。随后验证原来的业务操作,观察是否再次出现只读或I/O错误。需要从备份恢复时先在隔离位置验证,并处理恢复点之后的新数据,避免直接覆盖正式目录。
延伸阅读:Linux已有数据盘挂载与fstab配置;Linux磁盘满了:容量、inode与占用排查;误删或误覆盖后如何安全恢复备份。