摘要:Linux系統(tǒng)在信息化建設(shè)中的應(yīng)用范圍也越來(lái)越廣,linux文件系統(tǒng)在這些應(yīng)用中擔(dān)負(fù)著極其重要的任務(wù),數(shù)據(jù)的存儲(chǔ)處理與文件系統(tǒng)密不可分,如何真正理解linux文件系統(tǒng)的工作原理,尤其是linux文件系統(tǒng)的完整裝載過(guò)程,對(duì)提高linux系統(tǒng)的應(yīng)用水平、認(rèn)識(shí)編程類(lèi)課程及數(shù)據(jù)結(jié)構(gòu)課程的重要性等意義重大。
關(guān)鍵詞:Linux系統(tǒng);文件系統(tǒng);VFS
中圖分類(lèi)號(hào):TP316 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9599 (2012) 15-0000-01
1 引言
Linux是一個(gè)免費(fèi)的操作系統(tǒng),用戶(hù)免費(fèi)獲得其源代碼,而且允許隨意修改。它是在共用許可證GPL保護(hù)下的自由軟件,也有幾種版本,如Red Hat Linux、Slackware,以及國(guó)內(nèi)的Xteam Linux等。Linux具有許多Unix系統(tǒng)的功能和特點(diǎn),能夠兼容Unix,但無(wú)需支付Unix高額的費(fèi)用。
目前,Linux技術(shù)已經(jīng)成為IT技術(shù)發(fā)展的熱點(diǎn),從事Linux技術(shù)研究的社區(qū)、研究機(jī)構(gòu)和軟件企業(yè)逐年增多,支持Linux的軟件、硬件制造商和解決方案提供商也快速增加,Linux在信息化建設(shè)中的應(yīng)用范圍也越來(lái)越廣。隨著整個(gè)Linux產(chǎn)業(yè)的發(fā)展,Linux技術(shù)也處在快速的發(fā)展過(guò)程中,形成了若干技術(shù)熱點(diǎn)。由于任何一個(gè)操作系統(tǒng)都必須提價(jià)有效手段來(lái)管理外存及其上的數(shù)據(jù),而這些功能主要由操作系統(tǒng)的文件系統(tǒng)功能來(lái)完成的,因此深入理解linux的文件系統(tǒng)裝載過(guò)程對(duì)提高linux系統(tǒng)的應(yīng)用水平有重要的意義。
2 Linux系統(tǒng)的文件與虛擬文件系統(tǒng)VFS
“一切皆是文件”是Unix/Linux的基本哲學(xué)之一[1]。不僅普通的文件,目錄、字符設(shè)備、塊設(shè)備等在Unix/Linux中都是以文件被對(duì)待;即使類(lèi)型不同,仍然可以在同一套操作界面運(yùn)行。Linux中允許不同的文件系統(tǒng)共存。如圖1所示,我們可以使用cp命令從vfat文件系統(tǒng)格式的硬盤(pán)拷貝數(shù)據(jù)到ext3文件系統(tǒng)格式的硬盤(pán);而這樣的操作涉及到兩個(gè)不同的文件系統(tǒng)。
而虛擬文件系統(tǒng)正是實(shí)現(xiàn)上述兩點(diǎn)Linux特性的關(guān)鍵所在。虛擬文件系統(tǒng)(Virtual File System,簡(jiǎn)稱(chēng)VFS),是Linux內(nèi)核中的一個(gè)軟件層,用于給用戶(hù)空間的程序提供文件系統(tǒng)接口;同時(shí),它也提供了內(nèi)核中的一個(gè)抽象功能,允許不同的文件系統(tǒng)共存[2]。系統(tǒng)中所有的文件系統(tǒng)在VFS和VFS中工作。為了能夠支持各種實(shí)際文件系統(tǒng),VFS定義了所有文件系統(tǒng)都支持的基本的、概念上的接口和數(shù)據(jù)結(jié)構(gòu);同時(shí)也提供VFS所期望的抽象接口和數(shù)據(jù)結(jié)構(gòu),將自身的諸如文件、目錄等概念在形式上與VFS的定義保持一致。實(shí)際文件系統(tǒng)在統(tǒng)一的接口和數(shù)據(jù)結(jié)構(gòu)下隱藏了具體的實(shí)現(xiàn)細(xì)節(jié),所以在VFS層和內(nèi)核的其他部分看來(lái),所有文件系統(tǒng)都是一樣的。圖2顯示了VFS在內(nèi)核中與實(shí)際的文件系統(tǒng)的協(xié)同關(guān)系。
這里要特別注意有關(guān)文件系統(tǒng)的三個(gè)重要概念:即(1)創(chuàng)建。以某種方式格式化磁盤(pán)的過(guò)程就是在其之上建立一個(gè)文件系統(tǒng)的過(guò)程。創(chuàng)建文現(xiàn)系統(tǒng)時(shí),會(huì)在磁盤(pán)的特定位置寫(xiě)入關(guān)于該文件系統(tǒng)的控制信息。(2)注冊(cè)。向內(nèi)核報(bào)到,聲明自己能被內(nèi)核支持。一般在編譯內(nèi)核的時(shí)候注冊(cè);也可以加載模塊的方式手動(dòng)注冊(cè)。注冊(cè)過(guò)程實(shí)際上是將表示各實(shí)際文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)struct file_system_type實(shí)例化。(3)安裝。也就是我們熟悉的mount操作,將文件系統(tǒng)加入到Linux的根文件系統(tǒng)的目錄樹(shù)結(jié)構(gòu)上;這樣文件系統(tǒng)才能被訪(fǎng)問(wèn)。
3 Linux文件系統(tǒng)裝載過(guò)程
Linux以一組通用對(duì)象的角度看待所有文件系統(tǒng)。這些對(duì)象是超級(jí)塊、inode、dentry和文件。文件系統(tǒng)中管理的每個(gè)對(duì)象在Linux中表示為一個(gè)inode。inode包含管理文件系統(tǒng)中的對(duì)象所需的所有元數(shù)據(jù)。另一組結(jié)構(gòu)稱(chēng)為dentry,它們用來(lái)實(shí)現(xiàn)名稱(chēng)和inode之間的映射,有一個(gè)目錄緩存用來(lái)保存最近使用的dentry。dentry還維護(hù)目錄和文件之間的關(guān)系,從而支持在文件系統(tǒng)中移動(dòng)。最后,VFS文件表示一個(gè)打開(kāi)的文件。安裝linux文件系統(tǒng)的過(guò)程就是創(chuàng)建VFS超級(jí)塊的過(guò)程,也就是在VFS的目錄樹(shù)中向其中某個(gè)目錄上掛載一個(gè)文件系統(tǒng)的過(guò)程。
安裝初始過(guò)程由sys_mount()系統(tǒng)調(diào)用函數(shù)發(fā)起,該函數(shù)原型聲明如下:asmlinkage long sys_mount(char*dev_name,char*dir_name,char*type,unsigned long flags,void*data);例如:我們準(zhǔn)備將來(lái)自主硬盤(pán)第2分區(qū)(hda2)上的ext2文件系統(tǒng)安裝到前面創(chuàng)建的\"/dev\"目錄中。那么對(duì)于sys_mount()函數(shù)的調(diào)用便具體為:sys_mount(\"hda2\",\"/dev\",\"ext2\",…);在新的文件系統(tǒng)加載之后,內(nèi)核鏈表file_systems及相關(guān)數(shù)據(jù)結(jié)構(gòu)會(huì)有相應(yīng)變化,有關(guān)內(nèi)容限于篇幅在此不一一詳述。讀者可參考文獻(xiàn)[3]。
4 結(jié)束語(yǔ)
本文針對(duì)Linux系統(tǒng)在應(yīng)用領(lǐng)域的擴(kuò)張趨勢(shì),分析了Linux文件系統(tǒng)的創(chuàng)建,注冊(cè)及安裝的全過(guò)程,從內(nèi)核上深入剖析Linux文件系統(tǒng)的含義,解釋了虛擬文件系統(tǒng)VFS在linux文件系統(tǒng)安裝及文件管理中的重要作用,它保證了linux系統(tǒng)中“一切皆是文件”的實(shí)現(xiàn),同時(shí)由于Linux系統(tǒng)文件安裝過(guò)程伴隨著內(nèi)存上各類(lèi)數(shù)據(jù)結(jié)構(gòu)的及鏈表的相應(yīng)變化,因此,分析linux文件系統(tǒng)的安裝還有助于加深對(duì)編程類(lèi)課程及數(shù)據(jù)結(jié)構(gòu)類(lèi)課程重要性的認(rèn)識(shí)。
參考文獻(xiàn):
[1]周巍松.Linux系統(tǒng)分析與高級(jí)編程技術(shù)[M].北京:機(jī)械工業(yè)出版社,1999
[2]Warren W.Gay.Linux Programming in 24 Hours[M].北京:機(jī)械工業(yè)出版社,2000
[3]郭玉東,王非非.Linux操作系統(tǒng)結(jié)構(gòu)分析[M].西安:西安電子科技大學(xué)出版社會(huì),2002
[作者簡(jiǎn)介]吳偉美(1981-),女,廣東梅州人,廣東科學(xué)技術(shù)職業(yè)學(xué)院教師,網(wǎng)絡(luò)助理工程師,研究方向,網(wǎng)絡(luò)與計(jì)算機(jī)應(yīng)用。