一、什麼是磁盤碎片?
其實磁盤碎片應該稱為文件碎片,是因為文件被分散保存到整個磁盤的不同地方,而不是連續地保存在磁盤連續的簇中形成的。
當應用程序所需的物理內存不足時,一般操作系統會在硬盤中產生臨時交換文件,用該文件所占用的硬盤空間虛擬成內存。虛擬內存管理程序會對硬盤頻繁讀寫,產生大量的碎片,這是產生硬盤碎片的主要原因。
其他如IE浏覽器浏覽信息時生成的臨時文件或臨時文件目錄的設置也會造成系統中形成大量的碎片。文件碎片一般不會在系統中引起問題,但文件碎片過多會使系統在讀文件的時候來回尋找,引起系統性能下降,嚴重的還要縮短硬盤壽命。另外,過多的磁盤碎片還有可能導致存儲文件的丟失。
二、磁盤碎片是怎麼產生的?
在磁盤分區中,文件會被分散保存到磁盤的不同地方,而不是連續地保存在磁盤連續的簇中。又因為在文件操作過程中,Windows系統可能會調用虛擬內存來同步管理程序,這樣就會導致各個程序對硬盤頻繁讀寫,從而產生磁盤碎片。
三、磁盤讀寫操作的原理
知道了磁盤碎片的產生原因之後,我們還有必要了解一下程序運行時磁盤的讀寫動作。一般運行一個程序時,磁盤驅動器的磁頭所做的工作是先搜索該程序運行必需的文件,然後讀取數據,最後做讀後處理——將數據傳送至磁盤高速緩存(Cache)和內存中。搜索時間在硬盤性能指標中被稱為平均尋道時間(Average seek time),單位為毫秒(ms),目前主流硬盤的平均尋道時間小於9.5ms。如果能將應用程序的相關文件放在磁盤的連續空間內,磁頭搜索的時間將會減少很多。讀取時也是如此,磁盤讀取位於磁頭下方扇區的數據所需時間僅為將磁頭移到另一地點再讀取相同數據所需時間的五分之一。讀盤時,系統先檢查數據是否在高速緩存中,如果有則直接讀取;如果沒有則訪問磁盤,也就是讀盤。當需要多次讀取同一份數據時,Cache的作用很大,但對於第一次讀取某個文件,Cache就無能為力了。於是搜索時間和讀取時間在很大程度上影響著程序執行的效率。
為何要整理磁盤 Windows系統並不能自動將每個文件按照最大程度減少磁頭搜索時間的原則放到磁盤上最合適的位置。於是Microsoft在Windows中加入了“Disk Defragment”(磁盤碎片整理程序),並提供了“TaskMonitor”(任務監視器)來跟蹤程序啟動過程中的磁盤活動,以利於“Disk Defragment”能夠更有效地工作。“TaskMonitor”是隨Windows啟動而自動運行的(當然要在“啟動”中選中“TaskMonitor”)。當加載某個應用程序時,它通過監視磁盤的訪問動作來了解該程序啟動時搜索和調用的文件,對所需文件進行定位,並將監視結果儲存在“C:\Windows\Applog”隱藏目錄中。這個目錄中的大多數文件以“.lgx”為擴展名,其中“lg”代表記錄文件(Log File),“x”表示盤符,如D盤程序就以“.lgd”為擴展名;記錄文件的文件名為TaskMonitor所監視的應用程序的文件名,如E盤上的WinZip程序記為“Winzip32.lge”。用戶進行磁盤碎片整理時,該程序會根據Applog目錄中的信息把應用程序的相關文件移動到磁盤上的連續空間內。
TaskMonitor僅在程序加載過程中對文件信息進行搜索,並且根據程序的加載頻率調整優化的順序,也就是說使用次數最多的軟件可獲得最多的關照。Applog目錄中的APPLOG.ind文件就記錄了應用程序運行的次數。用戶需要將常用軟件多次啟動,接受TaskMonitor的監視和記錄,再使用Disk Defragment進行整理,才能真正實現程序啟動速度的提高。但如果用戶中途改變了常用軟件,比如以前常用WinZip,現在改用ZipMagic,那麼在相當長的時間內Disk Defragment還是先把與WinZip相關的文件移到連續的空間內,而不是ZipMagic,除非ZipMagic的加載次數超過WinZip。要解決這個問題,用戶可將“Winzip32.lgx”文件刪除,記錄文件不存在了,Disk Defragment也就不會去優化它了。
四、該不該定期整理硬盤?
實際上,定期整理硬盤應該是毫無疑問的。如果說硬盤碎片整理真的會損害硬盤的話,那也將是在對硬盤進行近乎天文數字般次數的整理之後。