2010年10月20日 星期三

FAT簡介

在DOS時代,由於處理器不夠快,硬碟速度也很慢,所以在希望電腦速度能加快的期望之下,就只有盡可能的加速硬碟中檔案的存取速度了,這也是當時電腦增進效能的關鍵之一。

FAT 是 Windows NT 支援的檔案系統中最簡單的一個。FAT 檔案系統的特點在於檔案配置表 (FAT),是位於磁碟區中最「頂端」的真實表格,FAT 表格與根目錄必須儲存在固定的位置,才能正確地找到系統的開機檔案。

但是什麼是檔案系統( File System)?硬碟內容就如同是書本的內容,而檔案系統就有點像是書本的目錄與編排章節的方式,不同的目錄與編排對於閱讀書本內容也會不一樣,所以也延伸出讀取效能與安全性等等。

檔案在磁碟上是以一個稱為叢集(Cluster)為單位的方式來儲存,也就是說任何檔案不論大小,在磁碟中所佔的空間都一定是叢集大小×N (N為自然數),因此為了加快檔案的存取或執行速度,適度的將一個叢集單位所佔用的容量提高會有不錯的效果(因為一次就可以將較多的內容從硬碟中讀取出來),所以當初的FAT16規格便針對當時的硬碟容量不同而制定了不同的叢集單位大小,,大致如下:

0~31MB 512Bytes

32~64MB 1KB

64~127MB 2KB

128~255MB 4KB

256~511MB 8KB

512~1023MB 16KB

1024~2048MB 32KB

所以說從上面的表可以知道,這樣的定義確實讓電腦的系統整體效能都有所改善,但是卻也衍生出另一個問題,就是硬碟空間嚴重的浪費!舉例說明,如果有一台1.2GB的硬碟(就當1200MB吧),根據當時的定義,一個叢集的大小是32KB,也就是說如果你只有一個純文字文件不過5Bytes,儲存在硬碟中的時候卻仍然佔用了32KB的容量(大約32768Bytes)!?一供浪費了32768-5=32763Bytes!

一年一年的過,電腦技術不斷的快速成長,CPU及硬碟速度與當時已不可同日而語!所以當初為了改善效能的規格似乎也沒有必要了!終於,微軟開發出了一種全新的格式,就是WinNT的NTFS!但是在大約1997年時代,由於NTFS格式仍不夠普及,還無法取代FAT格式,於是微軟終於在Win95 OSR2開始提供了新的規格-FAT32,用來解決FAT16所產生的硬碟空間浪費問題。





就先來看一下FAT32和FAT16有什麼不同:

硬碟容量一個叢集大小

260MB~8GB 4KB

8GB~16GB 8KB

16GB~32GB 16KB

32GB以上 32KB

同樣再以一個1.2GB的硬碟來看,同樣的也儲存一個5Bytes的檔案,需要佔用一個叢集,也就是4KB,很明顯的和FAT16比起來,已經減少了許多的浪費。說明到這裡,也許有人會問,那為什麼不乾脆將叢集大小制定為1Bytes,就相當完美啦!?當然,理論上是這樣沒錯,實際上這樣做就會因為存取檔案的時間加長(因為對硬碟存取次數增加),而導致系統效能嚴重降低。在空間與效能的平衡點上,FAT32算是一個折衷方案。



總結來說,FAT32格式所改善的地方大致有二點:

1.減少硬碟空間的浪費,

2.大容量硬碟不再需要分割成好幾個,因為FAT16只能分割到最大2GB,使用FAT32就完全沒有這個問題,甚至可以將數百GB的容量都分割在同一個邏輯磁區中。



DOS 與 Windows 9x/Me 在存入新檔案時,是由前面開始搜尋,找到沒有使用的磁叢就把資料寫到該磁叢,而不去理會這個沒有用的磁叢是否塞得下檔案,如果塞不下,系統又會再去尋找另一個沒有使用的磁叢,像這種檔案不是存放在連續磁叢的情形稱之為檔案離散 ( fragment )。如果硬碟經過長時間使用,經年累月的新增檔案與刪除檔案,這種現象就會更嚴重。一般的說法是,如果磁碟有許多檔案離散的話,存取檔案時,磁頭就會隨著離散的地方移動而降低效率,所以應該定期用『磁碟重組程式』把存放於散落磁叢的檔案搬移到連續的磁叢。



FAT維護



更新 FAT 表格非常重要,但也相當耗時。如果沒有定期更新 FAT 表格,可能導致資料遺失。而更新 FAT 表格之所以非常耗時,是因為每次更新 FAT 表格時,磁碟的讀取頭必須重新放到磁碟機的零號邏輯磁軌。

DOS 分配檔案時是有空間就使用,所以假如您在一張新磁片中依序由別處拷貝 A﹑B﹑C 三個檔案,而後來您刪去了 B 檔案,於是 B 檔案原先佔據的地方變成可以再被利用。當您再拷貝一個大檔案 D,這時 DOS 看到原先 B 檔所佔據的空間可被利用,所以 D 檔案的前半段便在 B 檔案原先的空間,後半段便在 C 檔案之後的空間,於是造成散亂。當檔案不斷的刪除﹑建立,這種情形會越來越嚴重,如果一個檔案分散在各處,那讀取時磁頭得移動到各處,讀取時會變得很慢,所以有許多廠商就發展出重組磁碟的程式。







MBR

剛剛買來的硬碟必定要經過分割、格式化之後才能存放資料。而這分割後的資料記載著每個分割區大小、由那個磁柱到那個磁柱,都記錄在一個稱為分割表 ( partition table )的地方,您可以想像分割表是很重要的資料,如果損壞了,大概就找不著您要的資料了。這麼重要的資料,電腦業界規定都存放於硬碟的第零磁柱、第零磁頭、第一磁區,也就是最前面的磁區裏,這個磁區稱為主啟動記錄 ( 即 MBR,master boot record )。在 MBR 裏除了分割表外,還有啟動程式。每個磁區都佔 512 個位元組,MBR 磁區中的前 446 個位元組 ( 0~445 ) 用來存放啟動資料與程式,而接下來的 64 個位元組就是分割表,最後一個字組 ( 2 個位元組 ) 是 AA55H,作為識別之用。

MBR(Master Boot Record,主要啟動磁區)是位於硬碟的第一個磁區(Cylinder 0、Head 0、Sector 1),意即 MBR 的大小為 512 Bytes。MBR 是由磁碟分割工具(FDISK、SPFDISK、Partition Magic等)在對硬碟做磁碟分割時所建立出來的,MBR 的 512 Bytes 空間中總共分成了二個部份,第一部份為啟動程式(Boot Program),大小為446 Bytes,另一部份即我們俗稱的Partition Table(硬碟分割表),大小為64 Bytes,如下圖所示:








Boot Program 此部份的內容會因不同的磁碟分割工具而有所不同,但程式再怎麼不同,其大小也絕對不會超過 446 Bytes,而且程式的最終的目的都是一樣的。當電腦開機完成硬體的POST(Power On Self Test)後,則BIOS會將開機硬碟之 MBR 中的 Boot Program 載入記憶體中執行,此 Boot Program 是一支讀取"Partition Table"的小程式,其會從硬碟分割表中找出那一個分割區是啟動分割區(Active Partition),並將啟動分割區的第一個磁區中的資料載入,此磁區的資料也是一支小程式,此小程式是用來載入分割區上的作業系統程式,以便啟動欲開啟的作業系統進行資料處理。

接下來我們來談談 MBR 的第二部份 - Partition Table(硬碟分割表),通常為了有效的利用硬碟空間,一般來說我們都會將硬碟做切割的動作,每個切割過後的區域,我們稱之為分割(Partition)。每個分割(Partition)的區域之起始位置及結束位置均不一樣,所以必須要有一個地方來存放這些資訊,這個存放 Partition 資訊的地方就是在 MBR 中的硬碟分割表(Partition Table),每個 Partition 的相關資訊需要 16 Bytes 的空間來記錄,如下圖所示:

 

附註:

啟動狀態:

這個欄位是用來標示此 Partition 是否為啟動分割區(Active Partition),若為 Active Partition,則這個值設定為 80(16),若不是 Active Partition,則這個值設定為 00(16),一個硬碟只會有一個 Active Partition。

分割區型態:

這個欄位是用來標示此 Partition 是屬於何種作業系統或是使用那一種檔案系統,如此才能得知用何種方式存取 Partition 上的資料。

由上面的敘述,我們不難發現一個問題,那就是一個硬碟只能切割四個 Partition,因為 MBR 的 Partition Table 只能記載 4 個分割區的資料,因此為了解決這個 Partition 切割數量的限制,所以將 Partition 種類分成主要分割區(Primary Partition)及延伸分割區(Extend Partition)。主要分割區(Primary Partition)及延伸分割區(Extend Partition)的數量加起來不可超過 4 個,Extend Partition 無法直接使用,必須再細分切割成邏輯分割區(Logical Partition)才可用來存放資料。下表為主要分割區及延伸分割區幾種可能的排列組合方式:




主要分割區數量 1 2 3 1 2 3 4

延伸分割區數量 1 1 1 0 0 0 0





從表我們可以得知硬碟最多可以切割到 4 個主要分割區(Primary Partition)或 3 個主要分割區(Primary Partition)和 1 個延伸分割區(Extend Partition),即外面坊間書上所說的 4P 或 3P + 1E 的意思,如下圖所示。

 





Logical Partition 區域之起始位置及結束位置的相關資訊則記載在每個邏輯分割區的第一個磁區,該磁區的資料結構圖如下(跟 MBR 的結構很類似):




 



相關資訊

記憶體可以分為兩大類:

揮發性記憶體(volatile memory)⇒揮發性記憶體有如SRAM或DRAM等。

非揮發性記憶體(Non-volatile memory)⇒ROM或「快閃記憶體(Flash memory)」。

Flash memory不會因為電容走電而造成資料流失,且其中的NAND (Not-AND) Flash,相較於NOR Flash之下,因擁有大容量、寫入速度較快的優勢,所以目前被大量應用在儲存媒體的開發上,例如固態硬碟(Solid State Disk-SSD)和USB隨身碟等。而NAND Flash主要還分為單層式與多層式兩種類型-SLC(Single Level Cell) & MLC(Multi Level Cell),SLC的優點在於存取速度快且壽命較長,但生產成本高;SLC晶片平均抹寫次數為10萬次,而MLC僅約1萬次。

宇瞻(Apacer)和Diskeeper,軟硬體兩家公司合作推出一款很不一樣的SSD,重點在於它是內建了磁碟重組軟體的SSD+ Optimizer,在記者會現場的RD工程師跟我們透露,拿SSD來做實際的測試,在24小時不停讀寫的情況下,一個禮拜的抹寫次數約400次,假如以一顆MLC的SSD來說,一天8小時的正常運轉,在一年半至兩年就達到了該抹寫次數的上限了,耐久性堪慮。(當然,這只是參考數值)

而宇瞻(Apacer)也意識到了這個癥結性的問題,因此這次推出的SSD+ Optimizer,就是導入了Diskeeper的磁碟重組技術「HyperFast」,其內建的InvisiTasking只需運用極少的系統資源,便可執行「即時」的檔案搬運,使SSD在不影響正常作業的情況下完成重組,如此一來,不僅提升了平時工作的效率,也增長SSD本身的壽命,[同時也支援S.M.A.R.T.和E.C.C.技術的Apacer SSD+ Optimizer,隨著SSD價格的下降,相信也會促使SSD日後取代傳統硬碟市場的趨勢,而受首波衝擊的市場大宗,應該就是筆記型電腦了。 SSD+ Optimizer效能優化大師是宇瞻科技針對SSD及Windows檔案系統的特性,透過軟硬體整合的方式,打造出極具競爭力的SSD解決方案,能有效地預防檔案碎片化,進而大幅提升整體作業系統效能。

SSD+ Optimizer效能優化大師軟體是獨家針對Apacer SSD設計研發,可讓Apacer SSD效能永遠保持在最佳顛峰狀態且事先預防使用者平時因過度繁複的存入、刪取等動作而導致整體效能降低的狀況,並能同時兼顧Apacer SSD的使用壽命。



檔案碎片對SSD有何影響?

經實驗証實,一般消費者在使用電腦三個月之後,因反覆新增刪除舊檔或安裝軟體等動作,約會產生上萬個檔案碎片散布在磁碟各個角落,一旦硬碟上的可用空間變得零碎而分散,檔案系統在寫入一個檔案時,就必須將檔案拆成很多細小的區塊來填入零碎的空間內,此一情況在固態硬碟上,最嚴重的時候可能導致寫入與讀取速度降低80%。

記憶卡是一種很不穩定的儲存媒體,二三個月一定要做一次格式化(記得先全部存檔),不要以為只要還有空間放照片就一年二年一直存入卡裡,不做一下清潔(格式化)的動作,有一天它會不讓你放照片進去





會造成資料變成亂碼或是無法讀取的情況有:

1.記憶卡內部的快閃記憶體(flash)不穩定的問題,如果是這個狀況,你只能乖乖重新格式化才能使用,但是日後一樣有機會出現相同問題。

2.記憶卡內部的控制IC有問題或是不穩定,如果你剛好是這個狀況,我只能說你運氣不好下次出現此問題的機會很高(比第一點更高),原因是之前快閃記憶體(flash)有新製程,全世界只有一家公司生產的控制晶片能夠正常與新製程相容(不是不能使用,而是資料容易遺失或是無法正常辨識),就連生產控制晶片的幾家大廠,都要花三個月以上來解決此問題,萬一你買到的是這個時期生產的,也是沒救。

3.你的記憶卡從手機拿出來放到讀卡機之後,可能是讀卡機的電性不穩,導致你的資料受損,此情形還是只能換比較好的讀卡機(有通過認證的)才能解決。

沒有留言:

張貼留言