2010年7月15日 星期四

kernel: EXT3-fs error (device dm-4): ext3_lookup: unlinked inode 58079497 in dir #58073509

昨天要下班前發現架設的網站登不進去,第一個想到的是table的錯誤,但事情不是憨人想的那麼簡單,repaire table後情況依舊。查看log檔才知道是檔案系統出錯了,導致磁碟變成read only,所以session檔寫不進硬碟,造成無法登入的情況。

Jul 14 17:37:54 myhost kernel: Aborting journal on device dm-4.
Jul 14 17:37:54 myhost kernel: __journal_remove_journal_head: freeing b_committed_data
Jul 14 17:37:54 myhost kernel: EXT3-fs error (device dm-4): ext3_lookup: unlinked inode 58078839 in dir #58073509
Jul 14 17:37:54 myhost kernel: ext3_abort called.
Jul 14 17:37:54 myhost kernel: EXT3-fs error (device dm-4): ext3_journal_start_sb: Detected aborted journal
Jul 14 17:37:54 myhost kernel: Remounting filesystem read-only

所以咧,第一個想到要用的指令就是e2fsck
它可以下參數-a自動修復,另外要注意使用前要把partition umount,如果是根目錄壞掉的話,只好進入single user mode囉(還好我都有分割的好習慣XD)

# e2fsck -a /dev/vg_data/lv_data
我是用lvm所以磁碟路徑是長這樣@@;

會出現錯誤其實是我手賤,測試伺服器直接mount正式伺服器的data partition在跑,結果也有寫入session的關係,在測試伺服器下線還是怎樣後,新增加session檔的inode發生錯誤,系統強制將partition轉為read only,才導致這次的事件發生。
因為session其實是紀錄client的狀態,當很多client端同時上線時就有可能會造成io wait(雖然寫的檔都很小),所以這次索性將session資料夾mount到tmpfs上,以ramdisk的型式在跑或多或少可以加快速度。

# mount -t tmpfs tmpfs /session

要注意的是因為是寫在記憶體裡,重開機就不見囉!!
不過session不見也還好,沒什麼關係。
--
參考網站
http://www.centos.org/modules/newbb/viewtopic.php?topic_id=17036
http://www.hkcode.com/linux-bsd-notes/178
http://plog.longwin.com.tw/my_note-unix/2006/01/08/ram_disk_build_method

沒有留言:

張貼留言