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

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製品との互換性が向上し、転送速度も向上するので、アップグレードしない手はない。

ぜひみなさんもお試しあれ。

コメント