ntfs

磁碟格式

NTFS(New Technology File System)是Windows NT內核的系列操作系統支持的、一個特別為網路和磁碟配額、文件加密等管理安全特性設計的磁碟格式,提供長文件名、數據保護和恢復,能通過目錄和文件許可實現安全性,並支持跨越分區。

NTFS對FAT和HPFS作了若干改進,例如,支持元數據,並且使用了高級數據結構,以便於改善性能、可靠性和磁碟空間利用率,並提供了若干附加擴展功能。

簡介


NTFS文件系統最早出現在1993年的Windows NT操作系統中,它的出現大幅度地提高了微軟原來的FAT文件系統的性能。
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徹底解決存儲容量限制,最大可支持16Exabytes(1018)。(1024:1K,1024K=1M,1024M=1G,1024G=1T,1MT=1E)。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個位元組是屬性類型,其中包含著描述文件基本信息的屬性(如文件的讀寫特性、文件的創建時間以及修改時間等)、文件名屬性(如文件名及其長度、分配空間的大小、文件實際佔用空間的大小和文件的最後訪問時間等)和用於描述文件內容的數據屬性等內容。

系統優點


(1)更安全的文件保障,提供文件加密,能夠大大提高信息的安全性。
(2)更好的磁碟壓縮功能。
(3)支持最大達2TB的大硬碟,並且隨著磁碟容量的增大,NTFS的性能不像FAT那樣隨之降低。
(4)可以賦予單個文件和文件夾許可權。對同一個文件或者文件夾為不同用戶可以指定不同的許可權。在NTFS文件系統中,可以為單個用戶設置許可權。
(5)NTFS文件系統中設計的恢復能力無需用戶在NTFS卷中運行磁碟修復程序。在系統崩潰事件中,NTFS文件系統使用日誌文件和複查點信息自動恢復文件系統的一致性。
(6)NTFS文件夾的B-Tree結構使得用戶在訪問較大文件夾中的文件時,速度甚至比訪問卷中較小的文件夾中的文件還快。
(7)可以在NTFS卷中壓縮單個文件和文件夾。NTFS系統的壓縮機制可以讓用戶直接讀寫壓縮文件,而不需要使用解壓軟體將這些文件展開。
(8)支持活動目錄和域。此特性可以幫助用戶方便靈活地查看和控制網路資源。
(9)支持稀疏文件。稀疏文件是應用程序生成的一種特殊文件,文件尺寸非常大,但實際上只需要很少的磁碟空間,也就是說,NTFS只需要為這種文件實際寫入的數據分配磁碟存儲空間。
(10)支持磁碟配額。磁碟配額可以管理和控制每個用戶所能使用的最大磁碟空間。

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
ntfs
本身也是一個由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扇區后就可以打開分區了。