最近這段時(shí)間一直在閱讀linux內(nèi)核開(kāi)發(fā)這本書(shū)叉跛,書(shū)中主要介紹了linux2.6內(nèi)核版本相關(guān)的內(nèi)容。其中有一章介紹了內(nèi)核中是如何支持不同的文件系統(tǒng)的蒸殿,感覺(jué)這一章寫(xiě)的比較好筷厘,所以在本文章主要介紹下其中的內(nèi)容。
問(wèn)題
linux是支持多種文件系統(tǒng)的宏所,比如ext2酥艳、ext3、NFS等等爬骤。這些文件系統(tǒng)的特性是有很大區(qū)別的充石。那么linux是如何來(lái)支持這么多不同的文件系統(tǒng)呢?
答案是通過(guò)在內(nèi)核中抽象一層來(lái)屏蔽底層文件系統(tǒng)的區(qū)別霞玄。這一層抽象是VFS(虛擬文件系統(tǒng))骤铃。虛擬文件系統(tǒng)主要定義了以下幾種概念以及對(duì)應(yīng)的操作。
superblock塊坷剧、inode惰爬、dentry(目錄項(xiàng))、file object听隐。
superblock
superblock主要記錄文件系統(tǒng)相關(guān)信息补鼻。比如如果文件系統(tǒng)是ext3,那么superblock中會(huì)記錄ext3相關(guān)的文件,以及掛載點(diǎn)等
inode
inode主要記錄inode信息风范,是文件在內(nèi)存中的體現(xiàn)
dentry
dentry主要記錄目錄項(xiàng)的信息咨跌。比如目錄為 /bin/a.sh, 那么dentry中會(huì)記錄 / , bin , a.sh等信息,其中每個(gè)都是一個(gè)目錄項(xiàng)
file object
file object中主要是記錄文件內(nèi)容信息硼婿。