活到老学到老  

记录遇到问题的点点滴滴。

Read-only file system的错误

8年前发布  · 2395 次阅读
  fstab 

今天在公司发布新版本时,发布脚本突然报Read-only file system的错误,之前一直还用的好好的…登录到远程服务器上,发现只要涉及到修改/保存条目等需要写磁盘操作的命令都无法使用(如tar、cp、mv、rm、chmod、chown、wget下载等指令),总是提示Read-only file system,也就是说系统是只读的,什么也写不了。

查看了机器上的/etc/fstab文件,在其中发现这样的一样记录(注意errors=remount-ro段):

/dev/sda1       /               ext3    errors=remount-ro 0       1


这种情况通常都是由于系统发现磁盘硬件故障或文件系统中文件被损坏之后而采取的保护机制导致的。为了保护数据不破坏分区中已有内容,Linux在挂载文件系统时就只用read-only只读方式加载了。至于挂载的文件系统为什么会莫名地变成以只读方式挂载的具体原因,这就不知道了。可能的原因有:

系统文件损坏;  磁盘有坏道;  fstab文件配置错误,如分区格式错误错误(将ntfs写成了fat)、配置指令拼写错误等。

如果能够确认数据和系统的文件没有被损坏,修复fstab文件配置后只要重新R/W加载或reboot就能够恢复正常。

以读写方式重新挂载文件系统  

mount -o remount rw /

如果机器上有重要文件,在重新加载文件系统前可以用scp命令将其备份到远程主机上:

scp -r import_dir/import_file user@host:backup_dir

之所以使用scp -r命令备份重要目录/文件到远程主机上,而不用tar命令打包压缩后再传输,因为在用tar命令打包压缩文件/目录时会涉及到写磁盘操作,这会引起Read-only file system的错误。

如果是文件系统有问题,那就需要在umount状态下执行fsck命令来检查文件系统并修复文件系统中的错误。

nohup fsck -y /dev/VolGroup00/LogVol00 > /dev/shm/fscklog &  # 检查好后重启  reboot

如果是磁盘硬件损坏,最好的方法就是直接换一个新硬盘。如果你觉得旧硬盘扔了可惜,还可以将它低格之后,再重新安装系统,系统重新安装后,磁盘会重新分区。

如果仅仅是想将数据备份出来而且机器又在身边的话,你可以用live-cd从光盘启动系统,然后直接备份。当然此时你也可以修改硬盘中的配置文件,如/etc/fstab。