使用者空間檔案系統 fuse

2021-07-09 21:11:50 字數 2077 閱讀 2625

使用者空間檔案系統-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下的使用者空間檔案系統。檔案系統是乙個...