iSCSIイニシエータの設定

iSCSIイニシエータ(クライアント)を使って、任意のiSCSIターゲットに接続することができます。前述したiSCSIターゲットソリューション以外への接続にも使用できます。iSCSIイニシエータの設定には、大別すると利用可能なiSCSIターゲットの検出と、iSCSIセッションのセットアップの2つのステップがあります。どちらの設定も、YaSTを使って行うことができます。

YaSTを使ったiSCSIイニシエータの設定

設定項目は、3つのタブに分かれています。[Service]タブは、ブート時にiSCSIイニシエータを有効にする場合などに使用します。固有のイニシエータ名とディスカバリに使用するiSNSサーバも設定できます。iSNSのデフォルトポートは3205です。[Connected Targets]タブには、現在接続しているiSCSIターゲットの概要が表示されます。このタブは[Discovered Targets]タブのように、システムに新しいターゲットを追加するオプションが用意されています。[Discovered Targets]タブから設定を行います。このタブ、ネットワーク内のiSCSIターゲットを検出する場合に使用します。

  1. [Discovery]は、ディスカバリダイアログを表示する場合に使用します。

  2. IPアドレスを入力し、必要に応じてポートを変更します。

  3. 必要に応じて、[Incoming]または[Outgoing]認証を追加します。

  4. [次へ]をクリックして、検出を開始します。

検出に成功したら、[ログイン]を使ってターゲットを有効にします。指定したiSCSIターゲットを使用するための、認証情報を要求するメッセージが表示されます。設定を完了するには、[次へ]をクリックします。作業が正常に完了すると、[Connected Targets]にターゲットが表示されます。

これで、仮想iSCSIデバイスを利用できるようになりました。実際のデバイスを探すには、lsscsiコマンドを使用します。

lsscsi
[1:0:0:0]   disk    IET      VIRTUAL-DISK     0     /dev/sda

手動によるiSCSIイニシエータの設定

iSCSI接続の検出や設定を行うには、iscsidが稼働していなければなりません。初めて検出(ディスカバリ)を実行する場合、iSCSIイニシエータの内部データベースが、/var/lib/open-iscsiディレクトリに作成されます。

ディスカバリがパスワードにより保護されている場合は、iscsidに認証情報を渡します。最初にディスカバリを実行する時には内部データベースが存在していないため、現時点でこれは使用できません。かわりに、/etc/iscsid.conf設定ファイルを編集して、情報を指定する必要があります。パスワード情報をiscsidに渡すには、/etc/iscsid.confファイルの最後に、次の行を追加します。

discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = <username>
discovery.sendtargets.auth.password = <password>

ディスカバリは、受け取ったすべての値を内部データベースに保存します。また、検出したターゲットをすべて表示します。ディスカバリを実行するには、iscsiadm -m discovery --type=st --portal=<targetip>コマンドを使用します。次のような実行結果が表示されます。

149.44.171.99:3260,1 iqn.2006-02.com.example.iserv:systems

iSNSサーバで使用できるターゲットを検出するには、コマンドiscsiadm --mode discovery --type isns --portal <targetip>を使用します。

iSCSIターゲットに定義されている各ターゲットが、それぞれ1行に表示されます。保管されているデータの詳細は、12.2.4項 「iSCSIクライアントデータベース」を参照してください。

iscsiadmコマンドの--loginオプションを使用すると、必要なすべてのデバイスが作成されます。

iscsiadm -m node -n iqn.2006-02.com.example.iserv:systems --login

lsscsiコマンドを実行すると、新しく生成されたデバイスが表示されます。これらのデバイスをマウントして、アクセスできるようになりました。

iSCSIデバイスでのLVMオートアセンブリの設定

LVMスタートアップはudevでサポートされているため、必要なすべてな物理ボリュームが検出されると、LVMボリュームグループはudevによって自動的に有効になります。

udevのLVMオートアセンブリはudevヘルパープログラムcollectを使用します。このプログラムは、最初の引数としてチェック対象の抽象IDを取り、コンポーネントIDのリストがこれに続きます。このプログラムがコンポーネントIDを最初の引数として呼び出されると、0を返します。

オートアセンブリに対して、指定されたボリュームグループの物理ボリュームUUIDは引数リストとしてcollectに登録されます。udev(またはvol_id)はデバイス上の物理ボリュームUUIDを検出できるため、最初の引数としてcollectに渡すことができます。

collectがすべての物理ボリュームUUIDで呼び出されたとき(udevがすべてのコンポーネントデバイスのイベントを受信したとき)、次のルールがトリガされ、vgchange -a y <vgname>を呼び出し、ボリュームグループは有効になります。

設定方法

スクリプト/usr/share/doc/packages/lvm2/lvm-vg-to-udev-rules.shを使用します。引数として、自動的に起動したいボリュームグループを指定します。このスクリプトは必要なudevルールを生成します。iSCSIを再起動して、ボリュームグループを有効にします。ブート時にアレイを自動的に起動する場合は、iSCSIコンポーネントデバイスを自動に切り替え、イニシエータがターゲットをブート時に自動的にログに記録するようにします。

iSCSIクライアントデータベース

iSCSIイニシエータが検出した情報は、/var/lib/open-iscsiに格納されている2つのデータベースファイルに保管されます。1つは、ディスカバリが検出したターゲット用のデータベースで、もう1つは検出したノード用のデータベースです。データベースにアクセスする場合、まずデータをディスカバリ用データベースから取得するのか、またはノードデータベースから取得するのかを指定する必要があります。指定するには、iscsiadmコマンドの-m discoveryまたは-m nodeパラメータを使用します。iscsiadmコマンドに、どちらかのパラメータを指定して実行すると、そのデータベースに保管されているレコードの概要が表示されます。

iscsiadm -m discovery
149.44.171.99:3260,1 iqn.2006-02.com.example.iserv:systems

この例のターゲット名はiqn.2006-02.com.example.iserv:systemsです。このデータセットに関連する操作を行う場合に、この名前が必要になります。ID iqn.2006-02.com.example.iserv:systemsのデータレコードのコンテンツを調べるには、次のコマンドを使用します。

iscsiadm -m node --targetname iqn.2006-02.com.example.iserv:systems
node.name = iqn.2006-02.com.example.iserv:systems
node.transport_name = tcp
node.tpgt = 1
node.active_conn = 1
node.startup = manual
node.session.initial_cmdsn = 0
node.session.reopen_max = 32
node.session.auth.authmethod = CHAP
node.session.auth.username = joe
node.session.auth.password = ********
node.session.auth.username_in = <empty>
node.session.auth.password_in = <empty>
node.session.timeo.replacement_timeout = 0
node.session.err_timeo.abort_timeout = 10
node.session.err_timeo.reset_timeout = 30
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
....

これらの変数の値を変更する場合は、iscsiadmコマンドでupdateオプションを使用します。たとえば、初期化時にiscidをiSCSIターゲットにログインさせる場合は、値にautomaticnode.startupを設定します。

iscsiadm -m node -n iqn.2006-02.com.example.iserv:systems --op=update --name=node.startup --value=automatic

不要になったデータセットを削除する場合は、deleteを使用します。ターゲットiqn.2006-02.com.example.iserv:systemsが有効なレコードではなくなった場合は、このレコードをコマンドiscsiadm -m node -n iqn.2006-02.com.example.iserv:systems --op=deleteで削除します。このオプションでは、確認のメッセージを表示せずかにレコードを削除するため、使用する際には細心の注意を払うようにしてください。

検出されたすべてのターゲットのリストを取得するには、コマンドiscsiadm -m nodeを実行します。

詳細情報

iSCSIプロトコルは、数年に渡って利用されています。そのため、iSCSIとSANソリューションの比較、ベンチマークテスト、ハードウェアソリューションの解説など、さまざまなレビューや参考資料が発表または公開されています。open-iscsiの詳細に関する代表的なサイトを以下に示します。

  • http://www.open-iscsi.org/

  • http://www.open-iscsi.org/cgi-bin/wiki.pl

  • http://www.novell.com/coolsolutions/appnote/15394.html

このほか、オンラインマニュアルも利用できます。iscsiadmiscsidietd.conf、およびietdのマニュアルページ、およびサンプルの環境設定ファイルの/etc/iscsid.confなどを参照してください。