看板 Linux 關於我們 聯絡資訊
因為在等程式跑出來的結果,所以偷空來 post 一下 :-)) 以下是我的一個 Linux 急救的經驗,說出來與大家分享。那是一個晚上, 我在電腦前快睡著了,神智不清的情況下,以 root 身分不小心操作失誤 導至。那時我已將軟碟 mount 上來 (我的軟碟是 ext2 filesystem),剛 剛才將我寫一個晚上的程式 cp 上去準備明天早上到學校繼續努力。結果, 我在還沒 umount 前,手去碰了一下軟碟機的磁片取出按扭。磁片沒有抽 出來,因為我突然驚覺還沒 umount, 急忙縮手,但磁片必竟還是動了一下。 這下完了,已經與整片磁片抽出無異了。系統接下來已無法正確操作軟碟機 (會 read/write error), 還好還能 umount。更慘的是 (或說,我更不應該 的是),第一次我 umount 成功了,就應該馬上 shutdown 重開,卻見到我 有一個檔忘了 cp 到軟碟,又試圖重新 mount 軟碟,想將那個檔案拷過去。 結果那個 mount 指令就 hang 住了,打 ps 一看,變成了 zombie .... 這讓我想起了很久以前的惡夢,也是沒有 umount 就抽出磁片,結果系統 整個大亂。先是 umount/mount 沒有作用,接著 sync 指令也會 hang 住, 更慘的是 shutdown 也沒有作用,用 ps 來看只見 zombie process 越來 越多,最後的下場就是按下 reset, 然後求神保祐 (因為連 sync 都掛了, 所以真的要求神保祐 ....) 而現在,尚在症狀初期,系統已有兩個 zombie, 一個就是 mount 軟碟的 指令,另一個就是 sync。於是我開始了以下的搶救步驟: 1. 系統其他部分似乎還很正常,於是我用 modem ppp 連線,先將我辛苦一個 晚上的程式先傳到學校再說。 2. 我離開 X-Window, 打 ps -ax 列出所有的 process, 用 kill 將所有的 process 一個個砍掉,就連 inetd, syslogd 也不例外,簡單地說,就是 「手動」進入 single user mode。有人會問為什麼不直接打 telinit s 就好了?因為現在系統已不太對勁了,我很怕在進入 single user mode 的過程中,可能那個 script 的動作又會 hang 住,變成 zombie process, 所以才手動一個個砍。 3. 然後我試圖 umount 硬碟的 filesystem, 我的 partition 如下 Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda1 694695 584419 74393 89% / /dev/hda2 247871 47904 187166 20% /var /dev/hda3 595195 518024 46427 92% /home /dev/hdb1 1211511 871568 277348 76% /opt 我先 umount /opt 與 /var, 幸好都可以 umount, 要 umount /var 要注 意,必須確定所有的 system daemon 都 kill 掉了,才能 umount 成功。 因為 system daemon 常常讀寫 /var/log 的檔案,只要有任何程式在使用 檔案,就無法 umount。 4. 因為我出事的那一刻是在 /home partition 下的,也就是 mount, sync 等指令是在 /home partition 下執行的,因此,除非這兩個 process 完 全結束,才能 umount 這個 partition。然而,這兩個 process 正以 zombie 的姿態掛在那裏,也無法 kill 掉,所以,我將這 partition mount 成 read-only: mount -o remount,ro /home 幸好這樣子還沒問題。 5. 最後, / partition 也 mount read-only: mount -o remount,ro / 6. 按下 reset 重開機。由於我這時所有的 partition 不是 umount 了就是 已 mount read-only, 所以理論上這時按下 reset 重開對於 filesystem 完全沒有損壞。事實上也是如此,重開的過程中, filesystem 完全不需 要 check, 一下子,系統就正常了。 以上就是一個很簡單的系統搶救經驗,提供給大家參考 :-)) -- ─── 居 士 ─── <[email protected]> Welcome to XCIN Project: http://xcin.linux.org.tw -- ※ Origin: 臺大電機 Maxwell 站 ◆ From: twcpro.phys.ntu.edu.tw