温馨提示×

为何linux mount只读

小樊
42
2026-09-02 07:48:54
栏目: 智能运维

在 Linux 中,执行 mount 后文件系统以只读(read-only,ro)方式挂载,通常由以下几类原因造成。下面按常见程度排查思路说明。


一、文件系统本身有问题(最常见)

1. 文件系统错误,内核自动以只读保护

当 ext4 / xfs / btrfs 等文件系统检测到严重错误时,内核会主动将其切换为只读,防止数据损坏。

检查方式:

dmesg | tail

常见日志:

EXT4-fs error (device sdb1): ...
Remounting filesystem read-only

解决:

  • 卸载后修复:
umount /dev/sdb1
fsck -y /dev/sdb1
mount /dev/sdb1 /mnt

二、mount 时显式指定了只读

1. 手动挂载时用了 ro

mount -o ro /dev/sdb1 /mnt

2. /etc/fstab 中写了 ro

/dev/sdb1  /mnt  ext4  ro  0 0

解决:

  • 重新挂载为读写:
mount -o remount,rw /mnt

或修改 fstab 中的 rorw


三、存储设备本身是只读的

1. 光盘 / ISO

/dev/sr0  on  /mnt  type iso9660 (ro)

2. SD 卡 / U 盘有物理写保护开关

  • SD 卡侧边写保护
  • 某些工业级 eMMC 被锁

检查:

cat /proc/cmdline
lsblk -o NAME,RO

四、块设备被标记为只读

1. 设备级别只读

blockdev --getro /dev/sdb1

返回 1 表示只读。

可能原因:

  • 存储控制器故障
  • iSCSI / NAS 端设置为只读
  • 内核或驱动 bug

五、系统进入“紧急/维护模式”

当根文件系统(/)挂载失败时,系统可能:

mount: / is read-only

原因:

  • 根分区损坏
  • 内核参数错误
  • initramfs 问题

解决:

  • 使用 Live CD 修复根分区
  • 检查 /etc/fstab

六、Overlay / 容器 / 特殊文件系统

1. OverlayFS 下层只读(正常)

Docker、Kubernetes 中:

overlay on /var/lib/docker/overlay2 ... (ro)

这是预期行为

2. 安全加固

  • SELinux
  • 只读根文件系统(嵌入式设备)

七、快速排查清单(实用)

# 查看挂载选项
mount | grep 你的挂载点

# 查看内核日志
dmesg | tail -n 50

# 查看是否设备只读
lsblk -o NAME,RO,MOUNTPOINT

# 尝试重新挂载
mount -o remount,rw /mnt

总结一句话

Linux 挂载为只读,绝大多数情况是“文件系统出错后的自我保护”或“配置/设备本身只读”。

如果你愿意,可以把:

  • mount 输出
  • dmesg 相关报错
  • /etc/fstab

贴出来,我可以帮你精确定位是哪一类原因。

0