AS-204TE関連の記事一覧はこちらより
- ASUSTOR AS-204TE NASキットを購入しました
- ASUSTOR AS-204TEレビュー:セットアップ編
- ASUSTOR AS-204TEレビュー: Rsyncサーバーを動かしてデータを復元してみた
- ASUSTOR AS-204TEレビュー: iSCSIデバイスとしてサーバーと接続する
QNAPやNetgear、ASUSTORのAS-204TEみたいな高機能なNASキットにはだいたいiSCSIの機能がついていますね。サーバーで動かしているKVMの仮想マシンのディスクを保存する場所に使えると思って、やってみることにしました。
iSCSIとはこういうもので
記憶装置とコンピュータの通信に使うSCSIコマンドを、IPネットワーク経由で送受信するためのプロトコル。
iSCSIとは - 意味/解説/説明/定義 : IT用語辞典
昔なつかしいSCSIデバイスと同じものではないのですが、そこで利用されていたSCSIのプロトコルをTCP/IP上で利用できるプロトコルらしいです。
よくストレージデバイスに利用されているようです。テープデバイスもそうでしょうかね? 一見するとネットワークに出るのでサーバー?と思われますが、 イニシエーター と呼ばれるクライアント的なホスト/デバイスと ターゲット と呼ばれるサーバー的なホスト/デバイスの1体1で接続して利用します。同時接続は許されてしまっている、 排他的な実装ではない(複数ユーザーで書き込みが許されている) ので、特定のシチュエーション(仮想マシンサーバーのライブマイグレーションとか)に使う以外は、基本的に1体1での接続を守る必要があります。
で、既存のネットワークのストレージサーバーと何がメリットがあるのかなと思ったのですが、
- よく利用されるsamba(CIFS)より性能が高い
- 普通の物理ストレージデバイスと同じように扱える
のがメリットのようです。
普通のストレージデバイスというのはいわゆるHDDなどのディスクやフラッシュディスクのようなことで、iSCSIのストレージを接続したあとにパーティションの作成、ファイルシステムの作成、フォーマットの作業が必要になります。マウントもmountコマンドが利用できるので悩むことはあまり無いです。
NAS側でiSCSIターゲットの作成をする
早速やってみます。今回は、AS-204TEをiSCSIターゲットにし、Ubuntu ServerをiSCSIイニシエータにします。UbuntuでiSCSIを扱うときにはこちらを参考にしてみました。
AS-204TEではメインメニューのストレージマネージャより作成できます
作成ボタンを押すと、新規iSCSIデバイスの作成がスタートします。
メニューが3つありますが、初回は一番上の「1つのLUNを持つiSCSIターゲット」を選択すると良いです。
ここのLUNと言うのは、Logical Unit Number(論理ユニット番号)と言います。これは自分もよく理解していないのですが、iSCSIターゲットでは以下の様な構成がされるようです。
ターゲット側で、仮想的なディスクを定義します。仮想マシンの仮想ディスクみたいなもの?だと思います。それを定義し、イニシエータ側で接続、それをマウントすることができるようになるようです。
iSCSIのストレージを使うとき、iSCSIターゲットと、それに属するLUNの作成がそれぞれ必要になります。
次では、ターゲットの名前を決めます。IQNはiSCSI Qualified Nameといって、iSCSIの識別名だそうです。
チェックサムの設定がありますが、今回は行っていません。(していいことがあるかまだわかってなかったので)
認証を使うか設定します。CHAP認証だそうです。(あまりよく理解していないので以下を参考に。。。
- @IT:セキュリティ用語事典[CHAP]
- CHAPとは 〔 チャレンジハンドシェイク認証プロトコル 〕 【 Challenge-Handshake Authentication Protocol 】 - 意味/解説/説明/定義 : IT用語辞典
LUN を作成します。シンプロビジョニングは利用したディスクスペースのみNAS側で消費される設定です。LUNサイズはイニシエータ側で使いたいディスクのサイズを指定します。
確認のあとに終了を押してiSCSIのデバイスを作成します。
作成すると元の画面に戻ってきます。IQNやマップしたiSCSI LUNで結果が確認できます。
Ubuntu Serverのイニシエータへ接続
ではUbuntu Server側のイニシエータでiSCSIターゲットを接続し、作成したLUNをマウントします。
(あまり見せたくない情報は隠しています)
Ubuntu Server側には、イニシエータとしてをインストールします。
sudo apt-get install open-iscsi
まずは、iSCSIターゲットを探させます。
$ sudo iscsiadm -m discovery --type sendtargets --portal 192.168.35.120
192.168.35.120:3260,1 iqn.2011-08.com.asustor:as-204te-fefefe.kvm
# iqn名は一部変更しています。
見つかったiqnの指定をして、ログインします。
sudo iscsiadm -m node --targetname iqn.2011-08.com.asustor:as-204te-fefefe.kvm --login
すると、/dev/disk/by-path/[iqn]
が出現します。同時に/dev/sd*
デバイスも出現します。/dev/sd*は実際は/dev/disk/by-path/側を指しているシンボリックリンクです。
$ hiroshi@snd-server:~$ ls -la /dev/disk/by-path/ip-192.168.35.120\:3260-iscsi-iqn.2011-08.com.asustor\:as-204te-fefefe.kvm-lun-0
lrwxrwxrwx 1 root root 9 4月 10 15:57 /dev/disk/by-path/ip-192.168.35.120:3260-iscsi-iqn.2011-08.com.asustor:as-204te-fefefe.kvm-lun-0 -> ../../sdd
あとは、このデバイスをディスクのパーティションの作成、ファイルシステムでのフォーマットを行います。今回の例は/dev/sddとします。ファイルシステムはext4とします。
Partedの例として
$ sudo parted /dev/sdd
GNU Parted 2.3
/dev/sdd を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) unit GB
# LUNのすべてのディスクスペースを使います。
(parted) mkpart primary ext4 0 -0
(parted) print
モデル: ASUSTOR iSCSI Storage (scsi)
ディスク /dev/sdd: 429GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: msdos
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 524kB 429GB 429GB primary
(parted) quit
$ sudo mkfs.ext4 /dev/sdd1
パーティションを作ると、dev/disk/by-path/
の中にあiSCSIターゲット名-part*
最後に、マウントします。マウントのターゲットは/dev/disk/by-path/
の中にある、iSCSIターゲット名-part*
の指定
sudo mount /dev/disk/by-path/ip-192.168.35.120\:3260-iscsi-iqn.2011-08.com.asustor\:as-204te-fefefe.kvm-lun-0-part1 /vm-images
マウントされると、AS-204TEのストレージマネージャでは以下のように表示されます。
設定できればあとは通常のディスクとして利用できます。LUNのサイズは変更できます。作成、接続した状態のLUNのサイズを変更しても、イニシエータ側ではすぐに反映されたように見えませんでした(parted free
で見ても空き容量が出てこなかった)。LUNのこういった変更の反映方法を知らなかったのですが、イニシエータ側でパーティションを作りなおしました。(つまり中身を全て消す)
追記:2015-04-13 23:37: /etc/fstabに記述する
(すっとぼけて書き忘れていました。)
/etc/fstabに記載して再起動した時にも接続できるようにします。
$sudo vim /etc/fstab
/dev/sdb1 /vm-images ext4 defaults,auto,\_netdev 0 0
もしくは、UUIDで良いと思います。
UUID="[iscsi partition UUID]" /vm-images ext4 defaults,auto,\_netdev 0 0
注意として、オプションにautoと_netdevが必要になります。 autoは自動的にマウントさせる、_netdevはネットワークデバイスで、ネットワークが動いた時点でマウントさせろという意味のようです。(NFSしか働かないと書いてあるのでいらない気がするのですが、どうなんでしょうね?) このオプションについてはUbuntuのガイドにも記述されていました。
Debianのドキュメントや、ではautoがなかったので、必須ではないかもしれませんね。_netdevは必須のようです。 SAN/iSCSI/open-iscsi - Debian Wiki www.open-iscsi.org/docs/README
自分はこのオプションを入れ忘れて、再起動した後にboot途中で止まって何らかのキー(sを入れたら動いた)を入れないと起動しませんでした。結構焦るので注意。
性能
性能ですが、bonnie++というベンチマークソフトで計測してみた結果がこちらです。
コマンドは以下のとおり。htmlファイルは適当な名前にしてます
$sudo bonnie++ -d /path/to/mountpoint -s 1024 -r 256 -u root | bon_csv2html > bonnie++\_disk.html
ホストマシン システムディスク(SATA HDD)
Version 1.97 | Sequential Output | Sequential Input | Random Seeks | Sequential Create | Random Create | |||||||||||||||||||||
Size | Per Char | Block | Rewrite | Per Char | Block | Num Files | Create | Read | Delete | Create | Read | Delete | ||||||||||||||
K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | |||
server | 1G | 680 | 98 | 112476 | 9 | 115510 | 6 | 4065 | 97 | +++++ | +++ | 4562 | 7 | 16 | +++++ | +++ | +++++ | +++ | +++++ | +++ | +++++ | +++ | +++++ | +++ | +++++ | +++ |
Latency | 15690us | 3302us | 136us | 3365us | 231us | 8944us | Latency | 88us | 396us | 442us | 137us | 122us | 68us |
iSCSI
Version 1.97 | Sequential Output | Sequential Input | Random Seeks | Sequential Create | Random Create | |||||||||||||||||||||
Size | Per Char | Block | Rewrite | Per Char | Block | Num Files | Create | Read | Delete | Create | Read | Delete | ||||||||||||||
K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | |||
server | 1G | 682 | 98 | 100351 | 8 | 101145 | 5 | 4249 | 96 | +++++ | +++ | 3277 | 11 | 16 | +++++ | +++ | +++++ | +++ | +++++ | +++ | +++++ | +++ | +++++ | +++ | +++++ | +++ |
Latency | 14364us | 1194us | 135us | 3940us | 102us | 7256us | Latency | 149us | 471us | 425us | 87us | 108us | 47us |
遜色ない感じですね。
おまけ: AS-204TE sambaサーバー
追記:2015-04-13
iSCSIの対比として、mount.cifsでマウントしたsambaサーバーのディスク性能も見てみました。
Version 1.97 | Sequential Output | Sequential Input | Random Seeks | Sequential Create | Random Create | |||||||||||||||||||||
Size | Per Char | Block | Rewrite | Per Char | Block | Num Files | Create | Read | Delete | Create | Read | Delete | ||||||||||||||
K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | |||
server | 1G | 1061 | 98 | 82995 | 9 | 42527 | 4 | 3714 | 96 | 85846 | 4 | 221.3 | 5 | 16 | 51 | 1 | 12930 | 2 | 176 | 1 | 74 | 1 | 2474 | 5 | 121 | 1 |
Latency | 10357us | 133us | 537ms | 27092us | 73184us | 159ms | Latency | 262ms | 224ms | 230ms | 205ms | 6506us | 112ms |
sambaでの性能を見ると、やっぱりiSCSI早いんですね。使うところではちゃんと使わないと。
雑感
実はこのiSCSIデバイスはKVM側でストレージプールとして利用する予定でした。ストレージプールとして登録して中にディスクイメージをおいたりISOイメージファイルをおいたりする場所にする予定でした。
でしたが、KVM側でiSCSIの接続を行うとパーティションでしか扱えないことがわかって、KVM側にはiSCSIデバイスをマウントしたディスクへ、ディレクトリベースのストレージプールとして登録しました。
仮想マシンのイメージファイルは、マシンをシャットダウンした後に、もともと保存していたサーバー内蔵のディスクからrsyncしてiSCSIデバイスへコピーした後に、稼働させています。
後々にライブマイグレーションできるといいなあと思ってやってたのですが、これで出来るかはちょっとわからないですね。とはいえ、仮想マシンのディスクがNAS側に写せましたし、性能も申し分無いのでいろいろと安心かなと。
ASUSTOR NAS AS-204TE | |
ASIN : B00H8LTJJC こちらはAmazonアソシエイトプログラム参加リンクです |