如果你是個Linux使用者,你可能聽說過不需要去對你的linux檔案系統進行磁碟磁碟重組。也許你注意到了,在Liunx安裝發布包裡沒有磁碟磁碟重組的工具。為什麼會這樣?
為了理解為什麼Linux檔案系統不需要磁碟片段整——而Windows卻需要——你需要理解磁碟片段產生的原理,以及Linux和Windows檔案系統它們之間工作原理的不同之處。
什麼是磁碟片段
很多Windows使用者,甚至是沒有經驗的使用者,都深信經常對檔案系統進行磁碟重組會提高電腦的速度。但並不是很多人知道這其中的原委。
簡單的說,磁碟機上有很多扇區,每個扇區都能存放一小段資料。檔案,特別是大檔案的儲存需要佔用很多不同的扇區。假設現在你有很多個檔案存在的檔案系統裡,每個檔案都會被儲存在一系列連續的扇區裡。後來你更新了其中的一個檔案,它的體積變大了。檔案系統會嘗試把檔案新增的部分存放到緊鄰原始檔案的扇區裡。可不幸的是,它周邊已經沒連續的足夠扇區空間了,檔案需要被分割成數段——這些都在自動進行的。當從磁碟上讀取這個檔案時,磁碟磁頭需要跨越數個不同的物理位置來讀取各個扇區——這樣會使速度降低。
磁碟磁碟重組就是小心的移動這些小檔案塊來減少片段,讓每個檔案都能連續的分布在磁碟上。
當然,如果是固態硬碟,那情況又不同了,固態硬碟沒有機械移動,不應該進行磁碟重組——對一個隨身碟進行磁碟重組通常會降低它的壽命。在最新版的Windows系統裡,你實際上不需要關心系統上的片段——Windows會自動替你整理。
Windows檔案系統的工作原理
微軟老的FAT檔案系統——最後一次使用是在Windows 98 和 Window ME上,可如今的隨身碟上還在使用它——並不會智能的管理檔案。當你把一個檔案存入FAT檔案系統裡時,系統會盡量的把它存到靠近磁碟開始的地方。當你存入第二個檔案時,它會緊接著第一個檔案——一個接著一個。當原始檔案體積變大後,它們一定會產生片段。根本沒有留給它們增長的空間。
微軟新的NTFS檔案系統——使用在裝有Windows XP和2000的PC機上——稍微智能了一點。它會在磁碟上在檔案周圍分配一些“緩衝”的空閑空間,儘管如此,任何Windows使用者都會告訴你,經過一段時間的使用後,NTFS檔案系統還是會形成片段。
由於這些檔案系統的工作原理,它們註定需要進行磁碟重組來保持高效能。微軟在它最新的視窗系統裡通過在後台運行一個磁碟磁碟重組進程來解決這個問題。
Linux檔案系統的工作原理
Linux的ext2, ext3, 和 ext4 檔案系統 ——Ubuntu和大多數最新的Linux發布版中使用的是ext4——採用了一種更聰明的方法來存放檔案。與把多個檔案並排放在磁碟上不同,Linux檔案系統把所有檔案都分散到了整個磁碟上,每兩個檔案之間都留有相當巨大的空閑空間。當檔案被修改、體積增加時,它們通常有足夠的空間來擴充。一旦有片段產生時,檔案系統會嘗試移動整個檔案來消除片段,所以你不需要一個磁碟重組工具。
因為這種工作方式,當磁碟快要裝滿時,你開始會發現有片段開始產生。如果已用空間超過95%(甚至80%),你會發現片段開始變多。但不管怎樣,這個檔案系統的設計會使正常情況下不產生片段。
如果你在Linux系統上遇到了磁碟片段問題,你很可能需要一個更大的硬碟了。如果你真想整理一個檔案系統,這最簡單的方式也許是最可靠的方式:把檔案從這個分區裡考出,刪除這些檔案,然後考回這些檔案。當你把檔案考回硬碟時,檔案系統會智能為檔案分配儲存空間。
你可以使用 fsck 命令來查看Linux檔案系統上的磁碟片段情況——在輸出結果裡尋找“non-contiguous inodes”資訊。