Board logo

標題: 單一檔案 最大 4GB 的限制 [打印本頁]

作者: 冷奴    時間: 2008-9-11 06:21 AM     標題: 單一檔案 最大 4GB 的限制

我有一個8GB的USB隨身碟,裡面只裝了不到1GB的檔案,但是再將大小為4.5GB的檔案存進去時,為什麼沒辦法做到?

這是由於檔案系統具有容量限制的關係。在過去,由於電腦硬體效能及檔案複雜性的設計,微軟發明的FAT(File Allocation Table)檔案系統,幾乎能支援所有的個人電腦作業系統,使得它成為通用的檔案系統格式,橫跨軟碟或記憶卡等外部儲存裝置。

FAT32單一檔案容量上限為4GB
最早的FAT系統,現在被稱為FAT12,它能支援32MB以下的單一檔案,以及最多4,077個檔案,並廣泛地運用於MS-DOS 2.0作業系統,但FAT12最大的缺點,就是根目錄(例如A:)必須放在第一個磁軌,所以僅能存放數十個檔案,這就限制了磁碟的應用範圍。

隨著硬碟的容量越來越大,軟碟機也出現高密度(High Density,HD)及雙密度(Double Density,2D)等格式,FAT12漸漸不敷使用。有鑑於此,微軟在MS-DOS 4.0上改用FAT16。這種檔案系統將單一檔案大小提升到2GB,同時檔案數量也增加至65,517個。然而,FAT16卻在DOS的「真實模式(real-mode,可直接存取BIOS資料並控制周邊硬體裝置,跟這模式相對的是保護模式)」下,有常規記憶體(conventional memory,記憶體的第一個640KB位址)虛耗的問題。

為了解決這樣的問題,並突破既有的檔案大小限制,微軟隨著Windows 95 OSR2的發布,再次將檔案系統更新為FAT32。在這個檔案系統下,使用者可存取的檔案數量達到了268,435,437個,單一檔案容量上限也提高為 4GB。不過即使如此,當遇到大小超過4GB的檔案時,使用FAT32格式的磁碟就無法正常存取。

雖然微軟早已宣布,在Windows ME之後,不會再開發其他以MS-DOS為基礎的作業系統,也表示了FAT檔案系統不會再有更新的版本,但以Windows NT為基礎的Windows 2000或XP,使用的NTFS(New Technology File System)格式,卻也無法完全取代FAT。

這是由於NTFS系統在儲存小容量檔案時,配置的空間大於實際大小,再加上微軟並未透露NTFS的詳細規範內容,因此不僅非以NT為基礎的作業系統很少支援,使用者也沒辦法將它用在DOS開機片或開機光碟救援系統,造成目前的軟碟或USB隨身碟等儲存裝置,仍然使用FAT檔案系統。

Vista SP1支援exFAT
隨著快閃記憶體的技術革新和成本下降,USB隨身碟的容量也越來越大,目前市面上也陸續出現8GB容量的產品,但由於仍然是使用FAT32檔案格式,所以就無法存取超過4GB以上的檔案。



這項限制在2007年有新的進展。微軟於Vista SP1作業系統中,又推出了快閃架構儲存裝置適用的exFAT(Extended FAT)檔案格式,它能打破單一檔案的4GB大小限制(可達到16EB,亦即4GB的40億倍),使得4GB以上的檔案無需再另外分割,便能直接傳送至隨身碟。

這個新格式改進了不少過去文件系統的缺點,例如它將單一檔案分區大小從64KB提升到了32MB。由於單一分區容量增加,檔案的區塊數量就較少,當需要存取大容量檔案時,這麼做可有效降低硬碟的讀取次數,不但提升效率,也可延長硬碟的使用壽命。此外,exFAT也將單一資料夾中可存放的檔案數,提高到1千個以上。

此外,過去在Windows 2000或XP環境下,想要將硬碟格式化為FAT系統,最大只能支援到32GB,而exFAT系統就沒有這樣的問題。同時微軟也宣稱,exFAT格式具有更佳的檔案空間配置與存取效能。

不過值得一提的是,exFAT是專為快閃儲存單元制定的檔案系統,使用者可選擇是否啟用(若不啟用,則維持FAT32),而硬碟仍然是使用NTFS系統。

XP需修正機碼,才能辨識exFAT磁碟
由於目前僅有Vista作業系統能支援exFAT,所以一旦將exFAT格式的隨身碟連接到XP或其他環境的電腦,系統將無法讀取,並顯示「磁碟尚未格式化」訊息。這是由於非Vista SP1的作業系統內,缺少了與exFAT格式相關的驅動程式,以及動態程式連結庫的原因。這時我們若照下列步驟操作,其實也不會太難。

1.複製exFAT關聯檔案至XP
在Vista環境下執行Vista SP1的安裝檔(Windows6.0-KB936330-X86-wave1filter-031)後,系統會自動建立一個安裝暫存資料夾(位於 Windows\winsxs),我們可以在此資料夾內找到uexfat.DLL(動態程式連結庫),以及exfat.sys(驅動程式)2個檔案。

如果要讓XP也能讀取exFAT格式的隨身碟,就必須先將uexfat.DLL複製到windows\system32資料夾下,並將exfat.sys複製到windows\system32\drivers資料夾下。

2.更改XP登錄機碼
複製檔案完成後,還必須在XP環境中加入exFAT服務的登錄機碼。(修改的機碼內容請參考:ithelp.ithome.com.tw/question/10001659)不過值得注意的是,修改機碼存在一定的風險,嚴重時可能導致系統無法開機,我們建議先在虛擬環境中測試,如果沒有發生異常狀況再套用。

而且由於exFAT並非開放格式,因此只適用於微軟作業系統,其他像是Linux或OS X等要支援這種檔案系統,都無法透過手動修改的方式。

[ 本帖最後由 冷奴 於 2008-9-11 06:30 AM 編輯 ]
作者: 新聞小子    時間: 2008-9-17 10:45 PM

又學到野,多謝分享!
作者: littliac    時間: 2008-9-25 11:15 AM

嗯,一篇好资料,
thx
作者: Triangel    時間: 2008-9-25 12:21 PM

原帖由 冷奴 於 2008-9-11 06:21 AM 發表
我有一個8GB的USB隨身碟,裡面只裝了不到1GB的檔案,但是再將大小為4.5GB的檔案存進去時,為什麼沒辦法做到?

這是由於檔案系統具有容量限制的關係。在過去,由於電腦硬體效能及檔案複雜性的設計,微軟發明的FAT(File Allocation ...
多謝支持26fun電腦區
若言是轉載,請標明是轉載文章
Thanks
作者: 三世風流    時間: 2008-9-28 04:08 PM

獲益良多,多謝賜教!




歡迎光臨 娛樂滿紛 26FUN (http://26fun.com/bbs/) Powered by Discuz! 7.0.0