8.30.2007

TFAT Overview

MSDN 翻的:

傳統的FAT 檔案系統在修改檔案的過程中有機會被中斷.所以Data Loss 和檔案系統毀損的現象常常會在拔出Stroage Card或是斷電時發生.

TFAT 檔案系統利用"transaction-safe"的操作, 讓這樣的狀況部會發生.

TFAT利用兩個FAT Table : FAT0, FAT1。 所有的檔案操作會先對FAT1操作。當操作完成時,再將FAT1 copy 到FAT0。

在確認所有的操作都完成後後,才會修改到 FAT0,所以如果操作完成前被中斷,FAT0 還是維持上一個完整的狀態。

TFAT的預設是在對目錄操作時,才會backup FAT。

如果想要在作 file 操作時也backup FAT. 可以把 TransactData registry key 設為 1.
如果把 ForceWriteThrough 也設為 1, 每次 write operations 完成後,都會 backup FAT。

當修改某一筆檔案資料時, TFAT 先找到一個 new cluster ,儲存修改的部份,然後修改FAT chain,把這個clust 替代原來的部份. 這樣是為了避免在修改完成前,被中斷掉,導致原來的檔案資料被修改,但又沒有修改完畢 ( currupt).

TFAT 檔案系統適用於 non-removable media 例如 NAND and NOR flash memory.
Removable media 也能能使用 TFAT, 但是在Desktop 環境(Windows)使用TFAT 裝置可能會有問題. 因為Desktop 環境的作業系統並沒有實做TFAT 檔案系統, 他還是會用舊有的FAT 檔案系統來處理TFAT 的裝置.

如果TFAT裝置是在某種(critical operation)下從ce裝置取出,Windows 可能沒辦法正確辨識TFAT 內容.

在Windows desktop operating system中對TFAT裝置所作的修改,即使放回CE裝置下,都不再是 Transaction Safe。
如果Windows 在TFAT 裝置中create一個目錄,在放到CE裝置,則從此所有對該目錄的操作都不是transation sage.
除此之外TFAT裝置在正確操作下(也就是在CE中) Create的目錄,放到Desktop後將無法被刪除。I


歸納一下
  • TFAT 就是利用backup FAT的方法,防止在 currpt。
  • bacup FAT 的時機,default 是在有目錄操作時才作,但是可以修改registry ,讓他可以在所有修改後都backup。
  • Windows 可以讀寫TFAT,但是會對TFAT有不好的影響,所以最好不要這樣作,不好的影響包括:
    • 經過 Windows 修改的file,不再是transation safe.
    • CE create的目錄,在Windows無法刪除。

實際操作:
在registry 加上FormatTFat,將partition 刪掉,重新安裝OS。

  • 如果該partition 是以FAT32 (相容)模式format,用mass storage 看是一切正常的 (只有看)。
  • 如果該partition 是以FAT16 (相容)模式format,用mass storage 看,會出現一個HIDDEN_ROOT 的folder,原來在根目錄的data都變成在這個 HIDDEN_ROOT 下。
也如說明所述:
在CE中create的folder,在mass storage mode,Windows 無法刪除 (但是file是可以刪除的)。
自己連一下.. 上次寫過的 .. TFAT : Transation Safe FAT

沒有留言: