2009年6月14日 星期日

Ubuntu 9.04 with kernel 2.6.28-11 and ext4 fs crash when remove big file.

先前幫阿尼基灌的系統,遇到了一個很奇怪的問題,就是在刪除大檔的時候,系統會完全崩潰(completely crash)◢▆▅▄▃崩╰(〒皿〒)╯潰▃▄▅▇◣。所以呢,阿尼基只要一刪大檔(A片),然後按下 「清理回收筒」,系統就掛了,只能按下reset鈕重新開機,或是賭氣的直接關電源。而且很奇怪的是,開完機後,回收筒的圖示是顯示成空的,所以阿尼基一直誤以為檔案都有成功刪除。

後來我看了一下回收筒的路徑(~/.local/share/Trash/)裡,有一個叫做expunged的資料夾,這資料夾裡頭放了滿滿的1xxG的大檔,看來之前以為有刪除的檔案通通跑到這邊來了,難怪我看他明明就只有收集了200G左右的大檔,怎麼會500G的硬碟裡面只剩下4xG的空間可以用。

一開始是認為回收筒裡面的檔案太多,所以只要一按清理回收筒,就會當機。後來發現只要是刪除大檔就會當機,跟回收筒裡面有多少東西無關 XD

所以我就懷疑到kernel和FS上了,難不成在Ubuntu 9.04上使用ext4會出代誌嗎?但是我拜了一下估狗,在中文的世界裡頭,似乎沒有人遇到這個問題,一直到今天,我回到自己的電腦上,才估狗到這些東西,總而言之就是ext4的問題,Ubuntu在之後版本的kernel就有上patch解決了。
Ext4 data loss
2.6.28-11:ext4:hald:sys_open:security_file_alloc -> cascade of 'bugs' -> CPU stopped
Soft lockups (freezes) when deleting files from ext4 partitions on 2.6.28
http://kernel.ubuntu.com/~kernel-ppa/mainline/

雖然之前就已經知道ext4在Ubuntu 9.04上會有問題,但是後來也看到已經有patch可以用,所以想說Ubuntu應該會自己更新搞定,可是不知道為啥,更新了一堆東西,kernel就是沒變。而且,這應該是一個非常嚴重的問題才對,但是我在Ubuntu-TW上竟然找不到有人遇到相同的問題,所以說正式版的kernel非常有可能不是2.6.28-11?如果說正式版的kernel版本大於2.6.28-11,那為啥RC版的Ubuntu 9.04不會自動升級kernel?還非得把"不受支援的更新"跟"非正式更新"打開,才能更新到2.6.28-13,而2.6.28-13是不是有解決這個問題,我也還不知道,有待阿尼基去驗證,等到他下次又砍大檔的時候就知道了........

BTW,這篇的標題應該是我Blog上目前為止最長的了,而且可能繼續蟬聯好一段時間 XD