Nov 172013
 

Linux的宣傳文章一直以來都在強調Linux的ext 2/3/4「不會產生磁碟碎片」,因此「不需要磁碟碎片整理」。無論是兩岸還是全世界,都有這樣的說法,在中文世界更為常見。在中文版Google中搜尋「Linux 磁碟碎片整理」(或者「Linux 磁盤碎片整理」),通常都會見到不少「解釋」性的文章,說Linux「足夠優秀得不會產生磁盤碎片」,或者「有優秀的機制盡量避免碎片產生」。但對此懷疑的人難道就沒有嗎?當然不是,衹不過持懷疑觀點的人不知道如何解釋。若在英文版Google中搜尋「linux defrag」同樣可以見到類似的文章,但有一點不同,那就是可以找到碎片整理工具!它的名字叫做「Linux File-system defragmenter」,可以在sourceforge.net找到(下文亦會提到)。

ext 2/3/4都是Linux最常用的FS (File System,檔案系統/文件系統),ext 2於1993年1月正式被Linux採納,ext 3與4分別於2001年、2008年正式推出。初代ext於1992年出現,衹存在不到1年就被ext 2取代。換句話說,ext系列已被Linux使用超過20年,使用者產生疑問很正常。但可惜的是,能正視、面對的人實在不多,「卸膊」的人反而一大堆。或許叫「卸膊」不夠合適,畢竟他們並非開發者而衹是普通使用者,更合適的形容詞應該會是「雄辯」。因為真正的開發者確實做到了正視問題,並予以解決。

那麼ext到底會不會產生磁碟碎片呢?答案是:會。證據很多,其中一條就來自維基百科:ext3#磁盤碎片

在這裏可以提取出幾個關鍵點:

  • ext 2及ext 3都會產生磁碟碎片,有些時候甚至是快速產生碎片。
  • 可以使用碎片整理工具來重組,例如Shakedefrag,但使用在ext 3就會很容易出事。
  • 作業系統應該盡力消除碎片帶來的負面影響,而不是自己附帶一個碎片整理工具交由使用者自行解決。

產生碎片其實不難理解。例如頻繁地在大檔案的不同位置(尤其是中間)插入新的內容,特別是磁碟空間即將填滿的時候,碎片就容易產生。要解決產生的碎片,在ext 2及ext 3的唯一辦法就是重新複製(自從2011年出現Linux File-system defragmenter之後就不需要這樣了)。

作業系統確實應該盡可能減少碎片的負面影響,例如使用高效率的演算法使用戶感覺不到碎片帶來的影響。因為這一切早就交由作業系統去管理,作業系統自己造成的「問題」不應由使用者承擔,而應由自身盡力解決。早期的DOS及Windows在消除負面影響的演算法做得不夠好,以至於要過一段時間就要使用專門的工具去整理碎片消除負面影響,這一習慣被長久地繼承下來了。

當然了,雖然一般情況下ext的磁碟碎片不會很多,但若ext 2/3的使用者很介意碎片帶來的負面影響(比如不滿意少量的影響或者已經達到嚴重的程度),同樣應該有自由選擇權,使用專門的工具去整理碎片、重組空間。既然使用者確實有需要使用,就沒必要千方百計大寫文章去阻止。除了維基百科提到的Shake及defrag工具,還有一個叫做「Linux File-system defragmenter」的工具,在英文版Google中搜尋「linux defrag」即可見到。

實際上,ext的開發者亦注意到磁碟碎片的問題,並想辦法解決這個問題。在ext 4當中,他們增加了一個新的功能,叫做「在線磁盤整理」(Online defragmentation)。有了這個內建的工具,即使出現碎片亦可以隨時重組。其實這個工具就是e4defrag。當然,亦衹限於ext 4。如果想在ext 3上使用碎片整理工具,那就要Linux File-system defragmenter了。

微軟亦採用了類似的做法。由Windows 7開始,Windows就會自行整理磁碟碎片、重組空間,以消除碎片的負面影響。

一直以來,Linux社區總有不少比較極端的人,他們提出一些極端的觀點去反駁使用者的需求,甚至出言阻礙自由使用權。比如這次所說的「磁碟碎片整理」,在他們的眼中,「盡力減少負面影響以至於使用者察覺不到」等於「感覺不到磁碟碎片」,「感覺不到磁碟碎片」等於「沒有磁碟碎片」,既然「沒有磁碟碎片」就不需要「整理磁碟碎片」。看不見的事情一定就不存在?不要太極端。

然後還有「Windows能做而Linux不能做的事就是不需要做的事情」(如果再激烈些的話,難保不出現「Mac OS能做而Linux不能做的事情就是不需要做的事」)。早期的Linux確實有很多事情沒法做,但好在開發者不是狂暴分子,他們並不會如此極端粗暴地說「做不到的事情就是不需要做的」,相反,開發者會一直吸收別人的優點並不斷地完善它,比如3D應用。以前很多廠商都未曾推出針對Linux的遊戲,現在呢?遊戲數量多得多,並且Intel與AMD還有NVIDIA亦推出了針對Linux的硬件驅動,雖然執行效率還不算高(落後於對應的Windows版及Mac OS版)。如果「不需要做」這一說法被開發者採納的話,那麼Linux就會止步不前、固步自封,這不利於發展。

這類極端的說法等於變相地阻礙使用者的自由選擇權,還好的是總會有人為了使用自由而推出對應的軟件,直接無視那些極端人士的說辭,使用戶可以自由地使用自己想要的功能。特別是Linux file-system defragmentation的作者,還有各開發者的努力,他們做得真的很好。

  3 Responses to “Linux真的不需要「磁碟碎片整理」?”

  1. 同意
    我現在只希望ubuntu能取代win成為遊戲機......= =

  2. I read a document about the XFS the other day. It is kind of a new filesystem. It came a defragment utility. Therefore, I think defragment is needed in every filesystem.

Sorry, the comment form is closed at this time.