從 FAT 文件系統(tǒng)到 NTFS 的磁盤分區(qū)轉換需要一定的可用磁盤空間,以用于建立 NTFS 磁盤結構。本文介紹使用 Convert.exe 將 FAT 轉換為 NTFS 的步驟并討論轉換所需要的空間。
FAT 和 NTFS 使用不同的磁盤結構表示文件的空間分配。這些結構通常被稱作圖元數(shù)據(jù)或文件系統(tǒng)的開銷。
FAT 文件系統(tǒng)的圖元數(shù)據(jù)由下列各項組成:即引導扇區(qū)、一個或多個文件分配列表、一定大小的根目錄結構以及與子目錄中的文件數(shù)目相關的每個子目錄的可變空間。
與 FAT 和 NTFS 相關的另一種開銷與兩種文件系統(tǒng)按一定大小的簇分配磁盤空間有關。這些分配單元或簇的實際大小是在格式化時確定的,默認大小取決于卷的大小。對于大小相近的卷而言,NTFS 所默認的簇的大小小于 FAT 的默認大小。
由于文件數(shù)據(jù)的空間僅可以按整個簇的數(shù)量進行分配,所以在 FAT 卷上即使一個字節(jié)文件最后也將使用相當于一個簇的磁盤空間。NTFS 的情況與 FAT 類似,但是相比 FAT 稍微復雜一些,在本文中將不做詳細介紹。
與 FAT 一樣,NTFS 有一定數(shù)量的容量開銷與一定數(shù)量的各個文件的開銷。為了支持 NTFS 的高級功能(如可恢復性、安全性、大容量支持等等),NTFS 圖元數(shù)據(jù)開銷稍大于 FAT 圖元數(shù)據(jù)開銷。另一方面,由于 NTFS 簇開銷小于 FAT 簇開銷,即使不使用 NTFS 文件壓縮,NTFS 卷上通常也能存儲不多于但至少也會等同于 FAT 卷上的數(shù)據(jù)量。
為避免在轉換過程中由于轉換失敗而使文件受到破壞的可能性,Convert.exe 必須使用 FAT 文件系統(tǒng)所認可的可用空間建立 NTFS 圖元數(shù)據(jù)。這樣,如果轉換無法完成,用戶文件的 FAT 表示仍舊有效。使得該方法復雜化的原因在于其中一個 NTFS 數(shù)據(jù)扇區(qū)必須占用磁盤上的指定位置,同時數(shù)量有限的某些其它結構必須占用臨接扇區(qū)。
轉換過程的一般概述如下:
- 為固定位置的 NTFS 結構與其它臨接數(shù)據(jù)(如有必要)創(chuàng)建一些空位(即重新分配 FAT 簇)并保存新的 FAT。例如,如果由于不可讀的原因,必要的扇區(qū)無法使用,轉換過程會失敗且 FAT 卷與試圖轉換前的狀態(tài)將保持一致。
- 在 FAT 可用空間中創(chuàng)建 NTFS 基本數(shù)據(jù)結構。它們是適用于任何 NTFS 卷的固定大小的表示結構。這些表的大小可能因卷的大小而有所不同,但這并不取決于卷上的文件的個數(shù)。
- 在 FAT 可用空間中創(chuàng)建 NTFS 主控文件表與目錄列表。該步驟所需的空間是可變的并取決于在 FAT 卷上的文件總個數(shù)。
- 將那些由 FAT 指定結構所使用的 NTFS 簇在 NTFS 位圖中標記為可用。轉換完成之后,F(xiàn)AT 圖元數(shù)據(jù)開銷可以重新作為 NTFS 的可用空間。
- 寫 NTFS 引導扇區(qū)。這是導致卷被識別為 NTFS 而非 FAT 的最后一步操作。如果轉換在此步驟之前的任一步驟失敗,該卷將仍將是有效的 FAT 卷并將識別為 FAT 卷。
由于在任何時候均有可能發(fā)生崩潰,上述過程最大限度減小了磁盤破壞的可能性。
備注:幾乎所有寫操作是到 FAT 可用空間的,因此轉換失敗會使 FAT 保持原樣。
例如,只有當轉換失敗可能會引起問題時,我們才寫入非可用空間,這些情況包括:
- 在步驟 1 的最后,當“轉換”覆蓋 FAT 時。重新分配簇的算法可以保證:如果在該過程中出現(xiàn)轉換失敗,CHKDSK 將可以修復磁盤而不丟失任何數(shù)據(jù)。
- 在步驟 5,寫引導扇區(qū)時。如果在該步驟中出現(xiàn)故障,且正在轉換的卷是系統(tǒng)分區(qū)(用于引導系統(tǒng)的活動主分區(qū)),就有可能使系統(tǒng)停留在它無法開始的狀態(tài)。發(fā)生這種情況(一般不可能發(fā)生)時,仍有可能使用啟動軟盤啟動系統(tǒng)。
Convert.exe 根據(jù)在 FAT 卷上預先存在文件的個數(shù)以及卷的大小進行計算以統(tǒng)計出在開始轉換之前需要多少可用空間。對于標準硬件(每個扇區(qū)有 512 字節(jié)的硬盤),計算方法為:
- 開始時,將卷的大小(以字節(jié)為單位)除以 100。如果該值小于 1,048,576,則取 1,048,576。如果該值大于 4,194,304,則取 4,194,304。
- 對上述值加上以字節(jié)為單位的卷大小除以 803 的數(shù)值。
- 對上述值加上卷上的文件與目錄的個數(shù)乘以 1280 的數(shù)值。
- 對上述值加上 196,096。
除上述算法之外,如果在 FAT 卷上有擴展屬性信息,Convert.exe 將考慮所需要的額外空間。擴展屬性信息通常不提供,而且在系統(tǒng)已運行 OS/2 且使用擴展屬性時才考慮提供。
上述算法基本上反映了由 Convert.exe 所執(zhí)行的算法。在給定系統(tǒng)上所獲得的實際結果可能會稍微有所不同。
備注:這是在嘗試轉換之前 Convert.exe 所需要的可用空間。該算法考慮了在 FAT 可用空間中可能遇到壞扇區(qū)的可能性。但是,在卷有足夠可用空間可以開始轉換且發(fā)現(xiàn)磁盤空間的重要碎片不可用的情況下,轉換過程可能會失敗。如上所述,這將不會導致磁盤損壞。卷應自動退回為 FAT 的狀態(tài)。