《new-ch6-6.6實例研究windows2000&xp文件系統(tǒng)》由會員分享,可在線閱讀,更多相關(guān)《new-ch6-6.6實例研究windows2000&xp文件系統(tǒng)(43頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,6.6實例,研究,:,Windows 2000/XP,文件系統(tǒng),6.6.1,Windows 2000/XP,文件系統(tǒng)概述,6.6.2,Windows2000/XP,文件系統(tǒng)模型和,FSD,體系結(jié)構(gòu),6.6.3,NTFS,文件系統(tǒng)驅(qū)動程序,6.6.4,NTFS,在磁盤上的結(jié)構(gòu),6.6.5,NTFS,的,實現(xiàn)機(jī)制,6.6.6,NTFS,可恢復(fù)性支持,6.6.7,NTFS,安全性支持,6.7.1,Windows 2000/XP,文件系統(tǒng)概述,Windows 2000/XP,支持傳統(tǒng)的,FAT12、FAT16、FA
2、T32,文件系統(tǒng),Windows 2000/XP,支持:只讀光盤,CDFS、,通用磁盤格式,UDF、,高性能,HPFS,等文件系統(tǒng)。,Windows NT,提供一個全新的文件系統(tǒng),NTFS(New Technology File System)。,NTFS,具有的特性,可恢復(fù)性:,安全性:,文件加密:,數(shù)據(jù)冗余和容錯:,大磁盤和大文件:,數(shù)據(jù)流:,通用的索引機(jī)制:,基于,Unicode,的文件名:,動態(tài)添加卷磁盤空間:,動態(tài)壞簇重映射:,磁盤配額:,稀疏文件:,壓縮技術(shù):,分布式鏈接跟蹤:,POSIX,支持,:,6.6.,2,Windows2000/XP,文件系統(tǒng)模型和,FSD,體系結(jié)構(gòu),Wi
3、ndows,文件系統(tǒng)模型(1),I/O API,過濾驅(qū)動程序,文件系統(tǒng)驅(qū)動程序,中間驅(qū)動程序,過濾驅(qū)動程序,過濾驅(qū)動程序,設(shè)備驅(qū)動程序,HAL,物理設(shè)備,I/O,管理器,NT,執(zhí)行體,文件系統(tǒng)驅(qū)動程序,1本地,FSD(1),應(yīng)用程序接口,I/O,管理器,文件系統(tǒng)驅(qū)動程序,存儲設(shè)備驅(qū)動,物理磁盤,用戶態(tài),核心態(tài),物理設(shè)備,本地,FSD(2),本地,FSD,包括:,Ntfs,.sys,,Fastfat,.sys,,Udfs,.sys,,CDfs,.sys,和,Raw FSD,等。,本地,FSD,負(fù)責(zé),向,I/O,管理器注冊自己,當(dāng)開始訪問卷時,,I/O,管理器將調(diào)用,FSD,來進(jìn)行卷識別。,本地,
4、FSD(3),本地,FSD,還創(chuàng)建一個設(shè)備對象表示所裝載的文件系統(tǒng)。,本地,FSD,用高速緩存管理器來緩存文件系統(tǒng)數(shù)據(jù),它與內(nèi)存管理器一起實現(xiàn)內(nèi)存文件映射。,本地,FSD,還支持文件系統(tǒng)卸載操作。,2.遠(yuǎn)程,FSD(1),應(yīng)用程序,I/O,管理器,遠(yuǎn)程,FSD,(,重定向器),客戶端,本地,FSD,遠(yuǎn)程,FSD,(,服務(wù)器),存儲設(shè)備驅(qū)動,物理磁盤,核心態(tài),用戶態(tài),核心態(tài),用戶態(tài),服務(wù)器端,遠(yuǎn)程,FSD(2),遠(yuǎn)程,FSD,有兩部分組成:客戶端,FSD,和服務(wù)器端,FSD。,前者允許應(yīng)用程序訪問遠(yuǎn)程文件和目錄,客戶端,FSD,接收來自應(yīng)用程序的,I/O,請求,轉(zhuǎn)換為網(wǎng)絡(luò)文件系統(tǒng)協(xié)議命令,再通過
5、網(wǎng)絡(luò)發(fā)送給服務(wù)器端,FSD。,服務(wù)器端,FSD,監(jiān)聽網(wǎng)絡(luò)命令,接收網(wǎng)絡(luò)文件系統(tǒng)協(xié)議命令,并轉(zhuǎn)交給本地,FSD,去執(zhí)行。,3,FSD,與文件系統(tǒng)操作(1),FSD,的作用(1),缺頁事件,管理器,臟頁寫,虛擬內(nèi)存管理器,延遲寫,提前讀,緩存管理器,文件系統(tǒng),驅(qū)動程序,存儲設(shè)備,驅(qū)動程序,缺頁中斷,NtCreateSection,(),NtRead,File(),NtWriteFile,(),IRP,IoPageRead,File(),IoAsynchronous,PageWrite,(),CcCopyRead,(),CcCopyWrite,(),FastIoRead,(),FastIoWrite
6、,(),非,緩存頁面,I/O,MmCreateSection,(),MmFlushSection,(),FSD,與文件系統(tǒng)操作(2),FSD,的作用(2),高速緩存延遲,寫,高速緩存提前讀。,內(nèi)存臟頁寫,內(nèi)存缺頁處理。,6.6.3,NTFS,的實現(xiàn)層次(1),NTFS,及其他文件系統(tǒng)如,FAT、HPFS、POSIX,等都結(jié)合在,I/O,管理器中,采用文件系統(tǒng)驅(qū)動程序?qū)崿F(xiàn)。,文件系統(tǒng)的實現(xiàn)采用,OO,模型,文件、目錄作為對象來管理,文件對象由,I/O,管理器管理。,用戶和系統(tǒng)打開文件表現(xiàn)為每個進(jìn)程一個進(jìn)程對象表及其所指向的具體文件對象。,NTFS,的實現(xiàn)層次(2),NTFS,及其相關(guān)組件(1),
7、I/O,管理器,NTFS,驅(qū)動程序,容錯驅(qū)動程序,磁盤驅(qū)動程序,日志文件服務(wù),高速緩存管理器,虛擬內(nèi)存管理器,紀(jì)錄事務(wù),讀寫文件,把數(shù)據(jù),從磁盤,加載到,內(nèi)存,寫高速緩存,訪問映射的文件或轉(zhuǎn)存高速緩存,轉(zhuǎn)存日,志文件,讀寫鏡像或帶區(qū)的卷,讀寫,磁盤,NTFS,數(shù)據(jù)結(jié)構(gòu),對象管理器數(shù)據(jù)結(jié)構(gòu),句柄表,進(jìn)程,文件對象,文件對象,NTFS,數(shù)據(jù)庫,(磁盤上的結(jié)構(gòu)),主控,文件表,NTFS,數(shù)據(jù)結(jié)構(gòu),(用來管理磁盤的內(nèi)存結(jié)構(gòu)),數(shù)據(jù)屬性,用戶定義屬性,文件,控制塊,流控,制塊,6.6.4,NTFS,在磁盤上的結(jié)構(gòu)(1),NTFS,卷中存放的所有數(shù)據(jù)都包含在一個,NTFS,元數(shù)據(jù)文件中,包括定位和恢復(fù)文件
8、的數(shù)據(jù)結(jié)構(gòu)、引導(dǎo)程序數(shù)據(jù)和記錄整個卷分配狀態(tài)的位圖。,物理磁盤可以組織成一個或多個卷。卷與磁盤邏輯分區(qū)有關(guān),由一個或多個簇組成,隨著,NTFS,格式化磁盤或磁盤的一部分而創(chuàng)建,其中鏡像卷和容錯卷可能跨越多個磁盤。,NTFS,在磁盤上的結(jié)構(gòu)(2),NTFS,的基本分配單位是簇,它包含整數(shù)個物理扇區(qū);而扇區(qū)是磁盤中最小的物理存儲單位。,扇區(qū)通常存放512個字節(jié),,但,NTFS,并不認(rèn)識扇區(qū)。,簇的大小可由格式化命令或格式化程序按磁盤容量和應(yīng)用需求來確定,可以為512,B、1KB、2KB、,最大可達(dá)64,KB。,NTFS,在磁盤上的結(jié)構(gòu)(3),NTFS,使用邏輯簇,號,LCN,和虛擬簇號,VLN,來
9、定位簇。,LCN,是對整個卷中的所有簇從頭到尾進(jìn)行編號;,VCN,則對特定文件的簇從頭到尾進(jìn)行編號,以方便引用文件中的數(shù)據(jù)。,簇的大小乘,以,LCN,,就可以算出卷上的物理字節(jié)偏移量,得到物理盤塊地址,。,VCN,可以映射,成,LCN,,不要求物理上連續(xù)。,主控文件表,MFT(1),MFT,是,NTFS,卷結(jié)構(gòu)的中心。使用文件記錄數(shù)組來實現(xiàn)。,NTFS,忽略簇的大小,每個文件記錄的大小被固定為,1,KB。,當(dāng),NTFS,首次訪問某個卷時,必須“裝配”該卷,會查看引導(dǎo)文件,找到,MFT,的物理磁盤地址。,MFT,自己的文件記錄是表中的第一項;第二個文件記錄指向位于磁盤中間的稱作“,MFT,鏡像”
10、的文件,該文件包含有,MFT,前面幾行的副本。,主控文件表,MFT(2),MFT,中,NTFS,元數(shù)據(jù)文件的文件記錄,MFT($,Mft,)/*,記錄卷中所有文件的所有屬性,MFT,副本($,MftMirr,)/*MFT,表前9行的副本,日志文件($,Logfile,)/*,記錄影響卷結(jié)構(gòu)操作,系統(tǒng)恢復(fù)用,卷文件($,Volume)/*,卷名,卷的,NTFS,版本等信息,屬性定義表($,AttrDef,)/*,定義卷的屬性類型,如可恢復(fù)性,根目錄($/)/*存放根目錄內(nèi)容,位圖文件($,Bitmap)/*,盤空間位圖,每位一簇,引導(dǎo)文件($,Boot)/*Win2000/XP,引導(dǎo)程序,壞簇文
11、件($,BadClus,)/*,記錄磁盤壞道,安全文件($,Secure)/*,存儲卷的安全性描述數(shù)據(jù)庫,用戶文件和目錄,大寫文件($,UpCase,)/*,包含大小寫字符轉(zhuǎn)換表,擴(kuò)展元數(shù)據(jù)目錄($,Ext.metadata Directory),主控文件,表,MFT(3),NTFS,把卷的分配狀態(tài)記錄在位圖文件(,bitmap file),中,它們中的每一位代表卷中的一簇,標(biāo)識該簇是空閑的還是已被分配給了一個文件。,NTFS,和,FAT,文件系統(tǒng)的文件名長度在255個字符以內(nèi)。文件名可以包括,Unicode,字符、空格和多個句點。并可以映射到,DOS,和,POSIX,的名字空間。,6.6.5
12、,NTFS,的實現(xiàn)機(jī)制,1 文件引用號,NTFS,卷上的每個文件都有一個64位的唯一標(biāo)識,稱文件引用號(,File Reference Number)。,它由兩部分組成:一是文件號,二是文件順序號。文件號為48位,對應(yīng)于該文件在,MFT,中的位置。,2.文件命名,NTFS,路徑名中的每個文件名/目錄名的長度可達(dá)255個字節(jié),可以包含,Unicode,字符,多個空格及句點。,MS-DOS,文件系統(tǒng)文件名。,POSIX,子系統(tǒng)文件名。,3 文件屬性,NTFS,將文件作為屬性/屬性值的集合來處理,,文件數(shù)據(jù)是未命名屬性的值,,其他文件屬性包括文件名、文件擁有者、文件時間標(biāo)記等。,屬性流,每個屬性由單
13、個流組成(簡單的字符隊列)。,NTFS,并不對文件進(jìn)行操作,而只是對屬性流的讀寫。,NTFS,提供對屬性流的操作包括:創(chuàng)建、刪除、讀取以及寫入。,讀寫操作是針對文件的未命名屬性的,對已命名的屬性則可通過已命名的數(shù)據(jù)流句法來進(jìn)行操作。,常駐屬性,小文件的所有屬性值存在,MFT,的文件記錄中。當(dāng)屬性值能直接存放在,MFT,中時,該屬性就稱為常駐屬性。,標(biāo)準(zhǔn)信息 文件名 文件數(shù)據(jù),小文件的,MFT,記錄,非常駐屬性(1),大文件或大目錄的所有屬性,不可能都常駐在,MFT,中。如果一個屬性太大而不能存放在只有1,KB,的,MFT,文件記錄中,,NTFS,將從,MFT,之外分配區(qū)域。這些區(qū)域稱為一個擴(kuò)展
14、(,extent),,它們可用來存儲屬性值,如文件數(shù)據(jù)。,值存儲在擴(kuò)展中而不是在,MFT,文件記錄中的屬性稱為非常駐屬性。,非常駐屬性(2),存儲在兩個擴(kuò)展中的非常駐屬性,數(shù)據(jù),標(biāo)準(zhǔn)信息 文件名,HPFS,擴(kuò)展屬性,數(shù)據(jù),數(shù)據(jù),非常駐數(shù)據(jù)屬性,VCN-LCN,編號,標(biāo)準(zhǔn)信息 文件名 數(shù)據(jù),數(shù) 據(jù),0 1 2 3,1278 1279 1280 1281,數(shù) 據(jù),4 5 6 7,1300 1301 1302 1303,VCN,LCN,非常駐數(shù)據(jù)屬性,VCN-LCN,映射,標(biāo)準(zhǔn)信息 文件名 開始,VCN,開始,LCN,簇數(shù),數(shù) 據(jù),0 1 2 3,1278 1279 1280 1281,數(shù) 據(jù),4
15、5 6 7,1300 1301 1302 1303,VCN,LCN,0 1278 4,4 1300 4,4 文件目錄(1),NTFS,系統(tǒng)中,文件目錄僅僅是文件名的一個索引。,NTFS,使用了一種特殊的方式把文件名組織起來,以便于快速訪問。,當(dāng)創(chuàng)建一個目錄時,,,NTFS,必須,對目錄中的文件名屬性進(jìn)行索引。,文件目錄(2),文件索引,標(biāo)準(zhǔn)信息 文件名 空,文件1 文件2 文件3,小目錄的,MFT,記錄,文件目錄(3),大目錄的,MFT,記錄,索引根,標(biāo)準(zhǔn)信息文件名,索引分配 位圖,文件1 文件2,文件4 文件5 文件6,索引緩沖區(qū),文件3 文件7,6.6.6,NTFS,可恢復(fù)性支持,NTFS
16、,通過日志記錄(,logging),實現(xiàn)文件的可恢復(fù)性。改變文件系統(tǒng)的子操作在磁盤上運(yùn)行前,先被記錄在日志文件中。,當(dāng)系統(tǒng)崩潰后,,NTFS,根據(jù)記錄在日志中的文件操作信息,對那些部分完成的事務(wù)進(jìn)行重做或撤銷,保證磁盤上文件的一致性,這種技術(shù)稱“預(yù)寫日志記錄(,write-ahead logging)”。,文件可恢復(fù)性的實現(xiàn)要點(1),日志文件服務(wù),LFS,是一組,NTFS,驅(qū)動程序內(nèi)的核心態(tài)程序,,,NTFS,通過,LFS,例程來訪問日志文件。,LFS,分兩個區(qū)域:重啟動區(qū)和無限記錄區(qū),前者保存的信息用于失敗后的恢復(fù),后者用于記錄日志。,NTFS,不直接存取日志文件,而是通過,LFS,進(jìn)行,,LFS,提供了包括:打開、寫入、向前、向后、更新等操作。,文件可恢復(fù)性的實現(xiàn)要點(2),日志記錄類型允許用戶在日志文件中寫入任何類型的記錄,更新記錄和檢查點記錄是支持的兩種主要類型的記錄,在系統(tǒng)恢復(fù)過程中起主要作用。,更新記錄。,檢查點記錄。,文件可恢復(fù)性的實現(xiàn)要點(3),可恢復(fù)性通過,LFS,來實現(xiàn),恢復(fù)只針對文件系統(tǒng)的數(shù)據(jù),不能保證用戶數(shù)據(jù)的完全恢復(fù)。,NTFS,維護(hù)兩張表:,事務(wù)表;,臟頁