GVfs ( GNOME仮想ファイルシステムの略)は、GNOMEのユーザー空間仮想ファイルシステムであり、 GLibバージョン2.15.1以降で利用可能なライブラリであるGIOのI/O抽象化と連携するように設計されています。GVfsは、libgioのAPIを使用するアプリケーションによって自動的に使用されるいくつかのモジュールをインストールします。また、GIOを使用しないアプリケーションがGVfsファイルシステムにアクセスできるようにするFUSEサポートも備えています。
混乱を招く原因の一つは、Linuxカーネルで使用されているファイルシステム抽象化が仮想ファイルシステム(VFS)レイヤーとも呼ばれている点です。ただし、これはより低レベルのレイヤーです。
GVfs モデルは、置き換え対象となるGnomeVFSなどとは異なり、ファイルシステムを使用する前にマウントする必要があります。gvfsdマウントの調整を処理するマスター デーモン ( ) があり、各マウントは (通常) 独自のデーモン プロセスで実行されます (ただし、マウントはデーモン プロセスを共有できます)。
GVfsには、ゴミ箱サポート、 SFTP、FTP、WebDAV、SMB、Udev統合によるローカルデータ、OBEX、MTPなどを含む一連のバックエンドが付属しています。 [ 2 ] GVfsは、シェルプロトコル経由で転送されるファイル(FISH)をサポートしていないようです。
GVfsには、ボリュームモニターやGNOME URIスキームハンドラーの設定を実装するGIO用のモジュールも含まれています。
コマンドラインプログラム「gio」には、GVfsマウントされたファイルに対してコマンド(cat、ls、stat、mountなど)を実行できる引数セットがあります。
添付されたリソースは、たとえば smb://server01/gamedata やftp://username:password@ftp.example.net/public_htmlのようにURI構文を介して公開されますが、標準のPOSIXコマンドと I/O を使用するアプリケーションから利用できるように、従来の方法でディレクトリ[ 3 ] [ 4 ]の下にマウントされます。~/.gvfs//run/user/$UID/gvfs$XDG_RUNTIME_DIR/gvfs

x-gvfs-show、マウントされたデバイスがGNOME ファイルに表示されるかどうかを決定します[ 5 ] 。GNOMEディスクのスクリーンショット。GIOは、ネットワークやD-Busサポートといった汎用的に便利なAPIに加え、アプリケーション向けにVFS APIも提供しています。GVfsは、さらに高度な実装を提供し、様々なプロトコルを使用してファイルやストレージにアクセスできるようにします。GVfsは、ロード可能なモジュールとして、様々なネットワークファイルシステムの実装を提供します。さらに、GVfsは、ゴミ箱、ネットワークフォルダ、最近使用したフォルダ、CD書き込み、コンピュータ上の重要なデバイスやボリュームの監視などもサポートしています。
GVfs の目標は、GnomeVFS [ 6 ]の欠点を克服し、開発者が生の POSIX 呼び出しよりも好むほど優れた API を提供することです。これには、とりわけ GObject の使用が含まれます。また、POSIX API を複製するのではなく、より高レベルのドキュメント中心のインターフェースを提供することも意味します。GTK は、ファイルセレクタなどでこれを直接使用できます。
アプリケーションは、GIO拡張ポイントを実装するGVfsモジュールをGIOがロードすることによって、間接的にGVfsを使用します。GVfsのメインデーモンであるgvfsdは、個々の接続ごとにマウントデーモンを生成します。ボリューム監視のためのGVfsサポートは、別のロード可能なモジュールに含まれています。
実際のGVfsの実装は、複数のプロセスに分散されています。
GVfs はFUSEを使用してVFS をファイルシステムに直接マウントできます。[ 7 ]これは 2 つの部分から構成されています。[ 8 ]
コマンドラインユーティリティのコレクション(gvfs-mount、gvfs-lessなど)はVFSリソースを操作します。[ 9 ]
公式ドキュメントについては、https://wiki.gnome.org/Projects/gvfs/backendsを参照してください。
eSATAまたはUSB経由で接続されたデバイスは、(本来は)物理的にホットプラグ可能であるはずです。デバイスがコンピュータシステムに物理的に接続されたり、物理的に取り外されたりすると、Linuxカーネルはそれを検知し、ユーザー空間にイベントを送信します。systemd-udevdは、このようなイベントを受信し、その包括的な設定に従って応答します。
/dev、/devからデバイスノードを動的に作成および削除し、起動時に必要に応じてドライバをロードします。udisksd、および、gvfsdを通知しますgvfs-udisks2-volume-monitor。[ 12 ]udisks2デーモンはudisksd、D-Busを介して実装されたシステムブロックデバイスへのインターフェースとして機能します。ハードディスクやUSBメモリなどのストレージデバイスの照会、マウント、アンマウント、フォーマット、デタッチなどの操作を処理します。このパッケージには、udisksctlコマンドラインからこれらの操作をトリガーするために使用できるユーティリティも含まれています(PolicyKitで許可されている場合)。
Debianでは、GVfsはgvfs、gvfs-daemons、gvfs-bin、gvfs-backendsの4つのパッケージにパッケージ化されています。