Solaris 10でiSCSI構築(ZFS連携)
ちょっと専門的な話となります。うちの奥さんならタイトルを見ただけでブラウザを閉じるでしょうけども、まあとりあえず書きます。
私の仕事でパソコンが使用するためのハードディスク(HDD)を用意する際、沢山のハードディスク(HDD)を光ファイバーケーブルで接続して使用する事があります。これは最も高級なHDDの使い方の一つで、SAN(Storage Area Network)とか、FC-SANとか呼びます。性能はとても良いですが、その引き換えに高価な機械が必要になります。また、設定やメンテナンスにも専門的な知識が必要であり、敷居の高い方式です。
で、iSCSIとは、LANケーブル経由でHDDを使用する方式の事で、比較的容易にSANのようなHDDの使い方ができるという事で近年注目されている技術です。
このiSCSIを、Solaris 10で使用可能なファイルシステム「ZFS」を利用して簡単に構築出来るという情報を入手したのでやってみました。
前提条件
iSCSIでHDDを認識させるサーバ(以降「ターゲット」と呼ぶ)
「ターゲット」のHDDを使うサーバ(以降「イニシエータ」と呼ぶ)
ターゲット:Solaris 10 8/07以降
かつ、ZFSプールを作成できる空きディスクまたはスライスがあること(今回はc0d0s7という領域を使用)
イニシエータ:Solaris 10 1/06以降
1.ターゲット側の設定
以下の手順を実行する事で設定が完了します。全てスーパユーザで実行します。
iscsiターゲット有効サービスの有効化
Solaris上で、iSCSIターゲットとして動作するためのサービス「svc:/system/iscsitgt」がデフォルトでは無効になっているので、使えるように有効化します。
svcadm enable svc:/system/iscsitgt:default
zpool作成
次に、iSCSIストレージ(HDDの集まりのことを私の仕事ではこう呼びます)として使用するHDDの領域を指定します。ZFSが使用する領域の事をZFSプール(zpool)と呼びますが、まずこれを作成します。
今回はc0d0s7を「mypool」という名前のzpoolとして作成します。
zpool create -f mypool c0d0s7
quota容量を設定したZFSファイルシステム作成
ZFSの領域をiSCSIストレージとして使用する場合、「いくらまで使用するか」という設定(quotaとか呼びます)が必要みたいです。
使用するc0d0s7が大体30GB強あるので、ここでは30GBとします。~
zfs create -V 30gb /mypool/iscsi/t1
iscsiターゲットに設定
これでターゲットとしての準備が完了したので、ターゲットとして設定します。
zfs set shareiscsi=on mypool/iscsi/t1
確認きちんと認識しているか確認します。
iscsitadm list target -v
以下のような表示がされたらOKです。
Target: mypool/iscsi/t1 iSCSI Name: iqn.1986-03.com.sun:02:2e75abc4-1e78-6b74-99a7-fc2c750dbf95 Alias: mypool/iscsi/t1 Connections: 0 ACL list: TPGT list: LUN information: LUN: 0 GUID: 0x0 VID: SUN PID: SOLARIS Type: disk Size: 30G Backing store: /dev/zvol/rdsk/mypool/iscsi/t1 Status: online
2.イニシエータ側の設定
次は実際にHDDを使用するサーバとなるイニシエータ側の設定です。
イニシエータサービス有効
ターゲットと同じように、イニシエータとして使用するための機能を有効化します。
svcadm enable svc:/network/iscsi_initiator:default
確認
svcs -a|grep iscsi
以下のような表示がされたらOKです。
online 13:43:42 svc:/network/iscsi_initiator:default
iSCSI ターゲットのIPアドレスを指定
先ほど設定したiSCSIターゲットのIPアドレスを指定します。このIPアドレスを頼りにイニシエータはターゲットを認識します。
ここでは「172.24.175.229」とします。
iscsiadm add discovery-address 172.24.175.229
設定したら、これを使えるように有効化します。
iscsiadm modify discovery --sendtargets enable
認識確認
以上の手順で、イニシエータサーバからは従来のHDDと同じようにiSCSIが認識されているはずですので確認してみましょう。
format
以下のように「c3t01000040CA2D46B600002A004A445300d0」というような長い名前のHDDデバイスが認識できていたらOKです。
Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c0d0 <DEFAULT cyl 14590 alt 2 hd 255 sec 63> /pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0 1. c3t01000040CA2D46B600002A004A445300d0 <DEFAULT cyl 3914 alt 2 hd 255 sec 63> /scsi_vhci/disk@g01000040ca2d46b600002a004a445300
ZFSでマウント
イニシエータ側からZFSファイルシステムでこのHDDをマウント(OSが使えるようにする事)します。
zpool create -f tpc5160_iscsi c3t01000040CA2D46B600002A004A445300d0 zfs set mountpoint=/iscsi tpc5160_iscsi
確認します。/iscsiというマウントポイント(WindowsでいうとCドライブとかDドライブに相当)が見えていたらOKです。
df -k tpc5160_iscsi 30707712 18 30707595 1% /iscsi
これで30GBのHDDがイニシエータサーバに追加されて好きに使えることになります。OSの停止は一切必要ないので大変便利です。
性能は?
問題の性能ですが、あんまり出ません。でも個人でファイルを格納したりする分には困らない程度の性能です。
そもそもiSCSIは、楽に構築できる分、性能があまり優秀ではないという方式といわれています(最近は改善されてきてはいる)。
しかし、楽して安く、大容量HDDを使えるようにするには大変便利です。
また、イニシエータ側は規格上、Solarisである必要は無く、WindowsからもLinuxからもイニシエータ用ソフトを使用すれば認識可能です。Windowsでもマイクロソフトのサイトからイニシエータソフトが無料でダウンロードできます。
なので、HDDを沢山積んだSolaris 10サーバをiSCSI用に立てると結構便利かもしれません。