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