簡介
NTFS是一個日誌檔案系統,這意味著除了向磁碟中寫入信息,該檔案系統還會為所發生的所有改變保留一份日誌。這一功能讓NTFS檔案系統在發生錯誤的時候(比如系統崩潰或電源供應中斷)更容易恢復,也讓這一系統更加強壯。在這些情況下,NTFS能夠很快恢復正常,而且不會丟失任何數據。在很少出錯情況下,微軟表示你需要運行CHKDSK修復程式來對磁碟卷進行維護的機率特別低,其機率不到1%。
功能
NTFS檔案系統所具備3個功能:錯誤預警功能、
磁碟自我修復功能和日誌功能。
錯誤預警功能:在NTFS分區中,如果MFT所在的磁碟扇區恰好出現損壞,NTFS檔案系統會比較智慧型地將MFT換到硬碟的其他扇區,保證了檔案系統的正常使用,也就是保證了系統的正常運行。而FAT16和FAT32的FAT則只能固定在分區引導扇區的後面,一旦遇到扇區損壞,那么整個檔案系統就要癱瘓。
磁碟自我修復功能:NTFS可以對硬碟上的邏輯錯誤和物理錯誤進行自動偵測和修復。在每次讀寫時,它都會檢查扇區正確與否。當讀取時發現錯誤,NTFS會報告這個錯誤;當向磁碟寫檔案時發現錯誤,NTFS會換一個完好位置存儲數據。
日誌功能:在NTFS檔案系統中,任何操作都可以被看成是一個“事件”。事件日誌一直監督著整個操作,當它在目標地,發現了完整檔案,就會標記“已完成”。假如複製中途斷電,事件日誌中就不會記錄“已完成”,NTFS可以在來電後重新完成剛才的事件。
特點
1、安全性
NTFS檔案系統能夠輕鬆指定用戶訪問某一檔案或目錄、操作的許可權大小。NTFS能用一個隨機產生的密鑰把一個檔案加密,只有檔案的所有者和管理員掌握解密的密鑰,其他人即使能夠登錄到系統中,也沒有辦法讀取它。NTFS採用用戶授權來操作檔案,事實上這是網路作業系統的基本要求有給定許可權的用戶才能訪問指定的檔案。NTFS還支持加密檔案系統(EFS)以阻止未授權的用戶訪問檔案。
2、容錯性
NTFS使用了一種被稱為事務登錄的技術跟蹤對磁碟的修改。因此,NTFS可以在幾秒鐘內恢復錯誤。
3、穩定性
NTFS檔案系統的檔案不易受到病毒和系統崩潰的侵襲。這種抗干擾能力直接源自於Windows NT作業系統的高度安全性能,NTFS檔案系統只能被WindowsNT以及以NT為核心的Windows 2000/XP以上系統所識別。即使FAT和NTFS兩種檔案系統在一個磁碟中並存時,NTFS採用與FAT不同的方法來定位檔案映像,克服了FAT檔案系統存在許多閒置扇區空間的缺點。
4、向下的可兼容性
NTFS檔案系統可以存取FAT檔案系統和HPFS檔案系統的數據,如果檔案被寫入
可移動磁碟(特別是軟碟)時,它將自動採用FAT檔案系統。
5、可靠性
NTFS把重要交易作為一個完整交易來處理,只有整個交易完成之後才算完成,這樣可以避免數據丟失。如向NTFS分區中寫檔案時,會在記憶體中保留檔案的一份拷貝,然後檢查向磁碟中所寫的檔案是否與記憶體中的一致。如果兩者不一致,作業系統就把相應的扇區標為壞扇區而不再使用它(簇重映射),然後用記憶體中保留的檔案拷貝重新向磁碟上寫檔案。如果在讀檔案時出現錯誤,NTFS則返回一個讀錯誤信息,並告知相應的應用程式數據已經丟失。
6、大容量
NTFS徹底解決存儲容量限制,最大可支持16EB。(1024B=1KB,1024KB=1MB,1024MB=1GB,1024GB=1TB,1024TB=1PB,1024PB=1EB)。NTFS的簇大小一般從512位元組到4KB。
7、長檔案名稱
NTFS允許長達255個字元的檔案名稱,突破FAT的8.3標準限制(FAT規定主檔案名稱為8個字元擴展名為3個字元)。NTFS檔案系統的最大缺點就是它只能被WindowsNT/2000/XP以上系統、Linux系統所識別。雖然NTFS檔案系統可以存取FAT檔案系統的檔案,但它的檔案卻不能被FAT檔案系統所存取,當系統崩潰時我們只有用軟碟、光碟或隨身碟啟動,啟動後他們用的FAT或FAT32檔案系統是是無法訪問NTFS檔案系統的給數據搶救帶來不便。
系統結構
NTFS和FAT32檔案系統在結構上幾乎是完全不同的兩種檔案系統,NTFS自身具有很多新的特徵,比如安全性、容錯性、檔案壓縮和磁碟配額等,都是相對其他系統特殊的地方。NTFS分區主要由引導扇區、主檔案表(Master File Table,MFT)、系統檔案和檔案存儲區域等4個部分組成。
1、NTFS數據存儲結構
在NTFS檔案系統中,對檔案進行存取都是按照簇分配的,而每個簇都是物理扇區的整數倍,並且簇大小是物理扇區的2的整數次方,但NTFS檔案系統里,簇的大小則是由格式化程式根據卷的大小自動分配。NTFS要使用邏輯簇號(logicalcluster number,簡稱LCN)和虛擬簇號(virtualcluster number,簡稱VCN)來對簇進行定位,同時,通過LCN來對整個卷中的所有簇從頭到尾按照順序進行編號,將卷因子乘以LCN,就可以得到卷上物理位元組的偏移量,從而可去頂物理磁碟的詳細地址。VCN則是對特定檔案的簇從頭到尾按照順序進行編號,方便引用檔案中的數據。在NTFS中,卷上的所有的數據信息都存儲在檔案中,這當中包含了引導程式(即用來獲取及定位檔案的一種數據結構)以及點陣圖檔案(記錄卷使用情況和大小)。一般來說,不論簇的大小會是多少,檔案記錄的大小都將是固定不變的,且為1KB。
2、分區引導扇區
在作業系統引導的過程中,分區引導扇區起著很重要的作用,其中存儲著和卷檔案相關的結構信息和啟動引導程式等。作業系統在建立檔案系統時,生成的BPB參數記錄著NTFS系統中的很多重要信息,包含了每簇扇區數、分區的扇區總數、MFT的起始邏輯簇號、檔案系統標識等信息。在NTFS中,分區上的所有數據都是以檔案的形式存儲的。
3、主檔案表MFT
主檔案表MFT在NTFS檔案系統中處於最核心、最重要的地位,通過MFT可以確定所有檔案在磁碟上的詳細存儲位置。主檔案表由一系列檔案記錄組成,是一個與檔案對應的資料庫,卷中的每一個檔案都包含著一個檔案記錄,其中的第一個檔案記錄是基本檔案記錄,它主要存儲著其它擴展檔案記錄的一些詳細信息。MFT檔案記錄數組中的檔案記錄在物理上是連續的,並且都是從0開始編號。MFT僅供系統自身構架、組織檔案系統使用,被稱作元數據。所有的元檔案名稱字都是以“$”開始,其都是隱藏檔案。MFT表中的前16個元數據是最重要的。為了防止數據的丟失,在卷存儲區中,NTFS系統對它們進行了備份。
4、NTFS檔案屬性
NTFS的檔案記錄屬性一般可以分為兩種:即常駐屬性和非常駐屬性。如果屬性值是存儲在檔案記錄中,這些屬性即稱作常駐屬性;反之,如果屬性值存儲在檔案記錄之外,這些屬性即稱作非常駐屬性。屬性頭的前4個位元組是屬性類型,其中包含著描述檔案基本信息的屬性(如檔案的讀寫特性、檔案的創建時間以及修改時間等)、檔案名稱屬性(如檔案名稱及其長度、分配空間的大小、檔案實際占用空間的大小和檔案的最後訪問時間等)和用於描述檔案內容的數據屬性等內容。
系統優點
NTFS所以被廣泛套用,除了因為Microsoft公司本身在作業系統市場的絕對優勢,其本身也具有諸多優點:
1、NTFS中的所有檔案是以key-value的形式存儲和組織的,能夠迅速地通過檔案屬性key來尋找和定位任意檔案的value值,提高了作業系統對檔案數據的處理效率。
2、為系統檔案或重要檔案建立
安全描述符,凡是通過作業系統或API對檔案進行修改和破壞的行為,都受到作業系統的保護。近年來出現的繞過作業系統或者直接訪問硬體磁碟快閃記憶體等行為,暫時不能通過檔案系統進行保護。
3、NTFS不綁定某個硬體磁碟扇區,當發現磁碟受到破壞或無法讀取數據時,將通過作業系統相關機制對扇區或卷進行復位。檔案系統的這種獨立性,使得NTFS本身具有更高的安全性。
4、具有可擴容的卷空間。作業系統將所有數據按照檔案的形式存儲和統一管理,目的之一是實現連續數據的非連續存儲。在不對信息進行分類區分而是統一管理下,卷的狀態和管理更加容易進行管理。
NTFS & FAT
概念
FAT是
檔案分配表的英文縮寫。自1981年首次問世以來,FAT已經成為一個歷經滄桑的計算機術語。由於時代原因,包括Windows NT、Window 98、MacOS以及多種UNIX版本在內的大多數作業系統均對FAT提供支持。FAT檔案系統限制使用
8.3格式的檔案命名規範,在一個檔案名稱中,句點之前部分的最大長度為8個字元,句點之後部分的最大長度為3個字元。FAT檔案系統中的檔案名稱必須以字母或數字開頭,並且不得包含空格。此外,FAT檔案名稱不區分大小寫字母。
為彌補FAT在功能上的缺陷,Microsoft創建了一種稱作NTFS的新型檔案系統技術。NTFS所提供的新增特性包括容錯性和增強安全性等等。
兼容性
在確定某一分區所需使用的檔案系統類型前,必須首先考慮兼容性問題。如果多種作業系統都將對該分區進行訪問,那么必須使用一種所有作業系統均可讀取的檔案系統。通常情況下,具備普遍兼容性的FAT檔案系統可以勝任這種要求。相比之下,只有Windows NT能夠支持NTFS分區。
這種限制條件僅適用於本地計算機。舉例來說,如果一台計算機上同時安裝了Windows NT與Windows 98兩種作業系統,並且這兩種作業系統都需要對同一個分區進行訪問,那么必須通過FAT方式對該分區進行格式化。與此相反,如果這台計算機上只安裝了WindowsNT一種作業系統,則可以將該分區格式化為NTFS,此時,運行其它作業系統的計算機仍可通過網路方式對該分區進行訪問。
卷容量
另一項決定因素為分區物理容量。FAT最大支持2GB分區容量。如果分區容量超過2GB,必須通過NTFS方式對其進行格式化,或者將其拆分為多個容量較小的分區。需要注意的是,NTFS本身所需耗費的資源多於FAT。如果所使用的分區容量小於200MB,應當選擇FAT檔案系統以避免
NTFS檔案系統自身占用過多磁碟空間,NTFS分區的最大容量為16EB。
容錯性
NTFS還可在不顯示錯誤訊息的情況下自動修復硬碟錯誤。當Windows NT向NTFS分區中寫入檔案時,它將在記憶體中為該檔案保留一個備份。當寫入操作完成後,Windows NT將再次讀取該檔案以驗證其是否與記憶體中所存儲的備份相匹配。如果兩份拷貝內容不一致,Windows NT將把硬碟上的相應區域標記為受損並不再使用這一區域。此後,它將使用存儲在記憶體中的檔案拷貝在硬碟的其它位置上重新寫入檔案。
FAT檔案系統未提供任何安全保護特性。FAT所採取的保護措施便是同時維護檔案分配表的兩份拷貝,如果其中一份拷貝遭到破壞,它將自動使用另一份拷貝對其進行修復。然而,這一功能必須通過諸如Scandisk之類的實用工具方可實現。
安全性
NTFS擁有一套內建安全機制,可以為目錄或單個檔案設定不同許可權。這些許可權可以在本地及遠程對檔案與目錄加以保護。如果正在使用FAT檔案系統,那么安全特性將通過共享許可權加以實現。共享許可權將通過網路對檔案予以保護,該特性無法提供本地保護措施。假設擁有一台包含幾百名用戶的伺服器,而每名用戶又擁有自己的目錄,為對其進行管理,可能需要同時維護數以百計的共享許可權。這些共享許可權可能相互重疊,從而導致更大的複雜性。
系統分區
一種較為理想的解決方案是將系統分區格式化為FAT檔案系統。如果對系統安全性的要求不高,則為系統分區指定較小的分區容量並且不在該分區上存放除Windows系統檔案以外的任何內容。除非未經授權的用戶能夠通過物理方式對計算機進行訪問,否則,FAT檔案系統在安全性方面還是完全值得信賴的。
MFT主控檔案表
除了儲存用戶的檔案和目錄數據外,NTFS將一些用於磁碟管理的數據也儲存在檔案中,當初始化一個NTFS磁碟時,NTFS將創建元數據檔案。
(一)MFT
主控檔案表MFT映射了磁碟上所有檔案和目錄,包括NTFS的元數據檔案。MFT以記錄為單位進行劃分,其本身也是一個由NTFS用MFT中的記錄映射的檔案。這樣的結構使MFT很容易擴展,使NTFS能很有效率地追蹤現存的元數據數量,來決定它們所占用的空間。NTFS在內部使用MFT中的記錄來標識檔案和目錄,這些記錄描述了這些元數據的開始位置信息。因為MFT也是檔案,當MFT變大而其它的檔案使用的簇正好在它原來的結束處之後,
MFT必須在磁碟中找另一處未使用的空間,這樣就導致MFT檔案所映射的簇的順序不連續了。為了避免MFT碎裂,NTFS在MFT周圍保留一定範圍的簇不分配給其它的檔案和目錄,這樣,在MFT需要增長時,能增加找到連續簇的機會,也能儘量少的使MFT靠近其它的數據。因此,在磁碟
剩餘容量較小時,MFT變得破碎的危險將會增加。
(二)MFT中的記錄
NTFS使用屬性儲存所有的檔案和目錄信息。屬性包括:屬性表頭和屬性數據。表頭儲存屬性的類型、名字和標誌,記錄著屬性數據的位置。MFT中的記錄由一個包含關於記錄的基本信息的小表頭和緊跟著的一些屬性組成,這些屬性用於描述記錄所對應的檔案或目錄的數據或特性。NTFS將在MFT記錄裡面直接儲存屬性數據。存儲在MFT記錄中的屬性稱為常駐屬性,其它的稱為非常駐屬性。只有當記錄表頭、屬性表頭、屬性數據都能放入一個記錄時,屬性才能是一個常駐屬性。因此,1KB(通常的MFT記錄大小)是NTFS磁碟上的屬性數據長度的上限。如果屬性的數據是常駐的,屬性表頭將指向在MFT記錄中的數據的位置。由於屬性和大量的數據可能跨越多個MFT記錄,而運行要覆蓋檔案的不同的部分,而運行由多個運行項組成,一個運行項包含一個虛擬簇號(VCN),它是屬性數據內部簇的順序編號;一個邏輯簇號(LCN),它是數據儲存在磁碟上的位置;以及數據在磁碟上所占用空間的連續簇的數量。如果一個檔案有太多屬性要填入MFT記錄中,NTFS將分配附加的記錄並在基本記錄中儲存一個屬性-列表屬性。屬性列表指向在附加記錄中的屬性的位置,列表的每一項對應著一個屬性。
磁碟管理:刪除檔案
當檔案被徹底刪除後,系統會將其主檔案表MFT記錄收回,並加上刪除標記,同時將該檔案所占用的數據區也一併收回,並把$Bitmap元檔案中簇的表示信息使用清空,在對應位置上設為0。對刪除檔案的檔案記錄和數據區所占用的所有空間都可再分配給其他的檔案使用。NTFS系統中的檔案在刪除後,其原先的數據空間如果沒有被新的數據所覆蓋的話,只要FILE記錄還存在,則將很容易找到檔案數據的詳細存儲位置,並能將這些數據準確的恢復出來。如果刪除的檔案包含在其他資料夾中,那么檔案被刪除後,該資料夾也要將該檔案的目錄項刪除。檔案刪除的後遺留的痕跡也可以從主檔案表MFT記錄中獲取到。
作業系統將檔案刪除後,那么檔案原先占用的檔案號可能很快被再次分配,但其數據區中的數據可能要很長時間才被重新分配。
數據恢復
對於數據的恢復,可以根據不同的刪除原理進行數據的恢復:
1、檔案刪除後的恢復
根據分析可知,
NTFS檔案系統中,在檔案被徹底刪除之後,系統會將此檔案記錄中的狀態位元組由檔案使用標誌“01”變為檔案刪除標誌“00”,而其檔案名稱稱、檔案的大小以及Run List等重要屬性都不會發生變化,而且數據區中的內容也不會發生變化,因此可以將檔案數據恢復。但是,如果該檔案不是使用連續的簇號來存儲檔案數據,或者檔案的數據區已被新的數據所占用,即原數據區被覆蓋,那么,檔案就很難被恢復出來。如果數據是使用連續的簇號存儲,且數據區中的數據沒有被新數據覆蓋,那么,就可以使用WinHex等常用恢復軟體進行恢復。只需要選擇數據區的全部內容並進行複製,然後將該檔案的數據區中所有十六進制值保存為一個新檔案,即可實現檔案的恢復。
2、檔案格式化後的恢復
檔案的格式化其實是給分區重新建立檔案系統,
格式化後,分析分區的MFT檔案可發現,檔案的記錄和內容也是完好存在的,其數據區也沒有改變。所以,通過RunList就可以找到這些數據,並有可能將其恢復。但是,如果檔案記錄也被破壞,檔案就很難再被恢復出來。
3、檔案系統損壞的恢復
當某個分區的檔案系統被破壞後,我們是無法打開此分區的,同時系統會提示我們分區沒有格式化,需要重新格式化。此時,可以通過WinHex等軟體打開分區的DBR扇區(扇區中的數據被全部清零),只要能夠找到DBR備份就可以將數據恢復出來。跳轉到硬碟的最後一個分區後,找到數據結束標誌“55AA”,DBR的備份就存儲在分區的最後一個扇區中,將此備份複製到DBR扇區後就可以打開分區了。