一、说明现象原因
1、问题现象,创建文件或者创建目录都只读
touch:cannot touch ‘file.test’ : read-only file system
2、问题说明
当文件系统自身的校验机制发现文件系统存在问题时,为避免文件系统受到进一步的损坏,系统会把文件系统设置为只读。
造成原因:
一般情况是由于系统发现磁盘硬件(Riad卡,硬盘)故障或文件系统中文件被损坏后而采取的保护机制导致的。
为了保护数据不破坏分区中已有内容,Linux在挂载文件系统时会以read-only只读方式加载。
具体问题可能导致:
文件系统错误
磁盘坏道
RAID卡故障
inode资源耗尽
IO繁忙
硬盘背板故障
硬盘线缆故障
HBA卡故障
内核相关硬件驱动bug
FW固件类问题
另:系统没有正常关机,也会导致磁盘出现文件系统错误;
二、排查思路
先重启一下(一般重启都能好,好不了就看下面的)
①、cat /proc/mounts 确认是哪个分区只读(ro状态的)
dmesg |grep error 看报错信息,是I/O错误,还是文件系统错误
cat /var/log/messages 看是否有错误信息
②、mount -o remount rw 挂载点
尝试重新挂载一下,如果不行,往下
③、df -T 查看文件系统版本是ext2/3/4,使用对应的命令:
fsck.ext2/3/4 -y 设备名 (修复文件系统,取消交互)
fsck.ext2/3/4 -n 设备名 (扫描文件系统,不执行操作)
注:fsck扫描文件系统时一定要在单用户模式、修复模式或把设备umount后进行,不然可能会导致文件损坏、丢失。扫描正常运行中的系统,会造成系统文件损坏。