今天在公司發佈新版本時,發佈腳本忽然報Read-only file system的錯誤,以前一直還用的好好的…登陸到遠程服務器上,發現只要涉及到修改/保存條目等須要寫磁盤操做的命令都沒法使用(如tar、cp、mv、rm、chmod、chown、wget下載等指令),老是提示Read-only file system,也就是說系統是隻讀的,什麼也寫不了。 服務器
查看了機器上的/etc/fstab文件,在其中發現這樣的同樣記錄(注意errors=remount-ro段): code
1 |
/dev/sda1 / ext3 errors=remount-ro 0 1 |
這種狀況一般都是因爲系統發現磁盤硬件故障或文件系統中文件被損壞以後而採起的保護機制致使的。爲了保護數據不破壞分區中已有內容,Linux在掛載文件系統時就只用read-only只讀方式加載了。至於掛載的文件系統爲何會莫名地變成以只讀方式掛載的具體緣由,這就不知道了。可能的緣由有: rem
1 2 3 |
系統文件損壞; 磁盤有壞道; fstab文件配置錯誤,如分區格式錯誤錯誤(將ntfs寫成了fat)、配置指令拼寫錯誤等。 |
若是可以確認數據和系統的文件沒有被損壞,修復fstab文件配置後只要從新R/W加載或reboot就可以恢復正常。 get
1 2 |
#以讀寫方式從新掛載文件系統 mount -o remount rw / |
若是機器上有重要文件,在從新加載文件系統前能夠用scp命令將其備份到遠程主機上: table
1 |
scp -r import_dir/import_file user@host:backup_dir |
之因此使用scp -r命令備份重要目錄/文件到遠程主機上,而不用tar命令打包壓縮後再傳輸,由於在用tar命令打包壓縮文件/目錄時會涉及到寫磁盤操做,這會引發Read-only file system的錯誤。 import
若是是文件系統有問題,那就須要在umount狀態下執行fsck命令來檢查文件系統並修復文件系統中的錯誤。 登錄
1 2 3 |
nohup fsck -y /dev/VolGroup00/LogVol00 > /dev/shm/fscklog & # 檢查好後重啓 reboot |
若是是磁盤硬件損壞,最好的方法就是直接換一個新硬盤。若是你以爲舊硬盤扔了惋惜,還能夠將它低格以後,再從新安裝系統,系統從新安裝後,磁盤會從新分區。 打包
若是僅僅是想將數據備份出來並且機器又在身邊的話,你能夠用live-cd從光盤啓動系統,而後直接備份。固然此時你也能夠修改硬盤中的配置文件,如/etc/fstab。 配置