使用者空間檔案系統-fuse
2010-08-16 22:16:10
分類: 伺服器與儲存
fuse是filesystem in user space,它是乙個使用者空間的檔案系統框架,通過fuse,程式設計師可以再使用者態實現檔案系統,並且不需要特權使用者的支援。
fuse包括三個模組:核心模組,使用者空間庫以及mount工具。
核心模組實現了乙個完整檔案系統的框架,但具體操作沒有實現(由程式設計師在使用者空間實現);
使用者空間庫給程式設計師提供程式設計介面,程式設計師通過實現fuse提供的fuse_operations或fuse_ll_operations的所有或部分操作來實現檔案系統。
mount工具fusermount用於掛載用fuse實現的檔案系統。
fuse原始碼中提供了幾個簡單的例子,在 src/example目錄下,用以示範如何用fuse開發使用者空間的檔案系統。
null.c,hello.c: 乙個簡單的使用fuse的例子,演示了使用fuse建立本地使用者空間檔案系統的基本過程
hello_ll.c: 與上述hello.c例項實現的功能一樣,只不過在具體實現**中呼叫了更加低層的fuse函式來完成
fu***mp.c:這個例項實現了用fuse完全掛載本地檔案系統掛載到使用者空間檔案系統的過程,展示了比較完成的fuse的使用過程。
fu***mp_fh.c: 這個例項是上面"./fu***mp"的擴充套件(使得基於fuse的這個檔案系統更加的完善,例如: 增加了"fflush"、"lock"等的支援)
fuse原始碼比較重要的一些檔案:
kernel/inode.c ---> 主要完成fuse檔案驅動模組的註冊,提供對supper block的維護函式以及其它(驅動的組織開始檔案)
kernel/dev.c ---> fuse 的(虛擬)裝置驅動
kernel/control.c ---> 提供對於dentry的維護及其它
kernel/dir.c ---> 主要提供對於目錄inode索引節點的維護
kernel/file.c ---> 主要提供對於檔案inode索引節點的維護
lib/helper.c ---> "fuse_main()"呼叫的主入口
lib/fuse_kern_chan.c--->主要實現fuse應用層訪問(讀寫)fuse driver的功能
lib/mount_util.c --> 提供mount的基礎函式呼叫
lib/mount.c ---> 主要實現裝置的"mount"、"umount"等掛接操作
lib/mount_bsd.c ---> 「free bsd"下的"mount"、"umount"實現
lib/fuse_mt.c ---> fuse 的mount管理
lib/fuse.c ---> lib庫主框架檔案,實現了主要框架及對"使用者實現的檔案系統操作**"的封裝
lib/fuse_lowlevel.c --> 實現比較底層的函式封裝,供fuse.c等使用
lib/fuse_loop.c ---> fuse lib迴圈監視"fuse driver"的通訊快取
lib/fuse_loop_mt.c ---> 同上
lib/fuse_session.c ---> fuse會話管理
關鍵的結構體說明:
struct fuse_req(fuse_i.h) ---> 發往客戶端的請求
struct fuse_session(fuse_session.c) ---> 客戶端管理會話的結構體,其包含"struct fuse_chan"結構
struct fuse_chan(fuse_session.c) ---> 定義客戶端與fuse核心連線隧道的結構體
特別說明:這裡的連線隧道不是什麼具體的網路連線,而是客戶端通過fuse裝置驅動來讀寫 裝置快取(以與裝置互動的一條概念上的隧道
fusermount提供一系列掛載選項,
如direct_io(跳過頁快取)
,allow_root(允許root訪問掛載的檔案系統),allow_other(允許其他使用者訪問掛載的檔案系統),nonempty(允許把檔案系統掛載到非空目錄),big_writes(支援大於4k的寫操作)等
FUSE 使用者空間檔案系統
使用者空間檔案系統 filesystem in userspace,簡稱fuse 是作業系統中的概念,指完全在使用者態實現的檔案系統。目前linux通過核心模組對此進行支援。一些檔案系統如zfs,glusterfs和moosefs使用fuse實現。linux用於支援使用者空間檔案系統的核心模組名叫f...
FUSE 使用者空間檔案系統
fuse是file system in user space,它是乙個使用者空間的檔案系統框架,通過fuse,程式設計師可以再使用者態實現檔案系統,並且不需要特權使用者的支援。fuse包括三個模組 核心模組,使用者空間庫以及mount工具。l 核心模組實現了乙個完整檔案系統的框架,但具體操作沒有實現...
FUSE使用者空間檔案系統
fuse是作業系統中的概念,指完全在使用者態實現的檔案系統。目前linux通過核心模組對此進行支援。一些檔案系統如zfs,glusterfs和luster使用fuse實現。linux用於支援使用者空間檔案系統的核心模組名叫fuse,fuse一詞有時特指linux下的使用者空間檔案系統。檔案系統是乙個...