SSDキャッシュ(flashcache)の効果をベンチマークソフトIOzoneで検証してみました

ミニタワー型のシステムPOWER MASTER NAS M8170へは最大2台の2.5インチHDD/SSDの追加搭載が可能で、2.5インチHDD/SSDを追加するとOS用ドライブ、SSDキャッシュ用などに用途に合わせて色々な使い方が出来ます。

POWER MASTER NAS M8170へSSDキャッシュを追加した場合の効果を簡単に調べてみました。

SSDキャッシュには色々な種類があり、ここでいくつかの例を紹介しています。用途や求める性能、予算により選択することが出来ます。

  • RAIDコントローラやS-ATAコントローラへSSDを取り付ける方法(LSI CacheCade、HighPoint Rocket Hybrid)
  • Intel製チップセットの機能を利用する方法(Intel Smart Response Technology)
  • ソフトウェアのみでSSDキャッシュとして利用する方法(flashcache)

POWER MASTER NAS M8170標準構成では、NAS専用OS「FreeNAS」をインストールしており、FreeNASでもSSDキャッシュを利用出来ます。
用途に応じてOSを変更することも出来るので、今回、CentOS6.5へ変更しFlashcacheを利用しました。

Flashcacheのバージョンは、昨年秋に公開されたバージョン3系最新版です。
https://github.com/facebook/flashcache/

◎ 検証で利用した環境

POWER MASTER NAS M8170には3.5インチHDDを4台搭載出来るので、HDD1にはOSをインストールし、HDD2~HDD4でソフトウェアRAID5構築(EXT4でフォーマット、/mntへマウント)しました。
2.5インチHDD/SSDの追加スペースにはSSDを1台取り付け、ソフトウェアRAID5ボリュームのSDDキャッシュとして設定しました。(キャッシュモードはwriteback、キャッシュサイズは40GBで構築しました。)

  • Xeon E3 1230V3
  • メモリ 4G
  • HGST HDS723020BLA642 x1個 (OSインストール)
  • Intel 520 x1個(キャッシュ用SSD)
  • HGST HDS723020BLA642 x3個 (ソフトウェアRAID5)
# mdadm –create /dev/md0 –level=5 –raid-devices=3 /dev/sd[cde]
# mkfs.ext4 /dev/md0
# flashcache_create -p back -s 40g cachedev /dev/sdb /dev/md0
# mount /dev/mapper/cachedev /mnt

falashcache設定後、ベンチマークソフトIOzoneでRandom Read / Random Write を計測してみました。

# iozone -I -i 0 -i 2 -s 1024 -r 4 -f /mnt/test_file1
# iozone -I -i 0 -i 2 -s 16382 -r 4 -f /mnt/test_file2

IOzoneでは指定ファイルサイズまで、指定レコードサイズで繰り返し読み込み/書き込みを行いますので、上記のコマンドでは、

  • 4Kレコードをファイルサイズ1024kになるまで繰り返す、
  • 4Kレコードをファイルサイズ16382kになるまで繰り返す、

動作が行われます。

◎ 結果
Random Writeでは、”flashcacheあり”の場合/”flashcacheなし”の場合とで顕著な差がみられました。
Random Readでは、ファイルサイズ1024kの場合で”flashcacheあり”の方が速い結果となりましたが、ファイルサイズ16382kの場合では”flashcacheなし”の場合とほぼ同じ結果となりました。
flashcacheを利用していても、16382kファイルサイズ/4kレコードサイズのRandom Readでは、ハードディスクから読み出しがされていたと思われます。

簡単な検証でしたが、flashcacheを利用するとSSDキャッシングの効果により速度アップがみられました。ただ、読み書きするファイルサイズ/レコードサイズによってはSSDキャッシュの効果がみられない場合もありました。利用するアプリケーションでSSDキャッシュの効果がみられるか検証が必要かと思います。

IPFire でWi-Fiワイヤレスルータを作成してみました

前回のブログで紹介したファイアーウォールIPFireへUSB無線LANアダプタを取り付けると、ワイヤレスルータとしても動作させることが出来ます。
Power Master Appliance B6301へUSB無線LANアダプタを取り付け、Wi-Fiワイヤレスルータ化させてみました。

◎ 検証で利用した環境

・IPFire 2.13 core update 75
http://www.ipfire.org/
・USB無線LANアダプタ
IO-DATA WN-G300UAと、アキバでなんと300円で売られていたPLANEX GW-USEco300
・Power Master Appliance B6301
http://www.systemworks.co.jp/pma_b630x.php

◎ 手順

  1. USB無線LANアダプタを認識させる
  2. ワイヤレス接続管理ツールhostapdのインストール
  3. 無線LANの設定
  4. クライアントの接続

1 USB無線LANアダプタを認識させる

対応リストに掲載されていなかったので、自動的に認識されるかドキドキしましたが、Power Master Appliance B6301へUSB無線LANアダプタを接続するだけで、認識させることが出来ました。
試される場合には、念のために確認を。
http://wiki.ipfire.org/en/hardware/networking#usb_wlan-adapter

IO-DATA WN-G300UAの場合、

# lsusb

Bus 001 Device 002: ID 0bda:8178 Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter

PLANEX GW-USEco300の場合、

# lsusb

Bus 001 Device 003: ID 2019:ab2b PLANEX GW-USEco300 802.11bgn Wireless Adapter [Realtek RTL8192CU]

カーネルモジュールrtl8192cu.koも自動的に読み込まれていました。

# lsmod
rtl8192cu 58304 0
rtl8192c_common 32327 1 rtl8192cu
rtlwifi 56726 1 rtl8192cu
mac80211 257216 3 rtl8192cu,rtl8192c_common,rtlwifi
sch_fq_codel 7632 5
cfg80211 163143 2 rtlwifi,mac80211
rfkill 12036 1 cfg80211
compat 11070 5 rtl8192cu,rtlwifi,mac80211,sch_fq_codel,cfg80211

両アダプタ共に、 コントローラチップRealtek RTL8192CUを使っている様でしたので、検証は、IO-DATA WN-G300UAで進めました。
USB無線LANアダプタがPower Master Appliance B6301へ認識されたことを確認後、そのアダプタをBLUE0へ割り当てました。(割り当てるには、setupコマンドより行っています。)

2 ワイヤレス接続管理ツールhostapdのインストール

Webブラウザ管理画面中の上部メニュー IPFire -> pakfireをクリックすると、下の様な画面が表示され、
追加したいアドオンhostapdをポインタで選択し、”+”ボタンを押してインストールしました。

3 無線LANの設定

アドオンhostapdをインストール後、Webブラウザ管理画面中の上部メニュー IPFire -> pakfireをクリックすると、sidemenuの中にWLanAPが追加されました。WLanAPをクリックすると、下図の様な画面が表示されます。

WLan settimgs項目を設定し保存すると、Power Master Appliance B6301をワイヤレスルータとして動作させることが出来ました。

4 クライアントの接続

Webブラウザ管理画面中の上部メニュー network -> DHCP Serverを選択して、BLUE Interface でDHCPサーバを動作させた後、上部メニュー firewall -> BLUE AccessからクライアントのMACアドレスを設定しました。

以上の操作で、クライアントでファイアーウォールの外にアクセス出来ました。

IPFire 利用時のスループットを計測してみました

火あぶりペンギンのイラストが印象的なファイアーウォール向けのリナックスディストリビューションIPFireを検証してみました。

IPFireは、2GB程度のコンパクトフラッシュメモリにインストール出来るほどの小さなリナックスディストリビューションです。オープンソースのため、無償で利用出来ます。

ファイアーフォール/プロキシーサーバ/VPN Gatewayなどの機能の他に、アドオン追加すればファイルサーバやメールサーバなどとしても動作させることが出来ます。また、コマンドではなく、Webブラウザを利用して管理や設定を行います。

検証内容は、PC2台の間にファイヤーウォールIPFireを設置した場合のスループット計測です。(下図)

◎ 検証で利用した環境

ipfire 2.13 core update 75

http://www.ipfire.org/

iperf 2.0.2

http://sourceforge.jp/projects/sfnet_iperf/releases/

Power Master Appliance B6301

http://www.systemworks.co.jp/pma_b630x.php

◎ ファイアーウォール(ipfire)の設定

IPFireではファイアーウォールの外側にあるPC1(ipアドレス 192.168.20.100)からPC2(ipアドレス 192.168.30.100)からアクセス出きるように、Port forwardの設定を行いました。

iperf ではtcpプロトコル、ポート5001を利用するので、以下のように設定しました。

確認のために、iptables コマンドに-Lオプションをつけて実行すると、以下の様に表示(抜粋)されました。

# iptables -L

Chain PORTFWACCESS (1 references)
target prot opt source destination
ACCEPT tcp -- 192.168.20.220 192.168.30.100 tcp dpt:commplex-link

◎ 計測結果

PC1をサーバとして動作させます。

PC1 # iperf -s

PC2をクライアントとして動作させます。-rオプションも追加して実行させました。

PC2 # iperf -c 192.168.20.220 -r
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
Client connecting to 192.168.20.220, TCP port 5001
TCP window size: 23.2 KByte (default)
------------------------------------------------------------
[5] local 192.168.30.100 port 49051 connected with 192.168.20.220 port 5001
[5] 0.0-10.0 sec 1.09 GBytes 935 Mbits/sec
[4] local 192.168.30.100 port 5001 connected with 192.168.20.220 port 52759
[4] 0.0-10.0 sec 1.09 GBytes 936 Mbits/sec

サーバークライアント間で 935 Mbits/sec程度でしたので、実効速度が出ている結果となりました。ただし、もっとも単純なハードウェア構成とファイアーウォールの設定で計測を行ったので、構成や設定が複雑になれば、結果が変わってくるかもしれません。

Acpupsd と APC SMTシリーズ UPS

ApcupsdでAPC Smart-UPSの新しいモデル SMTシリーズが動作するか実験してみました。

環境は以下
UPS: APC Smart-UPS SMT1500RMJ2U
通信ケーブル: USB
OS: CentOS 6.4 x86_64
Apcupsd: 3.14.10

SMT1500RMJ2Uに専用のシリアルケーブルは付属されていますが、どうもApcupsdでは動作しないようだ。SMT/SMXシリーズは、新しい通信プロトコル”Microlink”になっていて、Apcupsdは現状ではサポートされていないようです。
ただしUSB接続であれば、基本的な動作(停電時のバッテリモードから復電)は可能みたいです。

Apcupsdはsourceからインストール
configureオプションにUSBを追加してmakeとmake installしました。
設定は以下のみ追加
TIMEOUT 60

デーモンをstartすると、UPSとの通信は成功しているログが出ています。
コンセントを抜いて擬似停電を装い。。。

シャットダウンできました。
UPSがスタンバイ状態でコンセント接続し擬似復電するとサーバが起動しました。

基本的な動作は問題ないようです。
詳細な情報は取得できないようですが。。。

まぁ、良しとしましょう。

FreeNASによるZFSレプリケーション(ZFS Replication)について

FreeNASでZFSレプリケーションについて動作させてみました。

ZFSボリュームやZFSデータセットのZFS スナップショットを定期的/自動的にリモートサーバへ保存出来ます。
FreeNASをインストールしたサーバを2台を準備します。

●環境
MB: Gigabyte GA-E350N-USB3
HDD: 500GB
OS: FreeNAS-8.2.0-RELEASE-p1-x64

それぞれのサーバへZFSボリュームを作成(*1)し、ZFSスナップショット送信元となるサーバのSSH Public Keyを送信先となるサーバへ登録(*2)します。その後、送付先サーバのSSHサービスを実行(*3)します。

*1 メニューのStorage→Volume Managerより作成。
*2 ZFSスナップショット送信元のメニューのStorage → View Replication Tasks → View public keyを選択。
表示されたキーをZFSスナップショットの送信先サーバへコピー&ペーストします。
(メニューAccount → Users → View Users → rootユーザのModify Userを開き、SSH Public Keyの項目へ、SSH Public keyをペースト。)
*3 メニューServices → SSH → ON。

ZFSスナップショット送信元サーバで 定期的スナップショットのタスクを作成(メニューStorage → Periodic snapshot Tasksより設定)します。

ZFS スナップショットを15分、30分、1時間、2時間、3時間、4時間、6時間、12時間、1日、1週間 間隔で実行出来ます。また、開始時刻と終了時刻、実行する曜日も設定出来ます。ZFSボリュームやZFSデータセットのZFS スナップショットを定期的/自動的にリモートサーバへ保存出来ます。

Periodic snapshot Tasks

ZFSスナップショット送信先を登録(メニューStorage → ZFS replicationを選択)します。
登録例では、ZFSスナップショット送信元のボリュームをlocal、送信先のボリュームをremoteとなっています。
(SSH KEY Scanボタンを押すと、自動的に送信先サーバのPublic Keyを取得できます。)

ZFS Replication

以上の操作により、ZFSスナップショットを定期的/自動的にリモートサーバへ保存出来きました。(下図)

ZFS Snapshots

FreeNASは導入しやすく、ZFSレプリケーションを利用するとリモートサーバへ容易にデータのバックアップ出来ます。欲を言えば、フェールオーバーやフェールバックも設定出来るならばもっと良いと思いました。