サーバの仮想化がらみで Xen Server とか VMware ESXi とかいろいろ試してるのですが、その中で iSCSI という聞きなれない言葉が出てきました。私の知ってる SCSI というと、ただのSCSIに始まってU-SCSIとかUW-SCSIとか。あとUltra2SCSIとかになるともう意味不明になっていたような。最近では S-ATA と同様にシリアル化して SAS という名称になっているのかな? 高性能らしいけど高いから使おうと思ったことはないデス。
で、iSCSIというのはその延長に存在するものじゃなくて、SCSIのプロトコルをそのままイーサネットの上に流してしまおうという企てだそうです。最近はNAS箱と呼ばれるSMBをしゃべる箱が安く売ってます。アレとよく似ているのですが、一般的なNASが「共有ドライブ」なのに対して、iSCSIは言わば「コードの長い外付けドライブ」。途中のイーサネットは「SCSIケーブルの延長コードの代わりに使ってる」といったところです。
で、お求めやすい価格として扱われているiSCSI HDDはこんなやつ。一番安いもので10万円します。高すぎて買えません(T^T)。
だけど、いろいろ探してると FreeBSD を iSCSI HDDにしてしまうという芸当もアリらしいのです。 いつものごとく ports に /usr/ports/net/iscsi-target というのがあるので、make install。 /usr/local/etc/iscsi/targets に
extent0 /var/smb/iscsi/iscsi-target0 0 10GB
target0 rw extent0 192.168.24.0/24
と記述してプログラムを動かすと、10GBのドライブが出来上がります。手元のWindows XP は iSCSI に対応していませんが、Microsoft iSCSI Software Initiator Version 2.08 を使うと、先ほど作成した場所をドライブとして扱うことが出来ます。共有ドライブと根本的に違うのは、接続後に領域確保やフォーマットを行うこと。いやはや、ホントにネットワークを通ってるのはローレベルなものなのですね。
てことで、とりあえず上の方法で作成したドライブに対して Windows からどれくらい速度がてるのか試してみました。
えーと、えーと、、、? こんなに出るんですか!!?
1GBのファイルをローカルからこのドライブにコピーする時間を計ってみると実測18秒で約52MB/sなのでほぼベンチマークどおりです。その昔、MMX-PentiumなPCでは非力ゆえ100Base-TXの帯域を使い切ることが出来なかったのですが、いつのまにかギガビットな帯域でもPCで使えるようになってたのですね・・・。
うちのWindows機はドライブを2台積んでいるのですが、ディスクアクセス音がちょっとうるさいな~と思っていたのです。FreeBSDは別の部屋にあるので音は関係ないですし、Windows機を2.5インチドライブ1台構成にして デカいドライブはFreeBSDの中ってのも良いような気がしてきました。
なお、FreeBSD側のファイルは単なるディスクイメージなので、例えば
# mdconfig -a -t vnode -f iscsi-target0 -u 0とやれば中身が読めたりします。現在H.264エンコード用にネットワーク越しにマウントしていることがローカルだけで解決するのかな。さすがにこの状態で /mnt に書き込み出来ませんが、そもそも mount_ntfs は読込み専用ですし現在も mount_smbfs を使って read only でマウントしているから特に問題はないでしょう。Vistaだと iSCSI initiator が標準で入ってますから対応NICを使えば夢のディスクレス運用も可能なのかな?
# mount_ntfs -C euc-jp /dev/md0s1 /mnt
そろそろサーバのHDDを160GBx2から250GBx2に増強したいなーと思っていたのですが、ここは一気に1TBx2にしたほうが良いような気がしてきました。