為什麼Linux不需要磁碟碎片整理

類別: IT
標籤: linux

如果你是個Linux使用者,你可能聽說過不需要去對你的linux檔案系統進行磁碟碎片整理。也許你注意到了,在Liunx安裝釋出包裡沒有磁碟碎片整理的工具。為什麼會這樣?

為了理解為什麼Linux檔案系統不需要磁碟碎片整——而Windows卻需要——你需要理解磁碟碎片產生的原理,以及Linux和Windows檔案系統它們之間工作原理的不同之處。

什麼是磁碟碎片

很多Windows使用者,甚至是沒有經驗的使用者,都深信經常對檔案系統進行碎片整理會提高計算機的速度。但並不是很多人知道這其中的原委。

簡單的說,磁碟驅動器上有很多扇區,每個扇區都能存放一小段資料。檔案,特別是大檔案的儲存需要佔用很多不同的扇區。假設現在你有很多個檔案存在的檔案系統裡,每個檔案都會被儲存在一系列連續的扇區裡。後來你更新了其中的一個檔案,它的體積變大了。檔案系統會嘗試把檔案新增的部分存放到緊鄰原始檔案的扇區裡。可不幸的是,它周邊已經沒連續的足夠扇區空間了,檔案需要被分割成數段——這些都在自動進行的。當從磁碟上讀取這個檔案時,磁碟磁頭需要跨越數個不同的物理位置來讀取各個扇區——這樣會使速度降低。

磁碟碎片整理就是小心的移動這些小檔案塊來減少碎片,讓每個檔案都能連續的分佈在磁碟上。

當然,如果是固態硬碟,那情況又不同了,固態硬碟沒有機械移動,不應該進行碎片整理——對一個U盤進行碎片整理通常會降低它的壽命。在最新版的Windows系統裡,你實際上不需要關心繫統上的碎片——Windows會自動替你整理。

Windows檔案系統的工作原理

微軟老的FAT檔案系統——最後一次使用是在Windows 98 和 Window ME上,可如今的U盤上還在使用它——並不會智慧的管理檔案。當你把一個檔案存入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”資訊。

為什麼Linux不需要磁碟碎片整理原文請看這裡