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