2008年 08月 06日
使ってみよう SUSE Linux 10 (SLES10)で iSCSI
XEN 環境でLive Migration などのある程度高度なシステムを作ろうと思うと、 iSCSIのような仮想ディスクや SAN 環境の知識が必要になります。本格的なハードウェアを準備して iSCSI のテストを行おうとすると結構な費用がかかりますから、ここでは、 XEN の仮想マシンを使って iSCSI の設定の手順をテストしてみます。
まず、YaST > iSCSI の内容を確認しましょう。 iSCSI にはターゲットとイニシエータがあります。

-iSCSI ターゲット
iSCSI のディスクの提供側です。
-iSCSIイニシエータ
iSCSI の利用側です。
これらのアイコンをクリックすると、必要な RPM は自動インストールされます。メディアをご用意してください。
ターゲット側の準備
ターゲット側はストレージのサービスを提供します。ストレージサービスは空きのディスクドライブか、スパースファイル(空のファイル)で提供します。
-空のファイルを作る方法
今回は iSCSI Target に XEN のホストマシン上の仮想ファイルを使うことを考えて、次の操作で path にイメージファイルを 1M * 4096 = 4Gb のスパースファイルを作成しました。
iscsitarget:~# dd if=/dev/zero of=/path/MyiSCSI.img seek=1M bs=4096 count=1
ここで作られるファイルは iSCSI Target 側のOSからアクセスできるため、バックアップは容易に行えます。あらかじめ容量が決まっている iSCSI initiater で利用するには良い方法ですが、パフォーマンスの点ではどうなのでしょうか。しかし、構築は楽です。定期的に tar で圧縮バックアップしてもいいですし使いようはあるでしょう。
もし、なんらかのトラブルがあった場合、「ファイル」の中身を iSCSI Target 側から参照することができないので、大容量のファイルシステムとしては不向きなのかも知れません。
-パーティションを割り当てる方法
ディスクを割り当てる場合、「空きディスク」または「空きパーティション」を準備しなければなりません。仮想環境で live migration を行いたい場合や、本格的なディスク仮想化、SAN化をするなら、こちらを使います。
XEN 環境であれば、インストール済みの XEN 環境にディスクイメージを追加して仮想ディスクを作れば xvd* を iSCSI 専用デバイスとして定義することができます。
iSCSI ターゲットメディアを指定
YaST > iSCSI Target > Targets Tab
Add > Add > Browse で /path/MyiSCSI.img か /dev/xxx ( xxx: は sdc, hdc など, XEN 環境では xvd* などが使えます) ここで Sparse File を使うか /dev/xxx を使うかでディスク装置をターゲットにするか、ファイルを使うかが決まります。

Service Tab ではデフォルト Manually Start なので When Booting にチェックします。

Global Tab はとりあえず No Authentication とします。必要に応じて認証が必要でしょうが、サーバがサーバ室にあってバックボーン回線に繋がっている場合、ユーザからはアクセスできないので、この設定でもとりあえず構わないでしょう。
Finish を押してサービスを起動します。
initiator 側
それでは iSCSI initiator 側からマウントして利用してみましょう。
~# yast
> Network Service > iSCSI initiator を開き、Discover Target を選びます。
Add を選ぶと、 iSCSI Target のアドレスと認証情報をセットします。

Discover Target の List 画面から、まだ未接続の iSCSI ターゲットにを選んで "Log In" を行います。

Connected Target に iSCSI Target が接続されていることを確認します。

※CUI 版の yast では toggle statup が画面からはみ出て見えませんが、yast2 で見るとこの部分は manual になっていることがわかります。
Toggle Startup を automatic に変更します。

Finish します。
/dev に sd* が認識されているか確認します。
iscsiuser:/ # ls /dev/sd*
/dev/sda
iscsiuser:/ #
SCSI デバイスとして、認識することができたようです。それでは、このデバイスにパーティションを作ってマウントしてみましょう。
iscsiuser:/ # yast
System > Partitioner を選びます。IET-Virtual-Disk が見えますね。

このデバイスを選んで Create します。

ファイルシステム( Default : ReiserFS ) とサイズ、マウントポイントをセットします。

Partitiner のメインメニューから Apply すると、フォーマットが開始されます。

フォーマットが終わるとパーティションが作成されていることがわかりますね。
この状態で Quit します。

パーティションがあるかどうか fdisk -l で確認してみます。
iscsiuser:/ # fdisk -l
Disk /dev/xvda: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/xvda1 1 98 787153+ 82 Linux swap / Solaris
/dev/xvda2 * 99 783 5502262+ 83 Linux
Disk /dev/sda: 4294 MB, 4294971392 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 522 4192933+ 83 Linux
iscsiuser:/ #
どうやら、ディスクがちゃんと認識できたようです。
iscsiuser:/etc # cat fstab
/dev/xvda2 / reiserfs acl,user_xattr 1 1
/dev/xvda1 swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
/dev/disk/by-id/scsi-1494554000000000030000000000000000000000000000000-part1 /iscsi reiserfs acl,user_xattr,hotplug 1 2
/etc/fstab にも書き込まれました。
fstab には起動時に自動マウントされるよう次の行を加えます。
/dev/sda1 /media/MountPoint noauto,_netdev 0 0
_netdev はネットワークが起動するまで待つオプションです。マニュアルには記載がないのですが、どうもこのオプションを使うのが一般的なようです。
ノベルのマニュアルはこちらです。
http://www.novell.com/ja-jp//documentation/sles10/sles_admin/data/cha_inst_system_iscsi.html
Novell K.K. の日本語サイト(SLES9 の設定方法の残骸のようです)
SUSE Linux 10.0でXen 3.0を用いユーティリティコンピューティング環境を実現
非番のエンジニア
-キーワード-
SUSE Enterprise Server 10 , SLES10, SLED10, iSCSI Target, iSCSI Initiator, fstab, _netdev, XEN,