日常运维Linux云服务器时,由于系统没有正常关机,导致磁盘出现文件系统错误,文件无法操作,出现只读提示Read-only file system。出现这种情况时,不用慌张,按照本文的操作步骤,即可解除只读状态,恢复系统正常。
注意:此修复可能会导致个别文件及数据丢失,修复之前建议做好重要文件的备份工作。具体修复操作如下:
1、查看分区挂载情况
mount命令用于查看当前已挂载的分区。
[root@localhost ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=388136k,mode=700)
/dev/vdb1 on /home type ext4 (ro,relatime,data=ordered)
如果分区的备注有ro,说明此分区是只读状态。最好同时也检查下/etc/fstab文件,确认一下分区的配置。
2、卸载只读分区
使用umount命令卸载只读状态的分区。
[root@localhost ~]#umount /dev/vdb1
如果提示“device is busy”,需要找到是什么进程造成的busy,比如可执行/etc/init.d/httpd stop等命令停止正在运行的一些服务。fuser -m /home会显示使用这个模块的pid,fuser -mk /home会直接终止那个pid。
3、修复磁盘文件
使用fsck命令修复异常的磁盘分区
[root@localhost ~]#fsck -fvy /home
4、重新挂载分区
修复成功后,使用remount或者是mount -a命令重新挂载分区。
[root@localhost ~]# mount -o rw,remount /home
5、重新启动服务
最后启动之前停止的服务/etc/init.d/httpd start,也可执行reboot命令重启下服务器让系统自动启动运行的服务。