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