EXFAT文件系統研究

EXFAT文件系統研究

華山劍客
 
 
 2009年1月9日
 
打算在年內這十幾天的時間內,把EXFAT文件系統弄明白一個大概,不知是否能實現......網上這方面的資料太少了..........

2009年1月17日
  今天終於把EXFAT文件系統中的DBR搞定!明天開始研究根目錄、子目錄、文件及刪除數據後的數據特徵。這次的研究給我的感覺是:E文和計算機語言的基礎知識太重要了。

2009年1月18日
    今天基本上把根目錄、子目錄、文件的數據特徵及刪除後的變化情況弄明白了一些,但還有幾個沒弄清楚的問題有待以後再研究:
    1、在做寫入和刪除的實驗時,只有簇的位圖數據在變化,而FAT的數據沒有任何變化,這是一個百思不解的問題:FAT沒有變化,文件的各簇是如何串聯在一起?FAT的存在有何意義?(已解決 2009年2月2日)
    2、根目錄中有一個type =:82h CharUpperTableFile 它在文件系統中起什麼作用?
 (大寫字母換算表,主要的作用是用於文件命名。注:網友“北大資源”告訴我的  2009年2月11日)
    3、FAT文件系統中通過2E和2E2E來實現子目錄與父目錄間的聯結,NTFS中通過文件記錄中的本文件MFT號和父目錄MFT號來聯結,但EXFAT中好像看不出是通過什麼形式將子目錄(或者文件)與父目錄聯結起來(只能從上到下,不能從下到上)?
 (這個問題至今沒有找到答案,但對數據恢復,意義並不重要,所以也不想再研究了  2009年2月11日)
對於EXFAT的研究到此爲止,以後有時間再研究,總之,這次對EXFAT文件系統的研究基本上達到我預期的目標!!

2009年1月28日
 今天開始繼續研究EXFAT,這次主要是寫一些相關的模版:DBR 根目錄 子目錄 以及其它內容。
2009年2月1日
  DBR 根目錄 子目錄模版完工(根目錄模版還需要改進!)
 
DBR模版
 
 
根目錄模版
 
 
文件/文件夾目錄項模版
 
 
2009年2月2日
  昨天晚上做了2小時的實驗,終於弄清楚了原來三個問題中的第一個問題!當文件存儲時沒有碎片時,FAT表沒有變化(不寫入FAT內容),當文件在儲存時有碎片產生,才向FAT表中寫入數據。這樣做可能是爲了減小數據寫入的量,爲提高效率而設計的。編寫文件系統的微軟工程師頗費了一番心思。
 
 
2009年2月11日
 通過幾天的實驗(修改文件名、刪除文件或者文件夾、刪除後手工恢復、改變文件或文件夾路徑、向文檔中加入新的內容觀察是否產生碎片),給我印象最深的有2點:EXFAT儘可能的少的讓文件產生碎片,比如:在一個WORD文檔是重新編輯,加入新的內容後,它會重新在另一個位置保存這個數據,讓文件儘可能少的產生碎片,這樣做的目的我想不是爲了便於恢復數據。而是想使系統讀取數據在速度上有一個大的提升;和FAT相比,EXFAT中加入了保護功能,所以在用WINHEX修復EXFAT分區上的數據時,一定要記住:不要隨意修改文件目錄項中的文件名,除非你能計算出文件名的hash值!否則,會丟失原來正常的數據!!而且系統一旦發現分區的數據被非法修改(像剛纔說的改動文件名),分區會進入寫保護狀態,只能讀取數據,不能寫入數據。
  EXFAT的研究,今天真的要停止了,開學了,現在要好好幹我的本職工作。
 
 
2009年3月1日
   備忘:今天在學習HFS+文件系統時,聯想到EXFAT中要研究的2個問題,現記下,以後有時間做實驗驗證:
  實驗一:當寫入文件刪除後,會騰出空間,當再次寫入數據時,如果寫入的數據小於上次刪除的那個數據的空間,這時數據是寫入原來刪除的位置,還是從後面的大可用空間開始寫入數據?我的猜想是從原來刪除的位置,因爲這個空間可以容納這個數據。以前做過實驗,刪除後重啓,再寫入數據,好像是從後面大可用空間開始寫入,但當時沒注意寫入的數據的大小是否比刪除的數據是大還是小!
  實驗二:在HFS+的DBR中有一個寫保護標誌,那麼EXFAT中估計應該也有一個這樣的標誌,以後有時間研究一下是在什麼位置?

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章