淺談下無持久存儲的文件系統(tǒng)
傳統(tǒng)上,文件系統(tǒng)用于在塊設(shè)備上持久存儲數(shù)據(jù)。但也可以使用文件系統(tǒng)來組織、提歐或交換并不存儲塊設(shè)備上的信息,這些信息可以由內(nèi)核動態(tài)生成。
?proc文件系統(tǒng)(proc filesystem),它使得內(nèi)核可以生成與系統(tǒng)的狀態(tài)和配置有關(guān)的信息。該信息可以由用戶和系統(tǒng)程序從普通文件讀取,而無需專門的工具與內(nèi)核通信。在某些情況下,一個簡單的cat命令就足夠了。數(shù)據(jù)不僅可以從內(nèi)核讀取,還可以通過向proc文件系統(tǒng)的文件寫入字符串,來向內(nèi)核發(fā)送數(shù)據(jù)。echo ?“value” > /proc/file;不會有這更容易的從用戶空間向內(nèi)核傳輸信息的方式了。
? ?該方法利用了一個虛擬文件系統(tǒng)“即時”產(chǎn)生文件信息。換句話說,只有發(fā)出讀操作請求時,才會生成信息。對于此類文件系統(tǒng),不需要專用的硬盤分區(qū)或其他塊存儲設(shè)備。
? ?除了proc文件系統(tǒng)之外,內(nèi)核還提供了許多其他的虛擬文件系統(tǒng),用于不同的目地。例如,以目錄層次結(jié)構(gòu)的形式,對所有設(shè)備和系統(tǒng)資源進行編目。即使設(shè)備驅(qū)動程序也可以在虛擬文件系統(tǒng)中提供狀態(tài)信息,USB子系統(tǒng)就是一個例子。
【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【891587639】整理了一些個人覺得比較好的學習書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。。。ê曨l教程、電子書、實戰(zhàn)項目及代碼)??


sysfs是另一個特別重要的虛擬文件系統(tǒng)例子。一方面,它與procfs的目地類似,但在另一方面,又與procfs有很大不同。sysfs按照慣例總是裝載在/sys目錄,但這不是強制規(guī)定,裝載到其他位置也是可以的。它設(shè)計為從內(nèi)核向用戶層導出非常結(jié)構(gòu)化的信息。與procfs相比,它并不供人直接使用,因為信息是層次化、深度嵌套的。此外,文件包含的信息并不總是ASCII文本形式,也有可能使用不可讀的二進制串。但對于想要收集系統(tǒng)中的硬件和設(shè)備間拓撲關(guān)聯(lián)方面詳細信息的工具而言,該文件系統(tǒng)是非常有用的。
? ?還可以對使用kobject的內(nèi)核對象創(chuàng)建sysfs項,這幾乎不費力氣。這使得用戶層很容易訪問內(nèi)核中重要的數(shù)據(jù)結(jié)構(gòu)。
?用于專門目的的小文件系統(tǒng),可以由內(nèi)核提供的標準函數(shù)構(gòu)建。在內(nèi)核內(nèi)部,libfs庫提供了所需功能。此外,內(nèi)核提供了易于實現(xiàn)順序文件的方法。在調(diào)試文件系統(tǒng)debugfs中同時使用了這兩種技術(shù),該文件系統(tǒng)使得內(nèi)核開發(fā)者能夠快速地向用戶空間導出值或從用戶空間導入值,而無需創(chuàng)建定制的接口或?qū)iT的文件系統(tǒng)。
