09 April 2013

Raspberry PiのNAS(SambaとWebDAV)の転送速度比較

Raspberry PiでNASを構築すると、どれくらいの転送速度が得られるのか、簡単にベンチマークを取ってみた。

■ 検証環境
・Raspberry Pi, type B
・2013-02-09-wheezy-raspbian OS

・クライアントPCはUbuntu 12.04

■ Sambaサーバの構築

パッケージのインストール

$ sudo apt-get install samba
$ sudo apt-get install samba-common
$ sudo apt-get install samba-tools
$ sudo apt-get install samba-common-bin

設定ファイルの編集。ベンチマーク目的のため、アクセス制限は掛けない

/etc/samba/smb.conf
〜 ファイル末尾に、共有ディスクの設定を追加 〜
[share]
comment = Share Disk
#path = /var/samba_share ← SDカード内の場合
path = /media/usbdisk/samba ← USB外付けディスクの場合
guest ok = yes
read only = no
create mask = 0777
directory mask = 0777
browseable = yes
public = yes

設定ファイルを編集し、外付けディスクの場合はしかるべき場所にマウントした後、サービスを再起動する。

$ sudo service samba restart

■ WebDAVサーバの構築

パッケージのインストール

$ sudo apt-get install apache2
$ a2enmod dav
$ a2enmod dav_fs

設定ファイルの編集。こちらも、ベンチマーク目的のためアクセス制限を掛けない。

/etc/apache2/sites-enabled/000-default
<VirtualHost *:80>
〜 中略 〜
# Alias /webdav "/var/webdav-data"
Alias /webdav "/media/usbdisk/webdav-data"

<Location /webdav>
DAV on
</Location>


ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

■ クライアントPCの準備

davfs2(WebDAVファイルシステム)設定ファイルを、キャッシュを利用しない方法に変更する

/etc/davfs2/davfs2.conf
# Cache Related Options
# ---------------------

# backup_dir lost+found
# cache_dir /var/cache/davfs2 # system wide cache
# ~/.davfs2/cache # per user cache
cache_size 0 # MiByte (default 50)
# table_size 1024
# dir_refresh 60 # seconds
# file_refresh 1 # second
delay_upload 0 # (default 10)
# gui_optimize 0

SambaとWebDAVのリモートディスクをマウントする。Raspberry PiのIPアドレスは192.168.1.50とする。

$ mount -t cifs -o uid=nobody,gid=nobody,rw //192.168.1.50/share /media/smb
$ mount -t davfs -o uid=www-data,gid=www-data,dir_mode=777,rw http://192.168.1.50/webdav /media/dav

■ ベンチマークの実行

今回は、Raspberry Pi用Arch Linuxのインストールイメージファイル(約200MBytes)を転送して、その時の速度を測った。

$ rsync -v ./archlinux-hf-2013-02-11.zip /media/dav/
archlinux-hf-2013-02-11.zip

sent 203703239 bytes received 31 bytes 2809700.28 bytes/sec
total size is 203678287 speedup is 1.00

$ rsync -v ./archlinux-hf-2013-02-11.zip /media/smb/
archlinux-hf-2013-02-11.zip

sent 203703239 bytes received 31 bytes 10446321.54 bytes/sec
total size is 203678287 speedup is 1.00

ベンチマーク結果をイラストでまとめると、このような形になる。

20130409-rpi-smb-bench.png
Sambaの場合のベンチマーク結果


20130409-rpi-webdav-bench.png
WebDAVの場合のベンチマーク結果

ネットワーク(Ethernet)が100Mbps、USB 2.0が480Mbpsというハードウエアの制約に対して、Samba接続では8〜10MBytes/s(64Mbps〜80Mbps)、WebDAV接続では2.6〜3MBytes/s(20Mbps〜24Mbps)程度の速度が出ている。(ntfsフォーマットはntfs-3gドライバの効率が悪いようなので、これより遅くなっている)

SambaはWebDAVより転送速度が全般的に速い。Raspberry PiのCPU負荷率も、Sambaのほうが軽い(topコマンドの出力)。

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3179 www-data 20 0 224m 4288 2156 S 95.1 1.0 1:14.38 apache2

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3334 nobody 20 0 21832 3060 2276 D 76.3 0.7 0:19.63 smbd