Windows 文件管理高級(jí)手冊(cè)-01
X.1 文件系統(tǒng)簡(jiǎn)介 文件系統(tǒng)是操作系統(tǒng)用于明確存儲(chǔ)設(shè)備(常見的是磁盤,也有基于 NAND Flash 的固態(tài)硬盤)或分區(qū)上 的文件的方法和數(shù)據(jù)結(jié)構(gòu);即在存儲(chǔ)設(shè)備上組織文件的方法。操作系統(tǒng)中負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件 機(jī)構(gòu)稱為文件管理系統(tǒng),簡(jiǎn)稱文件系統(tǒng)。文件系統(tǒng)由三部分組成:文件系統(tǒng)的接口,對(duì)對(duì)象操縱和管理的 軟件集合,對(duì)象及屬性。從系統(tǒng)角度來看,文件系統(tǒng)是對(duì)文件存儲(chǔ)設(shè)備的空間進(jìn)行組織和分配,負(fù)責(zé)文件 存儲(chǔ)并對(duì)存入的文件進(jìn)行保護(hù)和檢索的系統(tǒng)。具體地說,它負(fù)責(zé)為用戶建立文件,存入、讀出、修改、轉(zhuǎn) 儲(chǔ)文件,控制文件的存取,當(dāng)用戶不再使用時(shí)撤銷文件等。下面介紹幾種在 Windows 操作系統(tǒng)中常用的文 件系統(tǒng)。?
FAT 文件系統(tǒng)
FAT 是 File Allocation Table 的簡(jiǎn)稱,是微軟在 Dos/Windows 系列操作系統(tǒng)中共使用的一種文件系統(tǒng)的總 稱。它幾乎被所有的操作系統(tǒng)所支持。 ?FAT 文件系統(tǒng)又分為 3 種,分別是 FAT16、FAT32 和不太常見的 FAT12。
? FAT12: 這是伴隨著 Dos 誕生的“老”文件系統(tǒng)了。它采用 12 位文件分配表,并因此而得名。而以后的 FAT 系 統(tǒng)都按照這樣的方式在命名。在 DOS3.0 以前使用。但是在現(xiàn)在,我們都還能找得到這個(gè)文件系統(tǒng):用 于軟盤驅(qū)動(dòng)器。當(dāng)然,其他地方的確基本上不使用這個(gè)文件系統(tǒng)了。Fat12 可以管理的磁盤容量是 8M。 這在當(dāng)時(shí),沒有硬盤的情況下,這個(gè)磁盤管理能力是非常大的。
? FAT16: 在 Dos2.0 的使用過程中,對(duì)更大的磁盤的管理能力的需求已經(jīng)出現(xiàn)了,所以在 Dos3.0 中,微軟推出 了新的文件系統(tǒng) Fat16。除了采用了 16 位字長(zhǎng)的分區(qū)表之外,F(xiàn)at16 和 Fat12 在其他地方都非常的相 似。實(shí)際上,隨著字長(zhǎng)增加 4 位,可以使用的簇的總數(shù)增加到了 65536。在總的簇?cái)?shù)在 4096 之下的時(shí) 候,應(yīng)用的還是 Fat12 的分區(qū)表,當(dāng)實(shí)際需要超過 4096 簇的時(shí)候,應(yīng)用的是 Fat16 的分區(qū)表。剛推出 的 Fat16 文件系統(tǒng)管理磁盤的能力實(shí)際上是 32M。這在當(dāng)時(shí)是看來是足夠大的。1987 年,硬盤的發(fā)展 推動(dòng)了文件系統(tǒng)的發(fā)展,Dos4.0 之后的 Fat16 可以管理 128M 的磁盤。然后這個(gè)數(shù)字不斷的發(fā)展,一直 到 2G。在整整的 10年中,2G的磁盤管理能力都是大大的多于了實(shí)際的需要。需要指出的是,在 windows95 系統(tǒng)中,采用了一種比較獨(dú)特的技術(shù),叫做 VFat 來解決長(zhǎng)文件名等問題。 FAT16 分區(qū)格式存在嚴(yán)重的缺點(diǎn):大容量磁盤利用效率低。在微軟的 DOS 和 Windows 系列中,磁盤文件 的分配以簇為單位,一個(gè)簇只分配給一個(gè)文件使用,不管這個(gè)文件占用整個(gè)簇容量的多少。這樣,即 使一個(gè)很小的文件也要占用一個(gè)簇,剩余的簇空間便全部閑置,造成磁盤空間的浪費(fèi)。由于分區(qū)表容量的限制,F(xiàn)AT16 分區(qū)創(chuàng)建的越大,磁盤上每個(gè)簇的容量也越大,從而造成的浪費(fèi)也越大。所以,為了 解決這個(gè)問題,微軟推出了一種全新的磁盤分區(qū)格式 FAT32,并在 Windows 95 OSR2 及以后的 Windows ?版本中提供支持。?
? FAT32: Fat32 文件系統(tǒng)將是 Fat 系列文件系統(tǒng)的最后一個(gè)產(chǎn)品。和它的前輩一樣,這種格式采用 32 位的文件 分配表,磁盤的管理能力大大增強(qiáng),突破了 FAT16 2GB 的分區(qū)容量的限制。由于現(xiàn)在的硬盤生產(chǎn)成本 下降,其容量越來越大,運(yùn)用 FAT32 的分區(qū)格式后,我們可以將一個(gè)大硬盤定義成一個(gè)分區(qū),這大大 方便了對(duì)磁盤的管理。 FAT32 推出時(shí),主流硬盤空間并不大,所以微軟設(shè)計(jì)在一個(gè)不超過 8GB 的分區(qū)中,F(xiàn)AT32 分區(qū)格式的每 個(gè)簇都固定為 4KB,與 FAT16 相比,大大減少了磁盤空間的浪費(fèi),這就提高了磁盤的利用率。 FAT16 和 FAT32 文件系統(tǒng)的優(yōu)點(diǎn)是兼容性高,可以被絕大部分操作系統(tǒng)識(shí)別和使用。但是由于出現(xiàn)的比 較早,它們也有很多不足的地方: 單文件最大的尺寸:FAT32 系統(tǒng)支持到 4GB,F(xiàn)AT16 系統(tǒng)只支持到 2GB,在現(xiàn)在高清視頻逐漸普及的今 天,單個(gè)視頻的文件以及遠(yuǎn)遠(yuǎn)超出了 4GB 的容量。 FAT16 和 FAT32 文件系統(tǒng)都不支持對(duì)文件進(jìn)行高級(jí)管理,比如加密、壓縮存儲(chǔ)、磁盤配額等功能。?
NTFS 文件系統(tǒng)?
為了解決 FAT16/FAT32 文件系統(tǒng)安全性差、容易產(chǎn)生碎片、難以恢復(fù)等缺點(diǎn),微軟在 Windows NT 操作 系統(tǒng)和之后的基于 NT 內(nèi)核的操作系統(tǒng)中使用了新的 NTFS 文件系統(tǒng)。Windows 10 中提供的高級(jí)文件管理功 能都是基于 NTFS 文件系統(tǒng)來實(shí)現(xiàn)的。如圖 X-1 所示,這個(gè)磁盤使用的就是 NTFS 文件系統(tǒng)。?
NTFS 文件系統(tǒng)結(jié)構(gòu)總覽:
當(dāng)用戶將硬盤的一個(gè)分區(qū)格式化成 NTFS 分區(qū)時(shí),就建立了一個(gè) NTFS 文件系統(tǒng)結(jié)構(gòu)。NTFS 文件系統(tǒng)與 FAT 文件系統(tǒng)一樣,也是用簇為基本單位對(duì)磁盤空間和文件存儲(chǔ)進(jìn)行管理的。一個(gè)文件總是占有若干個(gè)簇, 即使在最后一個(gè)簇沒有完全放滿的情況下,也是占用了整個(gè)簇的空間,這也是造成磁盤空間浪費(fèi)的主要原 因。文件系統(tǒng)通過簇來管理磁盤管理,并不需要知道磁盤扇區(qū)的大小,這樣就使 NTFS 保持了與磁盤扇區(qū)大 小的獨(dú)立性,從而使不同大小的磁盤選擇合適的簇。 NTFS 分區(qū)也被稱為 NTFS 卷,卷上簇的大小,又稱為卷因子,其大小是用戶在創(chuàng)建 NTFS 卷時(shí)確定的。 和 FAT 文件系統(tǒng)一樣,卷因子的大小和文件系統(tǒng)的性能有著非常直接的關(guān)系。當(dāng)一樣簇占用的空間太小時(shí), 會(huì)出現(xiàn)太多的磁盤碎片,這樣的空間和文件訪問時(shí)間上會(huì)造成浪費(fèi);而相反的當(dāng)一個(gè)簇占用的空間太大時(shí), 直接造成了磁盤空間的浪費(fèi)。因此,最大限度地優(yōu)化系統(tǒng)對(duì)文件的訪問速度和最大限度地減少磁盤空間的 浪費(fèi)是確定簇的大小的主要因素。簇的大小一定是扇區(qū)大小的整數(shù)倍,通常是 2(n 為整數(shù))。 NTFS 文件系統(tǒng)使用了邏輯簇號(hào)(LCN)和虛擬簇號(hào)(VCN)對(duì)卷進(jìn)行管理。其中 LCN 是對(duì)卷的第一個(gè)簇 到最后一個(gè)簇進(jìn)行編號(hào),只要知道 LCN 號(hào)和簇的大小以及 NTFS 卷在物理磁盤中的起始扇區(qū)就可以對(duì)簇進(jìn)行 定位,而這些信息在 NTFS 卷的引導(dǎo)扇區(qū)中可以找到,在系統(tǒng)底層也是用這種方法對(duì)文件的簇進(jìn)行定位的。 找到簇在磁盤中的物理位置的計(jì)算公式是: 每簇扇區(qū)數(shù)*簇號(hào)+卷的隱含扇區(qū)數(shù)(卷之前的扇區(qū)總數(shù))=簇的起始絕對(duì)扇區(qū)號(hào) 而虛擬簇號(hào)則是將特定文件的簇從頭到尾進(jìn)行編號(hào),這樣做的原因是方便系統(tǒng)對(duì)文件中的數(shù)據(jù)進(jìn)行引 用,VCN 并不要求在物理上是連續(xù)的,要確定 VCN 的磁盤上的定位需先將其轉(zhuǎn)換為 LCN。 NTFS 文件系統(tǒng)的主文件表中還記錄了一些非常重要的系統(tǒng)數(shù)據(jù),這些數(shù)據(jù)被稱為元數(shù)據(jù)文件,簡(jiǎn)稱為 “元文件”,其中包括了用于文件定位和恢復(fù)數(shù)據(jù)結(jié)構(gòu)、引導(dǎo)程序數(shù)據(jù)及整個(gè)卷的分配位圖等信息。NTFS 文件系統(tǒng)將這些數(shù)據(jù)都當(dāng)做文件進(jìn)行管理,這些文件用戶是不能訪問的,它們的文件名的第一個(gè)字符都是 “$”,表示該文件是隱藏的。在 NTFS 文件系統(tǒng)中這樣的文件主要有 16 個(gè),包括 MFT 本身($MFT)、MFT 鏡像、日志文件、卷文件、屬性定義表、根目錄、位圖文件、引導(dǎo)文件、壞簇文件、安全文件、大寫文件、 擴(kuò)展元數(shù)據(jù)文件、重解析點(diǎn)文件、變更日志文件、配額管理文件、對(duì)象 ID 文件等,這 16 個(gè)元數(shù)據(jù)文件總是 占據(jù)著 MFT 的前 16 項(xiàng)紀(jì)錄,在 16 項(xiàng)以后就是用戶建立的文件和文件夾的記錄了。 每個(gè)文件記錄在主文件表中占據(jù)的磁盤空間一般為 1KB,也就是兩個(gè)扇區(qū),NTFS 文件系統(tǒng)分配給主文 件表的區(qū)域大約占據(jù)了磁盤空間的 12.5%,剩余的磁盤空間用來存放其他元文件和用戶的文件。 NTFS 文件系統(tǒng)具有以下優(yōu)點(diǎn):
? 更安全的文件保障,提供文件加密,能夠大大提高信息的安全性。
? 更好的磁盤壓縮功能。
? 支持最大達(dá) 2TB 的大硬盤,并且隨著磁盤容量的增大,NTFS 的性能不像 FAT 那樣隨之降低。
? 可以賦予單個(gè)文件和文件夾權(quán)限。對(duì)同一個(gè)文件或者文件夾為不同用戶可以指定不同的權(quán)限。在 NTFS 文件系統(tǒng)中,可以為單個(gè)用戶設(shè)置權(quán)限。
? NTFS 文件系統(tǒng)中設(shè)計(jì)的恢復(fù)能力無需用戶在 NTFS 卷中運(yùn)行磁盤修復(fù)程序。在系統(tǒng)崩潰事件中,NTFS 文件系統(tǒng)使用日志文件和復(fù)查點(diǎn)信息自動(dòng)恢復(fù)文件系統(tǒng)的一致性。
? NTFS 文件夾的 B-Tree 結(jié)構(gòu)使得用戶在訪問較大文件夾中的文件時(shí),速度甚至比訪問卷中較小的文件夾