NetatalkとSambaの共存[追記あり]
(追記 2014-07-10 22:04 前提条件を書くのを忘れました。サーバは、FreeBSD 10.0を使っており、Netatalk 3.1.2を使っています。ファイルシステムはZFSです。)
(追記 2014-07-10 22:04 記事の参照元を書くのを忘れました。次のウェブページを参考にしています。
)
FreeBSDをNASとして使っています。SMBサーバとしても使える様に、sambaをインストールしたのですが、その設定方法はあまり賢いやり方ではない様です。と言うか、勘違いしていました。
- FreeBSD 9.1にSamba 3.6をインストール : プラスα空間 (2014年2月8日)
HATさんからご連絡をいただきました。
@oichinokata ウチのページではexportするディレクトリを分離するのをすすめてはいないですよ。私は20年同じディレクトリをnetatalkとsambaでexportしてます。http://t.co/PavQjjhHv1
— HAT (@HAT0001) 2014, 2月 11
次のページに、「やらないほうがいいこと」として「OS Xから同じ場所にsamba経由とnetatalk経由で接続するな」と書かれています。
私は「AFPとSMBで使うディスクは完全に分けた方が良い」と勘違いしてしまいました。
実は、この真意は、OS Xから、AFPとSMBの両方が動いているサーバの"/export/disk"と言うディレクトリに接続する時に、ある時はAFP、ある時はSMBと言う様に、切り替えて使うなと言う事です。OS Xから"/export/disk"につなぐ時は、必ずAFPでつなぐ様にします。SMB以外のプロトコル、WebDAVやNFSなどでつなぐ事もしない方が懸命です。
Windowsから"/export/disk"につなぐ時は、当然SMBを使います。
afp.confとsmb.confが次の様になっているとします。
まずは、afp.confです。
;
; Netatalk 3.x configuration file
;
[Global]
mac charset = MAC_JAPANESE
afpstats = yes
log file = /var/log/netatalk.log
vol dbpath = /export/netatalk/CNID
vol preset = my_default_values
[my_default_values]
file perm = 0660
directory perm = 0770
[Homes]
basedir regex = /usr/home
[disk]
path = /export/disk
(追記 2014-07-16 23:12 vol presetを追加しました)
次は、smb.confです。
#======================= Global Settings =====================================
[global]
workgroup = WORKGROUP
security = user
load printers = no
printing = bsd
guest account = nobody
map to guest = Bad User
max log size = 50
unix charset = UTF-8
dos charset = CP932
#============================ Share Definitions ==============================
[homes]
comment = Home Directories
browseable = no
writable = yes
public = no
printable = no
veto files = /.DS_Store/Network Trash Folder/TheFindByContentFolder/TheVolumeSettingsFolder/Temporary Items/.TemporaryItems/.VolumeIcon.icns/Icon?/.FBCIndex/.FBCLockFolder/
delete veto files = Yes
[disk]
comment = Public Stuff
path = /export/disk
writable = yes
public = no
printable = no
veto files = /.DS_Store/Network Trash Folder/TheFindByContentFolder/TheVolumeSettingsFolder/Temporary Items/.TemporaryItems/.VolumeIcon.icns/Icon?/.FBCIndex/.FBCLockFolder/
delete veto files = Yes
図を描いてみました。
AFPで/export/diskにつなぐと、メタデータ部分は拡張属性として保存されます。次の図では、"A.png"と言うファイルをコピーしており、"A.png"のメタデータが、EA(拡張属性)として保存されます。
% ls -l@ A.png -rw-r--r--@ 1 oichi wheel 181287 7 8 22:10 A.png com.apple.FinderInfo 32 com.apple.metadata:kMDItemScreenCaptureType 51 com.apple.metadata:kMDItemIsScreenCapture 42
一方、SMBで/export/diskにつなぐとメタデータ部分が「._」で始まるファイルに保存されます。つまり、"B.png"のメタデータが、"._B.png"と言うファイルに保存されるのです。
% ls -l@ B.png -rw-r--r--@ 1 oichi wheel 1851757 8 22:12 B.png com.apple.FinderInfo 32 com.apple.metadata:kMDItemScreenCaptureType 51 com.apple.metadata:kMDItemIsScreenCapture 42
一見、問題ない様に思えますが、SMBで接続している状態で"A.png"を調べてみると…。
% ls -l@ A.png -rw-r--r-- 1 oichi wheel 181287 7 8 22:10 A.png
“A.png"のメタデータが見えなくなってしまいました。
(追記 2014-07-10 22:04 Netatalk 3.1.2のバグだそうです。)
今度は逆に、AFPで接続し直して、"B.png"を調べてみると…。
% ls -l@ B.png -rw-r--r-- 1 oichi wheel 1851757 8 22:12 B.png
“B.png"のメタデータが見えなくなってしまいました。
この様な困った状態になるので、AFPとSMBを切り替えて、同じサーバの同じディスクにつないではいけないと言う事です。
この場合、netatalkのdbdコマンドで、"-c"オプションを付けると"convert from adouble:v2 to adouble:ea"をすると書かれているのでメタデータの形式が変換されると思ったのですが、この機能とは違う様です。
# dbd -vc /export/disk | egrep png CNID from .AppleDouble file for '/export/disk/A.png': 663 Jul 09 23:37:33.191311 dbd[94507] {cnid_dbd.c:572} (D5:CNID): cnid_dbd_add: CNID: 273, name: 'A.png', dev: 0x247a1500, inode: 0x16c0, type: file Bad AppleDouble "/export/disk/._B.png" File without meta EA: "/export/disk/B.png" Jul 09 23:37:33.192787 dbd[94507] {cnid_dbd.c:572} (D5:CNID): cnid_dbd_add: CNID: 273, name: 'B.png', dev: 0x247a1500, inode: 0x16c5, type: file
エラーになってしまいます。
(追記 2014-07-10 22:04 Netatalk 3.1.2のバグだそうです。)
ちなみに、Mavericks同士では、ファイル共有にSMB2を使っているそうです。HATさんが、色々調べて下さっています。
その実装方法は、次の通りだそうです。
@oichinokata MavericksのSMB機能はWindows ServerのAppleTalk機能の模倣なので、調べないといけないんですよ。
— HAT (@HAT0001) 2014, 6月 19
その結果、メタデータは、次の様に保存されるとの事です。
@oichinokata
@namaedayo MacからWindowsへAppleTalkで転送するとNTFS上のAFP_AfpInfoとAFP_Resourceという名前の代替データストリームにMacのメタデータが保存されます。 pic.twitter.com/0jxoaW3FYP
— HAT (@HAT0001) 2014, 6月 19
(追記 2014-07-11 00:02)
ご指摘を受けましたので、追加記事を掲載しました。併せてご覧ください。
- NetatalkとSambaの共存の続編 : プラスα空間 (2014年7月11日)
ディスカッション
コメント一覧
まだ、コメントがありません