iSCSIを設定する

iSCSIターゲット(ストレージ側)の設定
 設定項目
 ターゲットファイアウォールを開放する

iSCSIイニシエータ(利用側)の設定
 設定項目
 利用設定

iSCSIの解説はまぁ、いろんなとこで言われてますが、ようはネットワークを使用するSCSIです。サーバ業界で使用されます。
IPを介して使用されますが、固定ディスクとして認識されます。
いわゆるNAS、ファイルサーバで使用されるSMBプロトコルよりも高速であるという利点があります。
反面、一つのボリュームを複数のユーザから共有できません。クライアントからはローカルの固定ディスクとして認識され、占有されます。

ただ設定変更でローカルディスクを増減、別のサーバへ接続変更できるわけですから、だいぶ柔軟です。
高速なディスク上に複数のパーティション(のようなもの)を作成することで、複数のクライアントから利用可能です。
クライアントにはLinux以外にもXP、Vista、7、2003、2008といったサーバOSも使えます。
WindowsでiSCSIターゲットへ接続する場合は「WindowsXPでiSCSIデバイスを使用する」を参照してください。

iSCSIターゲット(ストレージ側)の設定

まずはiSCSIターゲットを設定します。感覚で言えばサーバ側の立場です。
YaSTを見ると「iSCSIイニシエータ(クライアント側)」のほうはありますが、ターゲットのほうはありません。
コマンドで入れてもいいのですが、iSCSIはその独特さから正直GUIのほうが簡単です。

まずはiSCSIの管理GUIをインストールしましょう。
ソフトウェアの管理から「yast2-iscsi-server」を選択、インストールします。


ここに他にもiscsi-targetとかもっともらしいものがありますが、とりあえずガマン。


インストール後、YaSTをいったん全て閉じてから、再度起動します。
iSCSIターゲットのメニューが増えています。


起動すると、YaSTが気を使って「インストールしますか?」と聞いてきますので、任せます。


これでiSCSIターゲットのインストールが完了し、設定メニューが有効になります。



とりあえず、設定項目を先に列挙してみます。

設定項目
[サービス]
 サービスの開始:起動時
 ファイアウォールでポートを開く:有効 ※ポート3260を使用します。

[グローバル]
 認証なし:外す
 受信認証:アクセスのためのユーザ名とパスワードを追加
 送信認証:なし

[ターゲット]
 LUN:0
 パス:/dev/sdb1 (使用するメディアデバイス名を指定します)
 受信認証:ディスク検索に使用するユーザ名とパスワードを追加 (グローバルのパスとは違います)

順に設定していきます。

サービスの設定をします。
起動時にiSCSIを有効にします。
iSCSIはポート番号3260のTCPもしくはUDPを使用しますので、ファイアウォール開放する必要があります。

※注意 ですが残念なことにこの「ファイアウォールでポート開く」という設定に無理があります。
      というよりバグがあって、ファイアウォールに設定するファイルにミスがあるのかポートを開いてくれません。
      別項「ファイアウォールを設定する」を参照してください。

グローバルの設定をします。
受信認証にユーザ名とパスワードを設定します。
ディスクには認証を使用しましょう。なにしろネットワークで認証無しだと、ディスクをまるごと乗っ取られることを意味します。
この認証は、いわばディスク一覧を列挙するためのアクセス権です。
送信認証は「相互認証」のためです。ここでは使用しません。
※送信認証はクライアントにとって、「これから接続するサーバはいつもと同じサーバか?」ということを確認するためのものです。偽サーバを接続されユーザが知らずにそこへデータを保存してしまう、という事態を防ぐ目的です。


ターゲットの設定をします。
ディスクターゲットを追加します。
.

ターゲット名は、iSCSI独特なネーミングルールがあります(日付や種別)。だからこのわかりにくい名前をそのまま使用します。識別子などもデフォルトを使用します。
LUN値を追加します。


パスにデバイス名を指定します。パーティション、もしくはデバイス名です。/dev/sdbや/dev/sdb1です。

指定できるデバイスは、ブロックファイルであれば原則なんでも動作するはずです。
USB-HDDやisoイメージはもとより、「dd if=/dev/zero of=/tmp/iscsi.img ibs=1M obs=1M count=1024」などで出力したファイルも仮想ディスクに指定できます。
ただCDドライブを指定しても、動作したりしなかったり。


デバイスが追加されました。


ここでも受信認証を追加します。これはこのデバイスへアクセスするためのパスワードです。
グローバルのものとは別のものを使用するのがマナーです。


ターゲットが追加できました。


OKをクリックすると、iSCSIの再起動を確認されます。

このことからiSCSIの設定変更は、他のユーザが使用していない時間ということです。

ターゲットのファイアウォールを設定する
残念なことですが、YaST iSCSIターゲット設定にはバグ?があります。
ファイアウォールでiscsitargetという項目が許可されているにも関わらず、肝心のポート3260を正しく開放してくれません。

方法1
YaSTのファイアウォールで3260を有効にする


方法2
/etc/sysconfig/SuSEfirewall2.d/services/iscsitargetファイルを編集し「TCP="3260"」を記述する。

この後、ファイアウォールを再起動します。


iSCSIイニシエータ(利用側)の設定

YaSTにはiSCSIイニシエータのGUIがあります。それを選択しましょう。


未だ使用したことが無ければ、iSCSIイニシエータのインストールを求められます。


管理メニューが起動しました。


こちらも設定項目を先に列挙します。
設定項目
[サービス]
 サービスの開始:システム起動時
 イニシエータ名:デフォルト

[検出したターゲット]
 IPアドレス:ターゲットのアドレス
 ポート:3260 デフォルト
 送信認証:ターゲットのグローバルで設定した受信情報
 ※イニシエータの送信認証へ、ターゲットの受信認証情報を入力します。

[ログイン情報]
 スタートアップ:automatic
 送信認証:ターゲットのデバイスの追加で設定した受信情報


サービスタブはデフォルト設定を使用します。


「検出したターゲット」タブを選択し、検出をクリックします。


「iSCSIイニシエータの検出」で、IPアドレスにiSCSIターゲットのアドレスを入力します。
送信認証ユーザ名にターゲットで設定したグローバル設定の受信ユーザ情報を入力します。


もしここで「タイムアウトしました」的なメッセージが表示される場合は、ファイアウォールの問題です。

ターゲット側のファイアウォール開放のバグに注意してください。
あるいはクライアント側の送信ファイアウォールで3260を開放してください。

無事ターゲット(サーバ)が追加されました。


ログインをクリックします。


接続情報を入力します。
スタートアップには三種類があります。
 ・手動でログイン manual
 ・起動時にログイン onboot
 ・ディスクへアクセスするときにログイン automatic
ここではautomaticを選択しておきます。
ログイン情報の「送信認証」へ、ターゲットデバイスの受信認証の情報を入力します。


ここですぐに画面が切り替わらない場合、パスワードを間違えている可能性があります。
ターゲットの受信認証、イニシエータの送信認証、グローバル認証・ターゲット認証。
再確認しましょう。

/var/log/messageに接続状況が出力されますので、原因の切り分けに役に立つでしょう。

利用設定
YaSTのパーティション設定を開くと、デバイスが追加されています。(画面中2Gのディスク)


対象のディスクへパーティションを追加し、マウントし、利用可能にします。

ここでは/iscsi-diskへマウントしてみました。

マウントの注意点
この設定により、/etc/fstabの起動ブートにiSCSIデバイスのマウントが記述されます。
そのため、iSCSIを切断して使用をとりやめたとしても、/etc/fstabのマウント記述が残ってしまい、起動時のマウントエラーにつながります。

CentOSにあるようなiSCSIをマウントしたままだとシャットダウンができない、といった症状がopenSUSEでは起こりません。

iSCSIの使用を取りやめる場合は、まずパーティション設定でマウントをやめるか、直接fstabのマウント行を削除します。
もしうっかり忘れてしまい、fstabのiSCSIマウント行を残したまま再起動してしまった場合、システムが修正モードで起動します。
それは読み込み専用なので、再マウントすることでfstabからiSCSIデバイスのマウント行を削除します。

#mount -o remout,rw /
これで対処します。


最後にディスクへの書き込み速度を調べてみます。

>su
#for i in [1] [2] [3] ;do sleep 3;echo $'\n\n' $i;date;time dd if=/dev/zero of=/iscsi-disk/testwrite$i.tmp ibs=1M obs=1M count=512;date;done

検証用の仮想to仮想環境で、ローカルで100MBほどのディスクが、ネットワークで37〜40MB/sほど。
ファイル共有よりかは速いようです。







prev.gif