這是去大板根半日遊,阿姨幫我拍的,媽咪抱我,爸比粉得意的一張喔…
2008年3月29日
2008年3月27日
磁碟檔案系統簡介
NTFS vs FAT
檔案系統 | NTFS5 | NTFS | exFAT/FAT64 | FAT32 | FAT16 | FAT12 | ||||||||||||
作業系統 | 2000 / XP / 2003 | NT | Win CE 6.0 | DOS 7 higher / 98 / ME | DOS | DOS | ||||||||||||
| ||||||||||||||||||
叢集數量 | 幾乎無限制 | 幾乎無限制 | 4,294,967,295 | 4,177,918 | 65,520 | 4,080 | ||||||||||||
檔案數量 | 幾乎無限制 | 幾乎無限制 | 幾乎無限制 | 4,194,304 | 65,536 | | ||||||||||||
檔案大小 | 僅受限分割磁區 | 僅受限分割磁區 | 最大16ZB | 4GB減2 Bytes | 最大2GB | 最大16MB | ||||||||||||
檔名長度 | 最長255 | 最長255 | 最長255 Unicode | 最長255 | 標準8.3 | 最長254 | ||||||||||||
硬碟分割 | 2TB | 2TB | 64ZB | 32GB for all OS. | 2GB for all OS. | 16MB | ||||||||||||
From | To | 叢集 | From | To | 叢集 | From | To | 叢集 | From | To | 叢集 | From | To | 叢集 | From | To | 叢集 | |
Less | 512M | 0.5K | Less | 512M | 0.5K | | | | 32M | 63M | 0.5K | 0M | 31M | 0.5K | | | | |
513M | 1024M | 1K | 513M | 1024M | 1K | | | | 64M | 127M | 1K | 32M | 63M | 1K | | | | |
1G | 2G | 2K | 1G | 2G | 2K | | | | 128M | 255M | 2K | 64M | 127M | 2K | | | | |
2G | 2T | 4K | 2G | 2T | 4K | | | | 256M | 7G | 4K | 128M | 255M | 4K | | | | |
| | | | | | | | | 8G | 15G | 8K | 256M | 511M | 8K | | | | |
| | | | | | | | | 16G | 31G | 16K | 512M | 1023M | 16K | | | | |
| | | | | | | | | 32G | 2T | 32K | 1G | 2G | 32K | | | | |
| | | | | | | | | | | | 2G | 4G | 64K | | | | |
附註 | | | | | 64K 磁叢集僅能於 | | ||||||||||||
| ||||||||||||||||||
File System Features | ||||||||||||||||||
System Records Mirror | MFT Mirror File | MFT Mirror File | No | Second Copy of FAT | Second Copy of FAT | Second Copy of FAT | ||||||||||||
啟動磁區 | First and Last Sectors | First and Last Sectors | Sectors 0 to 11 | First Sector and | First Sector | First Sector | ||||||||||||
檔案屬性 | Standard and Custom | Standard and Custom | Standard Set | Standard Set | Standard Set | Standard Set | ||||||||||||
Alternate Streams | Yes | Yes | No | No | No | No | ||||||||||||
壓縮 | Yes | Yes | No | No | No | No | ||||||||||||
加密 | Yes | No | No | No | No | No | ||||||||||||
物件存取權限 | Yes | Yes | Yes | No | No | No | ||||||||||||
磁碟配額 | Yes | No | No | No | No | No | ||||||||||||
Sparse Files | Yes | No | No | No | No | No | ||||||||||||
Reparse Points | Yes | No | No | No | No | No | ||||||||||||
Volume Mount Points | Yes | No | No | No | No | No | ||||||||||||
| ||||||||||||||||||
Overall Performance | ||||||||||||||||||
Built-In Security | Yes | Yes | Yes | No | No | No | ||||||||||||
Recoverability | Yes | Yes | Yes | No | No | No | ||||||||||||
Performance | Low on small volumes | Low on small volumes | High | High on small volumes | Highest on small volumes | High | ||||||||||||
Disk Space Economy | Max | Max | Max | Average | Minimal on large volumes | Max | ||||||||||||
Fault Tolerance | Max | Max | Yes | Minimal | Average | Average |
參考資料: http://www.ntfs.com/
From: whoami.bbs@bbs.cycu.edu.tw (夜行遊龍) 11 Jul 1997
Newsgroups: tw.bbs.comp.mswindows.win95
Subject: 轉錄一篇關於 Fat32 的文章
※※ Windows 95的加強型檔案系統 ※※ Barry Simon/高秀美譯
曾幾何時,那看起來似乎永遠用不完的2GB上限,現在已經變成另一個需要克服的難題了。FAT32為FAT檔案系統注入新生命!
在1987年時,個人電腦的世界中出現了一個危機。微軟公司十年前為其自己的基本磁碟轉換程式 (Standalone Disk Basic interpreter),也就是後來的DOS所發展出來的FAT檔案系統已經到達了它的極限。當時的FAT檔案系統只能支援最多32MB的硬碟,因此使用者都無法利用新一代高密度硬碟所多出來的容量。而一些獨立廠商便使用它們自己的程式以便存取更高的容量,整個危機一直到微軟推出了DOS4.0 之後,才暫時地得到了解決。
微軟的DOS 4.0大幅改變了檔案系統的架構,使得作業程式 得以處理高達128MB的容量;而其稍後所做的少許擴充又將整個處理上限提高到2GB。在當時,這個容量看起來超大,很難想像有誰會用到它。但是個人電腦的歷史如果有立下任何真理的
話,那就是任何「看起來遠遠超過需求」的事物很快的會變成「完全趕不上需求」。
事實上容量超過 2.5GB的磁碟現在已經隨處可見。曾幾何時,那看起來似乎永遠用不完的 2GB上限現在已經變成另一個需要克服的難題了。現在微軟已經針對Windows 95系統,發展出FAT32,一個新的擴充型FAT檔案系統,並且悄悄的將其附在OEM Service Pack 2中一起發行。
FAT32只提供給新裝機的PC而無法從現有的Windows95昇級上取得,然而微軟指出它將會包含在預計在年底推出的下一版的Windows95之中(代號Memphis)。
本文中,我們將回顧FAT 檔案系統的一般架構,然後再探討FAT32裡到底增加了那些東西。為了避免混淆,我們將使用FAT16來表示先前舊版的16位元檔案系統。
【磁碟區域】
當磁碟機被格式化之後,檔案系統需要用到一些特殊的區域來組織它本身的資料包括主開機記錄 (Master Boot Record) 、磁區分割表(Partition Table)、開機紀錄(Boot Record)、檔案配置表(File Allocation Table,這也是FAT的名稱由來)以及根目錄(Root Directory)。在低階的部份,磁片被分割成一塊塊 512-byte的區域,稱為磁區(Sector)。
FAT檔案系統將數個磁區合併成一個磁叢 (Cluster)當成配置檔案時的基本單位
。磁叢裡的磁區數目必須是 2的次方。(你可以用CHKDSK或者SCANDISK指令查看你系統裡的磁叢大小)。微軟把這些磁叢稱為配置單元 (AllocationUnit),而SCANDISK則會回報給你它們的大小,例如「各個配置單元共有16,384個位元組」等。通常你可以藉著將磁碟機的容量除以64K (65,536個位元組),再將得出來的數據進位到最接近2的次方數以求得磁叢大小。
例如一個1.2GB的磁碟其磁叢的大小可以由1.2GB(1,258,291.2K)除以65,536得到19.2K再進位到最接近的2的次方數得知為32K。
【FAT連結】
FAT是一個記錄磁碟機上頭檔案大小及其所相對映磁叢的資料庫。它對每一個磁叢都有一個相對的記錄表(Entry Point)。最前面兩個記錄點包含了FAT本身的資料。第三個及後續的記錄表則被分配為檔案所使用的磁碟空間。FAT記錄表會包含一些特殊的值來表示:
■磁叢為空白的-表示沒有任何檔案使用到它 (在FAT16時其值為0000H)
■磁叢包含了一個或數個不可使用的受損磁區 (在 FAT16時其值為FFF7H)
■此磁叢為檔案的最後一個磁叢 (在FAT16時其值為FFFFH)
如果磁叢已經被使用但不是檔案的最後一個磁叢,那麼FAT記錄表會記錄其下一個磁叢的位置。
每一個目錄,無論是根目錄或者是子目錄,也都是一個資料庫。一個DOS的目錄針對每一個檔案都會有一個主要的記錄表 (Windows95使用額外的記錄表來記錄長檔名)。跟FAT不同的是,在FAT裡每一個記錄表只有一個欄位 (field),然而在目錄中的每一個檔案的記錄表都包含了許多的欄位。其中某些欄位,像是名稱(Name)、附屬檔名 (Extension)、檔案大小(Size)、日期(Date)以及時間(Time)等,可以用DOS中的 DIR指令來顯示。
但是FAT檔案系統用到的是那些DIR命令無法顯示的欄位-檔案所配置到的第一個磁叢號碼。當一個程式對作業系統要求提供某一個檔案的內容時,作業系統會到此檔案的目錄記錄表去尋找它的第一個磁叢號碼,然後再到FAT記錄表裡去找在此一聯結(Chain)裡的下一個磁叢。此動作不斷的重覆直到找到檔案的最後一個磁叢為止,作業系統可以精確的計算那些磁叢屬於這個檔案及其先後順序。經由此方式,作業系統可以提供程式所要求之檔案的任何部份。這種組織檔案的方式稱為FAT聯結(FAT Chain)
在FAT檔案系統下,檔案永遠被分配到整數單位的磁叢。在一個每一磁叢大小為32K的1.2GB磁碟機中,一個只包含「Hello, World」這幾個字的文字檔,在其目錄記錄表中可能只記載其檔案大小為12個位元組,但是這個檔案還是要在磁碟機中佔上32K的空間。在磁叢中沒有用到的部份稱為耗損 (Slack)。小檔案的耗損幾乎與整個磁叢相當;平均來說,一個檔案會有一半左右的耗損。在一個每一磁叢為16K的850MB硬碟中,其中平均檔案大小為 50K 的話,大概有16%配置給檔案的硬碟空間實際上浪費掉了而並未被真正用到。一般硬碟壓縮程式,如DriveSpace,增加磁碟機容量的方式之一是將那些虛損的空間轉換出來以供其他檔案使用。
【計算磁區與磁叢】
最早用在 DOS 1.0上使用的是12-bit FAT檔案系統。(目前 12-bitFAT系統仍舊在軟碟上使用)。從DOS2.0開始,由於加入了對硬碟的支援,因此改用16-bitFAT記錄方式。而在1987年時碰到了第一個問題,這個問題是根源於作業系統低階呼叫的方式,因為當時的DOS作業系統是以16-bit為參數來記錄磁區數目以便存取檔案,而16-bit的記錄方式最多只能有65,536個不同的數值,而65,536乘上每個磁區為512bytes,則最只能定址到32MB。這是作業系統所能記錄的最多磁區數目。而當時的硬碟容量已經開始超出這個數目,因而從 DOS 4.0開始,改以32-bit方式來記錄低階段磁區數目。
目前DOS的2GB容量上限嚴格來講並不是作業系統的問題,而是現有應用程式的問題。一顆硬碟當其容量超過2GB時,其磁叢大小為64K,也就是65,536bytes。但是16-bit的最大值只到65,535,64K就變的太大了。微軟發現許多應用程式根本就直接假設每個磁叢的位元數目可以塞進16-bit的數值中。
就算在硬碟容量2GB時沒有這個16-bit的問題發生,作業系統也會拒絕存取超過4GB容量以上的硬碟。在FAT16的系統中,作業系統本身會在其設置的磁碟參數表中用一個byte儲存每個磁叢包含多少磁區的數目。這個數字必須是 2的次方,而其值不可以大於256。因此磁叢的最大可能大小為128個磁區,也就是64K。所以即使沒有2GB的上限,FAT16也僅能使用在4GB以下容量的硬碟之中。
在FAT32系統上市之後,FAT記錄表及磁區數目現在都變成了32-bit。這表示你可以存取到最大的硬碟空間為2的32次方 (也就是4,294,967,296) 乘上每個磁區512byte,結果得到2 terabytes (2,199,023,255,552bytes)。
【減少無謂的耗損】
現在由於最大的磁叢數目跟最大磁區數目已經一樣,你可能希望FAT32可以減低無謂的損耗空間,將磁叢的數目直接對映到每一個磁區。但是現實總是有妥協的,目前FAT32的規格將8GB容量以下硬碟的磁叢大小定為4K。會這麼做,主要是因為FAT本身大小的問題。
因為作業系統會保持兩份FAT記錄,所以每個磁叢的FAT記錄表會佔據8bytes空間。在一顆 2GB的硬碟中,如果每個磁叢大小都只有512bytes的話,FAT 記錄表將會佔去32MB的硬碟空間。然而如果每個磁叢大小為4K的話,這兩份FAT記錄表將會只佔掉4MB的空間,足足節 了28MB。
但硬碟空間並不是做此妥協的主要原因,還有一個原因是硬碟效率的問題。VCACHE,這個內建的磁碟快取程式,會盡其可能的將整個 FAT記錄放在RAM上頭以便增加磁碟機的存取速度。很顯然地, 存一個2MB大小的FAT記錄會比放一個16MB FAT記錄來的容易許多。
你可能會擔心要存取一個這麼大數目的磁叢跟雙份的FAT記錄表會使的VCACHE的效率不佳,但是根據微軟的說法,由於FAT32使用了新的快取方式,因此其整體效能變的更好。
【FAT32的其他改變】
為了容納增加了以後所可能出現的大量磁叢數目,每一個檔案的目錄記錄表中的磁叢開始位置必須用到 4 bytes來記錄,而不再像FAT16只需要 2bytes。傳統上,每個目錄記錄表皆是一個32 bytes的記錄。在其中間有10個 byte (bytes12到21),微軟將其保留下來以供其未來擴充之用。現在其中兩個byte被用來容納FAT32擴充
作業系統雖然在硬碟上保存了兩份FAT記錄,但是只使用到一份而已。有了FAT32後, 作業系統現在可以使用其中任何一份。另外一項改變是根目錄的改變,以前根目錄必須放在特定的位置且只能佔用固定的硬碟容量,現在則可以跟子目錄一樣隨著需 要增減。而根目錄的數目在也不再有任何限制。由於每一個長檔名要用掉好幾個目錄記錄,因此這項改變顯得格外重要。可移動式根目錄以及可使用任意一份的 FAT記錄表這兩樣東西的結合,使得FAT32可以提供更平順且動態的硬碟分割能力,譬如它可以為了其他作業系統挪出空間來使用。這個新方法比起在FAT16之下用獨立廠商的公用程式來分割硬碟來得更為安全。
雖然Windows中並沒有包含任何公用程式以便將FAT32的這項功能發揮出來,然而Third-Party廠商已經發表了這類的產品。它們包含了PowerQuest公司的Partition Magic3.0及Quart- erdeck公司的PartitionIt)
【結語】
FAT32只有在Windows 95才有支援。微軟並沒有承諾WindowsNT會支援它,而且還暗示其將來可能也不會這樣做。然而該公司也聲稱如果NT5.0不支將FAT32的話,他們將會提供一個公用程式以便將 FAT32轉成NTFS (WindowNT的內建檔案系統),所以昇級的人將不會有任何問題。
但是目前為止,如果你想在同一部機器上既跑Windows 95也跑WindowsNT的話,你必須先確定這兩個作業系統所共用的磁碟是使用 FAT16而不是FAT32,否則Windows NT 會看不懂 FAT32, 而同樣的Windows95也無法讀取NTFS。
你也必須知道由於目錄表中的檔案大小欄位為32bits,因此單一檔案的大小也不能超過GB。
最後,每次檔案系統做大幅度改變時,你將會無法使用一些低階的磁碟工具程式,如Norton Utilities等。請準備將它們昇級吧。而檔案管理程式 (像是Norton Navigator等) 應該可以繼續在FAT32中使用。
如果我們選擇採用 FAT32的話,可能要再等上15年我們才會碰到它的2-terabyte上限,那時才需要再次轉移到 FAT64。但是如果講到目標導向檔案系統的話,我們可以肯定的預測那時我們早就不再使用FAT檔案系統了,如同在1987年時我們就已經預測在FAT達到其2GB的上限之前將會消失。
【文件】有關硬碟容量限制的幾篇文章
【來源】http://www.threesecond.info/xoops/modules/ipboard/index.php?showtopic=219
【問題一】我的 160GB 硬碟在電腦上只抓到 137GB (或 68GB)??
這是因為你的主機板 BIOS 只支援到 36 位元定址(68GB),或 37 位元定址(137GB)
(2^36 = 68GB)
(2^37 = 137GB)
新版的 BIOS 多半直接支援到 48 位元定址 (2^48 = ??? 自己算吧...) 有生之年應該都夠用了。
解決方法:
1. 更新主機板 BIOS 到最新版本。
2. 開啟 Win2000 或 WinXP 的 48 位元定址支援。
Win2000 的說明:http://support.microsoft.com/kb/305098/zh-tw
WinXP 的說明: http://support.microsoft.com/kb/303013/zh-tw
3. Win9x/Me 下只要使用支援 48 位元定址的分割程式(例如 spfdisk )分割完畢即可使用。
【問題二】為何 FAT32 分割區最大只能到 32GB?不能更大嗎?
這個問題通常只發生在 Win2000 以上版本的系統,在磁碟管理裡面分割硬碟時,若大於 32GB,則只有 NTFS 的格式可選,無法選擇 FAT32。這是微軟的政策性問題.....
FAT32 支援到最大 2TB 的分割區,但由於微軟希望使用者改用 NTFS,所以在 Windows2000/XP 下,若要格式化 32GB 以上的分割區,會自動改為 NTFS,如果你要做出超過 32GB 的分割區,請改用 spfdisk 或 PartitionMagic。
補充一,zhenyuan 網友提供的秘技:在磁碟管理裡面,先指定分割區的大小,但"不要"執行格式化,等分割完後,在這個磁碟代號上面按右鍵選格式化,就可以指定 FAT32 格式化了。
補充二,FAT32 檔案系統的最大極限是 2TB,也就是 2048GB。不是 32GB, 不是 64GB, 更不是 128 或 137GB,請轉信版上的人不要再散佈謠言了。
微軟說明如下:
FAT32檔案系統說明:http://support.microsoft.com/kb/154997/zh-tw
Windows XP的FAT32檔案系統說明:http://support.microsoft.com/kb/310525/zh-tw
Windows XP中FAT32檔案系統限制:http://support.microsoft.com/kb/314463/zh-tw
【問題三】Win98 無法分割 64GB 以上的實體磁碟機??
這是因為 Win98 內建的 fdisk.exe 不支援 36 位元定址,遇到 64GB 以上的磁碟機就無法正確的辨識。微軟針對此問題推出了修正過的 fdisk.exe。
以下是微軟的詳細說明:http://support.microsoft.com/kb/263044/zh-tw
解決辦法:按照上面的說明下載更新過後的 fdisk.exe 安裝即可。
【類似問題】Win95 無法辨識 32GB 以上磁碟機??
原理同上,說明如下:http://support.microsoft.com/kb/246818/
這年頭應該沒人在用 Win95 了吧....