在 CentOS 中,如果某个分区或磁盘被 mount 成只读(read-only),通常是因为文件系统错误、磁盘损坏、或挂载参数设置问题。下面是常见排查与解决方法:
mount | grep 挂载点
例如:
mount | grep /data
如果看到 ro(read-only),说明是只读挂载。
mount -o remount,rw /挂载点
示例:
mount -o remount,rw /data
✅ 如果成功,问题已解决。
❌ 如果提示类似:
mount: cannot remount /dev/sdb1 read-write, is write-protected
说明底层文件系统有问题,继续看下面。
dmesg | tail
或
journalctl -xe
常见错误:
EXT4-fs error (device sdb1): ...
Remounting filesystem read-only
⚠️ 不要在线修复正在使用的分区
umount /data
如果提示 busy:
fuser -m /data
lsof | grep /data
修复(以 ext4 为例):
fsck -y /dev/sdb1
修复完成后重新挂载:
mount /data
smartctl -a /dev/sdb
(需安装 smartmontools)
blockdev --getro /dev/sdb
返回 1 表示只读设备。
如果是 / 变成只读:
mount -o remount,rw /
如果不行,多半是磁盘错误,需要:
fsck如果是 NFS:
mount | grep nfs
确保服务端导出时不是 ro,客户端使用:
mount -t nfs -o rw server:/path /mnt
检查:
cat /etc/fstab
确保没有:
defaults,ro
修改后:
mount -a
| 场景 | 解决 |
|---|---|
| 普通只读 | mount -o remount,rw |
| 文件系统错误 | fsck |
| 根分区只读 | 单用户 / 救援模式 |
| NFS 只读 | 检查服务端 |
| 磁盘损坏 | 替换硬盘 |
如果你愿意,可以把 报错信息 或 mount / dmesg 的输出贴出来,我可以帮你精确判断是哪一种情况。