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

RaspberryPi

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

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

 

この記事も読まれています

Raspberry Pi の HiFi DAC 一覧まとめ(I2S出力)
Raspberry Pi でお手軽 HiFi DAC 構築ができることで有名なので、市販 Raspi DAC を調べたのでメモ
MINIBOSS I2S DAC for Raspberry Pi Zero レビュー
Raspberry Pi Zero W.のためのHiFi DACを購入したので音質等をレポ。また、電源共有部にフィルムコンデンサを挿入する改造を実施
Raspberry Pi で広告削除 | privoxy
Raspberry Pi に Privoxy を導入することにより広告削除を実現できたのでレポ。ついでに、キャッシュProxyとキャッシュDNSを導入して爆速になったのでレポ
赤外線リモコン付きLED + IRKit + homebridgeでほぼhueを実現 | HomeKit
hueは高いが、安価な赤外線リモコン付きLEDを工夫すれば、1300円でほぼ同等のことができるようになったのでメモ
Siri + IRKit + Homebridgeで家の家電を操作「Hey Siri テレビをつけて」
「Hey Siri テレビをつけて」を言えば、家の家電を制御できるようにしたのでレポ
Raspberry Pi で監視カメラを作ってみた
1,000円のUSBカメラをRaspberry Piに接続して、監視カメラを作ってみたのでレポ
Raspberry Pi をVPNサーバーに | SoftEther VPN
SoftEther VPNを使ってRaspberry Pi をVPNサーバーにしたので、手順をメモ
気圧センサBMP085をRaspberryPiに接続しグラフ表示
Raspberry PiのGPIOに、気圧センサBMP085を接続することで、温度・湿度を取得し、muninによりグラフ表示できたのでメモ
RaspberryPiにコンデンサ追加で電源強化
RaspberryPiの電源回路にコンデンサを追加し電源強化することで、USB機器接続時のフリーズ改善
RaspberryPiにヒートシンクを装着したら、何度温度が下がる!?
RaspberryPiにヒートシンクを装着してみた。実際にどれだけCPU温度が下がったのかをレポします
RaspberryPiをBluetoothオーディオレシーバにしてみた
RaspberryPiをBluetoothオーディオレシーバ化して、iPhoneやPCからワイヤレス音楽再生を
自作NOS DAC 〜TDA1543+CS8414〜
TDA1543とCS8414を使った自作NOS DACの紹介。TDA1543はデジタルフィルタを内臓しないDAC-ICであり、高音質再生が可能。オリジナル回路図、音質レビュー等を紹介
ASIO非対応でもASIO出力 ~ASIO4ALL~
ASIOに非対応のデバイスでも、ASIO4ALLというフリーのドライバーをインストールすれば、ASIO出力により高音質再生が可能。ASIOの概要説明、ASIO4ALLのインストールと設定方法等を紹介します

コメント

タイトルとURLをコピーしました