vfs_fruit — OS X と Netatalk との相互運用性を強化する
vfs objects = fruit
この VFS モジュールは samba(7) システムの一部である。
vfs_fruit
モジュールは、Apple SMB クライアント
との互換性向上と、Netatalk 3 AFP ファイルサーバーとの相互運用性を提供する。
このモジュールは、もしも文字変換をするのであれば、
vfs_catia
といっしょに使うべきであり、さらに、
vfs_streams_xattr
と共に使わなければならない。
正しい設定方法は、例 の節を参照のこと。
モジュールは、共有に対して、代替データストリーム (ADS)
のサポートと、OS X 特有のストリーム "AFP_AfpInfo" と "AFP_Resource"
を横取りし、それを特別な方法で扱う機能を有効にする。
その他すべての名前付きストリームは、vfs_fruit
といっしょにロードされねばならない vfs_streams_xattr
にゆだねられる。
OS X クライアントに対する、ADS サポートが有効な共有 があると言うことは、Apple 固有の SMB サーバ実装の動作と似て、 Samba が大文字と小文字を区別することにより引き起こされる 深刻なパフォーマンスの低下を回避すると言う点において価値がある。
OS X メタデータとリソースフォークストリームは、Netatalk 3 と
互換性のある方法で、下記のように設定することにより格納される。
fruit:resource = file
と
fruit:metadata = netatalk
OS X は、NTFS の不正な文字を、SMB 要求中で、Unicode
のプライベート領域にマップする。
fruit:encoding = native
を設定することにより、
すべてのマップされた文字は ネイティブな ASCII 文字に変換される。
最後に、共有アクセスモードは、
fruit:locking = netatalk
を設定することにより、Netatalk AFP 共有モードに対して
チェックすることもできる。
このモジュールは、このマニュアルページで言及されている もの以外に対してはスタックできない。
以下のオプションは smb.conf のグローバルセクションに記述しなければ ならず、共有ごとのセクションに設定しても効果がない。
グローバル オプションで、 コードネーム AAPL という、Apple の SMB2+ 拡張を有効にするかを指定する。 既定値は yes である。 この拡張は、Mac から繋ぐときに、いくつか欠けている点を 機能を追加する:
ディレクトリ一覧表示において、 Mac に関連したファイルシステムメタデータ (UNIX モード、 ファインダ情報、リソースフォークと実行パーミッション) が強化されているため、その結果として、Mac クライアントは このメタデータを、個々ののディレクトリエントリごと個別に 取得する必要はなく、その結果、しばしば大幅にパフォーマンス が向上する。
ディレクトリエントリの UNIX モード情報を 得たり、変更する機能。
fruit:aapl が有効になっているときに 使える、共有単位のオプションがある。以下で説明する、それらの オプションは、ディレクトリ一覧表示時に、特定の Mac メタデータの処理を無効にする。なお、それらのオプションにおける 既定値は 有効 である:
readdir_attr:aapl_rsize = yes | no
readdir_attr:aapl_finder_info = yes | no
readdir_attr:aapl_max_access = yes | no
以下では、上記のオプションの説明を記載する。
グローバル オプションであり、NFS ACE 経由の、 ディレクトリエントリに対する UNIX モードの問合せと変更のサポートが有効化か どうかを指定する。既定値は yes である。
グローバル オプションであり、 すべての添付されたメタデータとともに、すべてのファイルの コピーを要求する、OS X 固有の copychunk ioctl を有効にするかの 指定。
注意: サーバーがコピー実行中、copyfile 要求は、 クライアントをブロックする。
既定値は no である。
以下のオプションは、smb.conf のグローバルセクションか、 個々の共有セクションに設定できる。
どこに OSX リソースフォークを格納するかを制御する。
重要: Samba バージョン 4.5 以前では、 オプション処理においてスペルミスがあったため、このオプションは fruit:ressource のように s を 2 つ記述する必要がある。
このオプションを、既定値以外に設定する場合、 ひきつづき file の既定値設定を使うので、有効な設定を反映するように、 smb.conf を調整し、fruit:ressource=file を追加する事を推奨する。オプション行をすべて削除しても 同じように動作する。
Samba 4.6 では、正しい/間違ったスペル両方とも 処理できるが、Samba 4.7 以降では 正しいスペルのみ受け付ける。
設定:
file (既定値)
-
OS X と Netatalk 互換の ._ AppleDouble ファイル
を使う。
xattr
-
拡張属性 (xattr) を使用する。これは、大きなサイズの拡張属性をサポート
するファイルシステムと、拡張属性に準拠した
ファイル IO API が必要となる。つまり、
Solaris と Solaris 派生プラットフォームの ZFS が必須である。
stream (実験的)
-
VFS スタック内において、ストリームを次のモジュールに渡す。
警告: たいていのファイルシステム
には拡張属性のサイズ制限があるため、このオプションを
streams_xattr モジュールとともに利用しないこと。
OS X メタデータストリームが格納される場所を指定する。
netatalk (既定値)
-
Netatalk 互換の xattr を使う
stream
-
VFS スタックの次のモジュールにストリームを渡す
none (既定値)
-
cross protocol locking を使わない
netatalk
-
Netatalk で cross protocol locking を使う
ファイルシステムに格納される、OS X クライアントで一般的に 使われる、不正な NTFS ASCII 文字セットを制御:
private (規定値)
-
OS Xクライアントによってエンコードされた形で文字を格納:
Unicode プライベート領域にマップされる
native
-
そのままのASCII値として文字を格納
参考: このオプションは、
fruit:resource
が
file
(既定値) に設定されている
場合にのみ適用される。
fruit:resource
が
file
に設定された場合、
vfs_fruit は ._ AppleDouble ファイルを生成する。
このオプションは、クライアントからファイルに対するアクセスを
防ぐために、._ AppleDouble を見えなくする(veto)
かを制御する。
._ ファイルをアクセス不可にすると、いくつかのアプリケーションで 誤動作を引き起こすことがある。たとえば、Mac クライアントから Mac ZIP アーカイブのを展開すると、アーカイブ中に ._ ファイルが 含まれているために失敗する。 このオプションを false にすることでこの問題を回避できるが、 内部向けに作成された ._ ファイルが露見してしまうことで 未知の副作用を引き起こすかもしれない。
既定値は yes である。
OS X クライアントで、POSIX の改名動作を有効にするかどうかの指定。 このオプションを指定しないと、クライアントは、(再帰的にも!) 対象ディレクトリ中にオープンしているファイルがある場合、 ディレクトリを改名出来ない。
既定値は yes である。
SMB2 FIND の応答で リソースフォークのサイズを返す。
既定値は yes である。
SMB2 FIND の応答で FinderInfo を返す。
既定値は yes である。
SMB2 FIND の応答で、ユーザの有効な最大のアクセス許可 を返す。これは計算に時間がかかるので、設定を off にすると、 最大の有効なアクセス許可を持っているとみなす。
既定値は yes である。
[share]
vfs objects = catia fruit streams_xattr
fruit:resource = file
fruit:metadata = netatalk
fruit:locking = netatalk
fruit:encoding = native