【おすすめリンク】芳しき危険な黄金色 – NetatalkとSambaの統合

かなり前から、Netatalkや、Sambaとの連携についての貴重な情報を発信されており、私もかなり助けられてきました。

芳しき危険な黄金色 – NetatalkとSambaの統合(HATさん)

https://hatx.hatenablog.com/entry/netatalk_samba_merge

 

最近はNetatalkとSambaを相互運用できるようになりました。 以下の環境で、実際に相互運用が可能なことを確認しています。

FreeBSD
Debian 9 Stretch
Ubuntu 18.10 Cosmic
Ubuntu 18.04 Bionic
Ubuntu 16.04 Xenial
Fedora 29, Fedora 28, CentOS 7
openSUSE Leap 42.2

以下の環境では、Sambaのバージョンが古いので相互運用できないことを確認しています。 Sambaパッケージを削除してtarballで最新版を入れれば可能と思われます。

Debian 8 Jessie (Samba 4.2.14)
CentOS 6 (Samba 3.6.23)

 

Netatalk 3.1.8でオプションea =が追加されています。

ea = samba

これを利用すると以下の機能が有効になります。

拡張属性(代替データストリーム)の保存方法をSambaと同じにする

 

Samba 4.2.xでvfs_fruitが追加されています。

ea support = yes
vfs objects = catia fruit streams_xattr
fruit:locking = netatalk
fruit:encoding = native
streams_xattr:prefix = user.
streams_xattr:store_stream_type = no

これを利用すると以下の機能が有効になります。

macOSによるSMBの拡張が使える
メタデータの保存をNetatalk 3.x方式にする
ファイルロックの方法をNetatalkと同じにする (バグあり)

fruit:locking = netatalkはバグがあるのでコメントアウトする必要があります。(Samba 4.6.1と4.5.4で直ってるのを確認。)

[Samba] vfs_fruit: cannot remove any file

 

更に、Samba 4.8.0では、以下のTime Machie用のオプションが追加されました。

fruit:time machine = yes

かつては様々な互換性問題により、macOSからはNetatalk、WindowsからはSambaという使い分けをするしかありませんでした。 これからは、Netatalkのea = sambaとSambaのvfs_fruitを使えば、Netatalk繋いでもSambaに繋いでも結果的に同じということになります。

現在のmacOSはSMB上でファイルを扱う場合、FinderInfo、リソースフォーク、拡張属性等を代替データストリームに変換して扱います。今までのSambaはこれに対応していなかったので、色々と面倒が発生しました。特にリソースフォークはサイズが大きいので、Solaris系OS上のZFSを除いては、それをうまく扱えません。 また、macOSはWindows禁止文字を私用領域の文字に置き換えてSMB上で扱うという手法を取るので、これも互換性がありませんでした。 vfs_fruitは、これらのmacOS独自仕様を上手に扱うためにNetatalk 3.x方式に変換します。

また、Sambaはファイルの排他処理の方法がNetatalkと異なるので、Netatalkで先に開いているファイルをSambaで開くとロックしませんでした。vfs_fruitはSambaのロック方式をNetatalkに合わせるので問題がなくなります。

 

vfs_fruitのバグ一覧はコチラ。

The Samba-Bugzilla – Bug List

Linux、Netatalk、Samba、NFSを使用したファイルサーバーについて研究・運用しています。

fsをフォローする
参考リンク

コメント