linux文件系统提示:"read-only file system"

read-only file system 通常不是单纯的权限问题,而是 内核把文件系统挂载为只读(ro) 了。


常见原因

  1. 磁盘/文件系统错误

    • 比如 ext4 的 journal 出错,系统会保护性地 remount 为只读。

    • 查看 dmesg / journalctl -xe 常能看到类似:

      EXT4-fs error (device sda1): ext4_journal_check_start:56: Detected aborted journal
      Remounting filesystem read-only
      
  2. 硬件故障

    • 磁盘坏块、SATA/RAID 控制器异常。
    • USB/SD 卡损坏(嵌入式系统常见)。
  3. 手动挂载参数

    • /etc/fstab 或者 mount 命令里用了 ro
  4. 容器或特殊场景

    • Docker/K8s 挂载了只读卷。
    • LiveCD 启动镜像,本身就是只读。

解决思路

1. 临时恢复写入

  • 找到设备:

    1
    mount | grep ' ro,'
  • 尝试重新挂载为 rw

    1
    2
    mount -o remount,rw /
    mount -o remount,rw /data

    ⚠️ 如果是文件系统损坏导致的,只是临时恢复,重启后还是会只读。


2. 检查/修复文件系统

  1. 先进入单用户模式或者救援模式,卸载分区:

    1
    umount /dev/sda1
  2. 运行 fsck:

    1
    fsck -y /dev/sda1
  3. 修复完成后重新挂载。


3. 确认硬件状态

  • 查看 SMART 信息:

    1
    smartctl -a /dev/sda
  • 检查 RAID 卡 / 存储日志,有没有坏盘。


4. 检查系统配置

  • /etc/fstab 是否写了 ro

    UUID=xxxx-xxxx  /  ext4  defaults,rw  0  1
    
  • 确认挂载点不是 read-only 的卷(比如 ConfigMap、K8s secret)。


5. 特殊场景

  • 容器内:确认是不是宿主机挂载了只读卷,可以在 docker runk8s yaml 里去掉 :ro
  • 嵌入式 Linux:有的系统设计就是只读 rootfs,需要用 overlayfs/aufs 提供写层。

总结

  • 临时解决mount -o remount,rw /

  • 根本解决

    • fsck 修复文件系统
    • 检查磁盘 SMART、硬件状态
    • 调整 /etc/fstab 或容器挂载参数