Sumit Singh, 軟件工程師, IBM
2006 年 4 月 10 日
使用用戶空間的文件系統(FUSE),您無需理解文件系統的內幕,也不用學習內核模塊編程的知識,就可以開發用戶空間的文件系統框架。本文是一篇簡單的逐步介紹的指南,內容包括安裝、定制和啟用 FUSE 和 AFS,這樣您就可以在 linux® 的用戶空間中創建自己的功能完備的文件系統了。
文件系統是一種用來存儲和組織計算機文件、目錄及其包含的數據的方法,它使文件、目錄以及數據的查找和訪問得到簡化。假如您正在使用一臺計算機,很可能使用了多個文件系統。文件系統能提供豐富的擴展能力。它可以編寫成底層文件系統的一個封裝程序,從而對其中的數據進行治理,并提供一個增強的、具有豐富特性的文件系統(例如 cvsfs-fuse,它為 CVS 提供了一個文件系統的接口;或 Wayback 文件系統,它提供了一種用于保留原始數據文件的文件備份機制)。
在用戶空間的文件系統出現之前,文件系統的開發曾是內核開發人員的工作。創建文件系統需要了解內核編程和內核技術(例如 vfs)方面的知識。調試則需要 C 和 C++ 方面的專業技能。但是其他開發人員需要熟練地操作文件系統以添加個性化特性(例如添加歷史記錄或轉發緩存)及對其改進。
FUSE 簡介
使用 FUSE 您可以開發功能完備的文件系統:其具有簡單的 API 庫,可以被非特權用戶訪問,并可以安全的實施。更重要的是,FUSE 以往的表現充分證實了其穩定性。
使用 FUSE,您可以像可執行二進制文件一樣來開發文件系統,它們需要鏈接到 FUSE 庫上 —— 換言之,這個文件系統框架并不需要您了解文件系統的內幕和內核模塊編程的知識。
就文件系統來說,用戶空間的文件系統就不再是新奇的設計了。用戶空間文件系統的商業實現與學術實現的實例包括:
與這些商業實現和學術實現不同,FUSE 將這種文件系統的設計能力帶到了 Linux 中來。由于 FUSE 使用的是可執行程序(而不像 LUFS 一樣使用的是共享對象),因此可以簡化程序的調試和開發。FUSE 可以在 2.4.x 和 2.6.x 的內核上使用,現在可以支持 java™ 綁定,因此您可以不必限定于使用 C 和 C++ 來編寫文件系統了。(有關更多使用 FUSE 的用戶層的文件系統的內容,請參閱 參考資料。)
要在 FUSE 中創建一個文件系統,您需要安裝一個 FUSE 內核模塊,然后使用 FUSE 庫和 API 來創建自己的文件系統。
展開 FUSE
要開發一個文件系統,首先請下載 FUSE 的源代碼(請參閱 參考資料)并展開這個包:tar -zxvf fuse-2.2.tar.gz
。這會創建一個 FUSE 目錄,其中保存的是源代碼。fuse-2.2 目錄的內容如下:
新聞熱點
疑難解答