Raspberry PiにSamba4.2をインストールして高速化

Pocket

RaspberryPiのサムネール画像のサムネール画像
 
 
MacBookをOS X10.10(Yosemite)にアップグレードした。
 
OS X10.10では、ファイル転送プロトコルとして、SMB3を利用するようになったとのこと。
 
そこで、Raspberry Piのファイルサーバ(Samba)を、ファイル転送が高速化されたというSMB3に対応したsamba4.2.0にアップグレードすることにした。
 
 
ちなみに、SMB1→SMB3では、ファイル転送速度に関わるところとして、
下記のアップデートがあった。
 
[SMB2]
・パイプライン機構によるパケット通信量の削減
 (複数の SMB 2 要求を 1 つのネットワーク要求として送信することによるオーバーヘッド削減)
・バッファサイズの拡大
[SMB2.1]
・MTUサイズの拡大(64KB→1MB)
 (一度に大きいパケットを送受できるので、パケットヘッダによるオーバーヘッドが減り、ギガビット転送効率の向上)
・スリープモード対応
[SMB3]
・SMBマルチチャネル(複数のNICを利用することで、転送効率向上)
・MTUサイズを1MBをデフォルトに
・SMBディレクトリ・リース(ディレクトリやファイルのメタデータ情報をローカルにキャッシュすることにより、特に、遅延時間の大きいブランチ・オフィスにおけるファイル・アクセスの応答時間が改善される)
・SMBダイレクト(RDMA対応NICを使った場合、CPUを使わずにファイル転送が可能)
 
 
 
また、Samba4.2からは、MacBook等のApple製品との互換性が強化された。
Apple製品との互換性も向上し、転送速度も向上するので、Sambaのバージョンを上げて損は無い。
 
 
さて、では、インストール方法だ。
Samba4.2のパッケージが、まだRaspberry Pi用に提供されていないので、
make、make installする必要がある。
 
まずは、Samba4.2のコンパイル&インストールに必要なパッケージをインストールしておく
 
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install python-dev
$ sudo apt-get install libacl1-dev libblkid-dev
$ sudo apt-get install libgnutls28-dev
$ sudo apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev  python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user  docbook-xsl
Samba4.2のソースコードを取得。
$ mkdir ~/src
$ cd ~/src
$ wget https://ftp.samba.org/pub/samba/samba-4.2.0.tar.gz
#ディレクトリやバージョン数は、適宜環境に合わせて変更してください
ダウンロードしたソースコードを解凍。
 
$ gzip -cd samba-4.2.0.tar.gz | tar xf –
 
 
 
自動設定し、makeする。
$ cd samba-4.2.0
$ ./configure  –enable-debug –enable-selftest
$ make
 
(4時間くらいかかるので、気長に待つ)
 
 
次に、インストール。
 
$ sudo make install
 
 
これでインストールは完了だ。
以降、設定していく。

< div>

まずは、DNSまわりの設定。
(Samba4から、Active Directoryが搭載されたため、DNS設定等が必要になる)
なお、DNSサーバは、bind9を運用しているため、「BIND9_DLZ」を指定した。
(DNSサーバを構築していない場合は、「SAMBA_INTERNAL」を指定する)
$ sudo /usr/local/samba/bin/samba-tool domain provision –use-rfc2307 –interactive
Realm [raspberrypi.local]:
 Domain [local]:
 Server Role (dc, member, standalone) [dc]:
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Administrator password:
Retype password:
Looking up IPv4 addresses
(中略)
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              r
NetBIOS Domain:        local
DNS Domain:            raspberrypi.local
DOMAIN SID:            S-x-x-xxxxxxxxxxxxx
DNS設定の続き。
 $ sudo vi /usr/local/samba/private/named.conf
dlz “AD DNS Zone” {
    # For BIND 9.8.0
    database “dlopen /usr/local/samba/lib/bind9/dlz_bind9.so”;
# 動かしているbind9のバージョンに合わせて有効にする (コメントを削除する)
    # For BIND 9.9.0
    #database “dlopen /usr/local/samba/lib/bind9/dlz_bind9_9.so”;
};
bind9側の設定。
$ sudo vi /etc/bind/named.conf
// (下記一行を加える)
// for samba4
include “/usr/local/samba/private/named.conf”;
続き。
$ sudo vi /etc/bind/named.conf.options
options {
   //下記を書き加える

   //for samba4

    tkey-gssapi-keytab “/usr/local/samba/private/dns.keytab”;

}
keytabファイルのパーミッションを変更する。
$ sudo chgrp named /usr/local/samba/private/dns.keytab
$ sudo chmod g+r /usr/local/samba/private/dns.keytab
bind9のリスタート。
$ sudo /etc/init.d/bind9 restart
これで、bind9の設定は完了。
smb.confで基本設定を行う。
$ sudo vi /usr/local/samba/etc.smb.conf
[global]
    //下記を追記
    bind interfaces only = yes
    interfaces = 127.0.0.1/8 eth0
    //ログを残すために、下記を追記
    log file = /var/log/samba/log.%m
    log level = 1
    max log size = 1000
//共有ディレクトリの設定(通常のSamba設定)
[share]
comment = RaspberryPi File Server
path = /mnt/share
browsable = yes
writable = yes
read only = no
force create mode = 0666
force directory mode = 0777
create mask = 0777
デバッグモードで試運転してみる。
$ sudo /usr/local/samba/sbin/samba -i -M single
samba version 4.2.0 started.
Copyright Andrew Tridgell and the Samba Team 1992-2013
samba: using ‘single’ process model
エラーが吐かれなければOK。
Ctrl + C で一旦停止する。
自動起動するように、/etc/init.dにスクリプトを作成。
$ sudo wget “http://anonscm.debian.org/gitweb/?p=pkg-samba/samba.git;a=blob_plain;f=debian/samba.samba-ad-dc.init;h=3132d2e367675f822342a5b7bc2e50c046aa3b8f;hb=HEAD” -O /etc/init.d/samba-ad-dc
$ sudo sed -i ‘s|/usr/sbin|/usr/local/samba/sbin|g’ /etc/init.d/samba-ad-dc
$ sudo chmod 755 /etc/init.d/samba-ad-dc
$ sudo update-rc.d samba-ad-dc defaults
$ sudo chkconfig –add samba-ad-dc
$ sudo chkconfig samba-ad-dc on
$ sudo /etc/init.d/samba-ad-dc start
以上で完了だ。
前回SMB2に対応させたが、さらに気持ち高速化されたように感じる。
時間がある時に、実際に転送速度を測定して比較したいと思う。
make と make install に少し時間はかかるが、
Sambaのバージョンをアップグレードすると、Apple製品との互換性が向上し、転送速度も向上するので、アップグレードしない手はない。
ぜひみなさんもお試しあれ。