服務器分區變成了read-only system.當碰到這個問題的時候,我的第一反應很可能硬件出現了故障,我使用了如下的方法來檢測和排除故障:
- 使用dmesg檢查是否有關於磁盤錯誤的信息,果不其然發現大量磁盤扇區錯誤的信息,如下: end_request: I/O error, dev 03:06 (sda), sector
- 從上面的輸出我們判定扇區可能出現了問題,使用badblocks -s -v -o /root/badblocks.log /dev/sda 檢查硬盤是否產生壞道並輸出到badblocks.log中。log大約是這樣的模式:64039224 64039240 64039241 64039242 64039243 64039256 64039257 64039258
64039259 687056 - 可修復修復壞道修復方法:1 使用 badblocks -s -w /dev/sda END START END代表需要修復的扇區末端,START代表需要修復的扇區起始端。2 使用fsck -a /dev/sda1
磁盤壞道分為三種:0磁道壞道,邏輯壞道,硬盤壞道。其中邏輯壞道可以使用上面的方法修復,0磁道壞道的修復方法是隔離0磁道,使用fdsk划分區的時候從1磁道開始划分區。如果是硬盤壞道的話,只能隔離不能修復。硬盤壞道的監測方法:使用上述方法檢測修復后,再使用badblocks -s -v -o /root/badblocks.log /dev/sda監測看是否還有壞道存在,如果壞道還是存在的話說明壞道屬於硬盤壞道。硬盤壞道隔離方法,首先記錄監測出的硬盤壞道,然后分區的時候把硬盤壞道所在的扇區分在一個分區(大小一般大於壞扇區大小),划分出的壞道分區不使用即可達到隔離的目的。隔離只是暫時方案,建議盡快更換硬盤,因為壞道會擴散,以免以后出現嚴重的數據問題。