萬盛學電腦網

 萬盛學電腦網 >> 電腦入門 >> 磁盤碎片產生原理

磁盤碎片產生原理

首先,介紹下磁盤碎片的概念。

很多人會把文件碎片跟簇的概念混淆起來。其實對windows系統來說硬盤上的每個分區都是由最小存儲單元——簇組成的。就好比,一面牆是由一塊塊轉頭組成的。簇的大小可以在分區格式化時由用戶定義,一般是數個KB大小,比如是8KB。假設我有一個文件,大小是80MB零1KB(1MB=1000KB),換算一下就是80,001KB,其中的80,000KB正好占用10000個簇,剩下的那1KB,不得以也要占用1個簇,但這最後一個簇還有7KB的空間沒用上了。而且這個未完全使用的簇,其他文件也不允許繼續使用。這就造成了一點點的空間浪費。

不少人就把這被浪費了的7KB空間理解成文件碎片,這其實是不對的。等看完下面對碎片的介紹,相信你就會明白了。

當然或許你會想,要是將簇設為1KB,甚至1B那豈不是很好?但你要知道硬盤是按照簇來讀寫的,對於同樣的文件,簇設得越小,文件占用的簇的數目就越多。這樣讀這個文件要訪問的簇就多了,數據讀寫就會變慢。所以硬盤的空間利用率和文件讀寫的時間效率是一對矛盾。

而磁盤碎片實際上指的是一個文件占據那些簇是不連續的,就相當於文件被分割開來,分別存放在相互間斷的幾段簇上。文件被分割為幾個部分就是幾個碎片。所以碎片其實是指文件碎片,可以理解成,文件破碎成片之意。而且文件碎片之間有時候順序還是錯亂的。比如說,有時候“文件裡靠後的碎片”所占的簇段在硬盤上反而會排在“文件裡位置靠前的碎片”簇段的前面。這樣一來,一個文件就會以比較混亂的順序存放在硬盤上。

顯然計算機讀取連續的有序的數據肯定要比不連續的亂序的數據來得快。所以整理碎片可能會大幅度提高系統性能。

舉個例子,起初硬盤某個分區是空白的,寫入三個文件A、B和C。顯然這個時候,三個文件都是順次占用三個簇段。故而三個文件不會產生碎片。

現在假設你刪除了B文件,這個時候A和C中間就有一塊空閒簇段了。此時還是不存在文件碎片的,因為每個文件各自占據的簇段都是連續的,沒有文件被分割。而如果現在需要寫入一個文件D,而且D比剛剛刪去的文件B要大。那麼A和C之間的空閒簇段就不足以放入D,再假設C後面的空閒簇段也不足以放下D,這個時候D就勢必要分割成兩塊存放,一塊放在A和C之間,另一塊放在C之後。這樣一來,文件碎片就產生了。D文件有兩個文件碎片。

磁盤碎片整理要做的工作就是:把C文件前移,一直移到緊接A文件的簇段上去。這樣A和C之間就沒有空閒簇了,C之後剩下的將是一段完整的空閒簇段,足以放下文件D。這樣D就也占據一段連續的簇段。碎片也就消除了。

所以換個思路,不用專業的磁盤碎片整理軟件也可以實現磁盤碎片的整理工作。

將一個分區的文件全部剪切出去,再復制回來,那麼由於復制回來的時候,文件是一個接一個寫入的,這樣每個文件就會順次占用簇段,從而也就不會產生碎片了。不過剪切出去再復制回來的這種方法,需要其他分區裡足夠的空間來存放待整理的分區裡所有的文件。其缺點是沒有碎片的文件也被剪切復制了,這樣整體效率上就不如專業軟件了。

但相對於某些軟件卻有某種優勢,比如windows自帶的哪個整理工具,在分區的占用率較高時,常常會因為沒有足夠空閒空間來作文件的中轉站,導致不能徹底地消除碎片。而上面提到方法對付這種情況就很理想。

而且如果在復制中優先復制那些有價值的,幾乎永遠不會刪除的文件,將它們存放在分區靠前的部位,這也有利於降低磁盤碎片的產生。

同理也可以將待整理的分區做個ghost備份,再恢復回來,這樣也能有效消除磁盤碎片,而且速度也相當快。


copyright © 萬盛學電腦網 all rights reserved