CTS-KB

FUSE

フューズ

Filesystem in Userspace
#ファイルシステム #Linux カーネル #ユーザー空間

Filesystem in Userspace の略。Linux カーネル機能のひとつで、ユーザー空間(特権なし)のプログラムが独自のファイルシステムを実装してマウント可能にする仕組み。カーネル空間にドライバを書かなくて済むため、新しい / 特殊なファイルシステムを安全かつ手軽に提供できる。

仕組み

[アプリケーション] ── ls ──→ [Linux カーネル]
                                   ↓ FUSE モジュール経由
                                [FUSE クライアント(ユーザー空間)]

                                [リモート / 暗号化 / 仮想ストレージ]

通常のファイルシステムはカーネル空間で動くが、FUSE は VFS 層 → FUSE モジュール → ユーザー空間プログラム の経路でリクエストを処理する。

代表的な FUSE 実装

ツール用途
rcloneGoogle Drive / S3 / OneDrive 等 70+ クラウドストレージ
sshfsSSH 経由でリモートファイルシステムをマウント
ntfs-3gNTFS 読み書き
encfs暗号化ファイルシステム
gocryptfs暗号化ファイルシステム(後継)
borgmountBorg バックアップアーカイブのマウント
glusterfs分散ファイルシステム

マウント解除

fusermount -u <mount-point>     # 通常のアンマウント
fusermount -uz <mount-point>    # lazy アンマウント(プロセスが掴んでいても可)

umount コマンドでも解除可能だが、fusermount の方が FUSE 固有の状態をきれいに片付ける。

--allow-other オプション

デフォルトでは FUSE マウントは マウントを実行したユーザーしか見えない。Docker コンテナや他ユーザー・systemd サービスから見えるようにするには --allow-other を付ける必要がある。/etc/fuse.confuser_allow_other も有効化が必要:

sudo bash -c 'echo "user_allow_other" >> /etc/fuse.conf'

libfuse2 と libfuse2t64

Ubuntu 24.04 以降は libfuse2t64(time_t 64-bit 対応版)に変更されている。AppImage 形式で配布される Electron アプリ(Obsidian など)も libfuse を使うため、libfuse2 を案内する古い情報源には注意。

sudo apt install -y libfuse2t64

関連記事

関連用語

  • rclone — FUSE 経由でクラウドストレージをマウント
  • Linux