硬碟的儲存格式

您一定要知道的常識

最近一件很紅的新聞事件講到了硬碟裡面的資料可能被刪除滅跡,這就讓我興起一股要來湊熱鬧的動機,告訴大家這件事到底可不可能發生,以及資料救回來的機率到底高不高?

但是為了要讓大家更瞭解整個原理,我先發這篇文章來說明一下檔案到底是如何儲存在硬碟裡面的。

首先我來介紹電腦硬碟檔案儲存的原理,事實上這個原理不只適用於硬碟,就連隨身碟、記憶卡等記錄媒體,或是行車記錄器,監視錄影系統,甚至是手機等裝置也都適用。

檔案格式 FAT? NTFS?

提到檔案儲存第一件要先瞭解的是儲存的格式,而一般人會接觸到的儲存媒體大部份都是 FAT 或是 NTFS 這兩種的格式。

FAT 有分 FAT16 及 FAT32 兩種,這是很早以前的電腦作業系統 DOS, Windows 3.1 Windows 95/98/ME 所採用的儲存格式,現在則是很多隨身碟/記憶卡預設的儲存格式。

NTFS 則是從 Windows NT 3.1 開始使用的新一代儲存格式,您現在用的個人電腦硬碟應該百分之百都是使用這個格式來儲存的。

另外 Apple 蘋果電腦則是使用他們自己獨特的儲存格式叫 HFS+,或者稱為 Mac OS 擴充格式。

還有另外一種電腦作業系統 Linux 也有自己的儲存格式,舊的格式是 Ext2,現在應該都是用 Ext3 的格式,所以由 Linux 衍生出來的 NAS 網路磁碟機很可能都是 Ext3 的格式。

而智慧型手機如果是蘋果系統的,那還是用 HFS+ 格式,如果是 Windows Phone 想當然爾就是 FAT 或 NTFS 格式,但不屬於這兩大陣營的 Android 手機呢?

Android 系統也是由 Linux 系統衍生出來的,所以核心檔案的儲存也是以 Ext3 的格式儲存。

至於大家關心的監視錄影系統的檔案格式則視機種而定,如果是用 Windows 的系統一定是 NTFS  格式沒錯,但是有些嵌入型的監視錄影主機是採用 Linux 系統的,所以也有可能是 Linux Ext3 格式。

不過所有的電腦或是手機都一定支援 FAT (FAT16/FAT32) 的外接檔案格式,這也就是為什麼大部份的記憶卡會格式化為 FAT 的原因,因為相容性最好。

但是 FAT 檔案格式畢竟是有些年紀了,所以也會有一些限制,例如最大分割 32GB,最大檔案大小 4GB 等等,詳細的說明請看微軟官方的:

檔案在硬碟中的儲存方式

而這一篇文章要說明的就是檔案在硬碟中的儲存方式,不管是 FAT 格式或者是 NTFS 格式,原理都大同小異,現在就以 NTFS 的檔案儲存方式來說明。

如果你的硬碟是用來開機的,那麼就會有一個區塊來儲存開機的程式,這個部份我們都叫它 BOOT RECORD,以前可能叫 MBR,現在則可能是 EFI (UEFI),不過這不是本篇的重點,以後有機會再來詳述。

而檔案格式儲存的一個重要名稱叫檔案配置表 (File Allocation Table),這就是 FAT 檔案格式名稱的由來,但是原理也應用在 NTFS 或是其他的儲存格式裡。

NTFS 的檔案配置表叫主檔案配置表 MFT (Master File Table),這一般是佔用硬碟最前面的一塊保留儲存區域,是用來記錄檔名等重要資訊的地區。

而硬碟的物理儲存單位的叫磁區 Sector,但是磁區的單位很小(以前固定是 512 Byte,新的先進格式硬碟則是會用 4096 Byte 來模擬 8 個 512 Byte)

請記住一件事:叢集是硬碟儲存的最小單位,小於這個數值的檔案也會佔用這麼多的容量,這就是你查詢一個檔案大小的時候會出現檔案大小跟硬碟大小這兩組數字。

檔案大小是你的檔案儲存需要的容量,而磁碟大小則是檔案真實佔用的容量,這樣子知道為什麼磁碟大小一定大於檔案大小的數值了吧?

所以微軟就用另外一個比較大的儲存單位叢集 Cluster 來作為基本的儲存單位,所以當你格式化一台硬碟或是隨身碟的時候,就是把這個儲存格的位置定出來,就像是畫格子一樣,所以才叫格式化。

而 MFT 的功能除了記錄檔名、檔案大小、建立及修改時間這些重要的檔案資訊之外,另一個重要重要的功能是儲存檔案在硬碟第一個儲存位置(叢集),這個記錄我們稱為指標 (Index),功能就跟每本書最前面的目錄索引是一樣的功能。

硬碟的儲存格式

我們再以下面張圖片來說明一下:

在這張圖片裡面有三個檔案:file4, file9 及 file14
而這三個檔案的起始儲存位置分別是 1355, 1049 及 1588 (圖中的 VCN 及 LCN 分別表示相對及絕對的位置)。

至於每個檔案的第二個以後的位置(叢集)則是記錄在前一個叢集的索引部份。

這也就是說每個檔案在 MFT 只知道開頭位置,至於在硬碟的實際儲存位置還要一個一個叢集接力之後才能呈現完整的檔案內容。

而且 MFT 在前的檔案,實際的儲存位置並不一定會在前面,因為系統會找「有空」的位置就放,如果你有刪除或變更檔案的時候,就有可能會讓前面的位置空出來。

而這時候就會出現後來的檔案儲存在前面,或是一個檔案分散在許多的位置儲存的亂象。

所謂亂象的意思是檔案會分散放在很多片斷的叢集中,並不會放在連續的叢集。所以就會有人叫你要時常執行「硬碟重組」來提高硬碟的讀取效率(連續讀當然會比到處找還快,不是嗎?)

而事實上「硬碟重組」這件工作從 Windows XP 開始系統會在你電腦有空的時候自動執行(你終於知道電腦沒在用的時候硬碟燈狂閃的原因了吧?)

而且「硬碟重組」還有一個副作用,這個關係到檔案救援的成敗,所以不一定是常常硬碟重組就會比較好。

聰明的您知道我下一篇要講什麼了嗎?
那就是:刪除的檔案可以救回嗎?

5 則留言

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料