FUSE 使用者空間檔案系統

2021-09-25 20:45:57 字數 2598 閱讀 6743

fuse是file system in user space,它是乙個使用者空間的檔案系統框架,通過fuse,程式設計師可以再使用者態實現檔案系統,並且不需要特權使用者的支援。

fuse包括三個模組:核心模組,使用者空間庫以及mount工具。

l 核心模組實現了乙個完整檔案系統的框架,但具體操作沒有實現(由程式設計師在使用者空間實現)。

l 使用者空間庫給程式設計師提供程式設計介面,程式設計師通過實現fuse提供的fuse_operations或fuse_ll_operations的所有或部分操作來實現檔案系統。

l mount

工具fusermount用於掛載用fuse實現的檔案系統。

fuse原始碼中提供了幾個簡單的例子,在src/example目錄下,用以示範如何用fuse開發使用者空間的檔案系統。

l null.c,hello.c:

乙個簡單的使用fuse的例子,演示了使用fuse建立本地使用者空間檔案系統的基本過程hello_ll.c:

與上述hello.c例項實現的功能一樣,只不過在具體實現**中呼叫了更加低層的fuse函式來完成。

l fu***mp.c

:這個例項實現了用fuse完全掛載本地檔案系統掛載到使用者空間檔案系統的過程,展示了比較完成的fuse的使用過程。

l fu***mp_fh.c:

這個例項是上面"./fu***mp"的擴充套件(使得基於fuse的這個檔案系統更加的完善,例如:增加了"fflush"、"lock"等的支援)。

學習理解fuse原始碼

l kernel/inode.c   --->

主要完成

fuse

檔案驅動模組的註冊,提供對

supper block

的維護函式以及其它

(驅動的組織開始檔案

)

l kernel/dev.c     ---> fuse的(

虛擬)裝置驅動

l kernel/control.c --->

提供對於

dentry

的維護及其它

l kernel/dir.c   --->

主要提供對於目錄

inode

索引節點的維護

l kernel/file.c    --->

主要提供對於檔案

inode

索引節點的維護

l lib/helper.c  ---> "fuse_main()"

呼叫的主入口

l lib/fuse_kern_chan.c--->

主要實現

fuse

應用層訪問(讀寫

)fuse driver

的功能

l lib/fuse_mt.c  ---> fuse

的mount

管理

l lib/fuse.c   ---> lib

庫主框架檔案,實現了主要框架及對

"使用者實現的檔案系統操作**

"的封裝

l lib/fuse_lowlevel.c  -->

實現比較底層的函式封裝,供

fuse.c

等使用

l lib/fuse_loop.c ---> fuse lib

迴圈監視

"fuse driver"

的通訊快取

l lib/fuse_loop_mt.c --->

同上

l lib/fuse_session.c ---> fuse

會話管理

fuse掛載引數

fuse

提供一系列掛載選項,如

direct_io(

跳過頁快取),

allow_root(

允許root

訪問掛載的檔案系統),

allow_other

(允許其他使用者訪問掛載的檔案系統),

nonempty

(允許把檔案系統掛載到非空目錄),

big_writes

(支援大於

4k的寫操作,僅

fuse2.8

以上版本支援)等,更詳細的引數說明參見原始碼包中的文件。

fuse效能開銷

使用fuse

會給檔案系統帶來效能上的損失,因涉及到多次核心態到使用者態的切換,我通過測試本地

ext3

和fuse-ext3

的讀寫效能進行對比分析發現:

l 在cache

情形下,檔案系統的讀寫請求都通過頁快取記憶體滿足,

fuse-ext3

的效能只有

ext3

的15%~30%;

l 在sync-write

情形下,讀與上相同,寫的效能兩者差不多,因設計到磁碟操作,

fuse

的開銷就顯得微不足道。

使用者空間檔案系統 fuse

使用者空間檔案系統 fuse 2010 08 16 22 16 10 分類 伺服器與儲存 fuse是filesystem in user space,它是乙個使用者空間的檔案系統框架,通過fuse,程式設計師可以再使用者態實現檔案系統,並且不需要特權使用者的支援。fuse包括三個模組 核心模組,使用...

FUSE 使用者空間檔案系統

使用者空間檔案系統 filesystem in userspace,簡稱fuse 是作業系統中的概念,指完全在使用者態實現的檔案系統。目前linux通過核心模組對此進行支援。一些檔案系統如zfs,glusterfs和moosefs使用fuse實現。linux用於支援使用者空間檔案系統的核心模組名叫f...

FUSE使用者空間檔案系統

fuse是作業系統中的概念,指完全在使用者態實現的檔案系統。目前linux通過核心模組對此進行支援。一些檔案系統如zfs,glusterfs和luster使用fuse實現。linux用於支援使用者空間檔案系統的核心模組名叫fuse,fuse一詞有時特指linux下的使用者空間檔案系統。檔案系統是乙個...