13.3 iSCSIイニシエータの設定

任意のiSCSIターゲットに接続するには、iSCSIイニシエータ(iSCSIクライアントとも呼ぶ)を使用できます。これは、「セクション 13.2, iSCSIターゲットのセットアップ」で説明されているターゲットソリューションだけに限りません。iSCSIイニシエータの設定には、利用可能なiSCSIターゲットの検出と、iSCSIセッションの設定という2つの主要ステップがあります。どちらの設定も、YaSTを使って行うことができます。

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

YaSTの[iSCSIイニシエータの概要]が3つのタブに分割されます。

  • サービス:サービス]タブでは、ブート時にiSCSIイニシエータを有効にできます。固有のイニシエータ名とディスカバリに使用するiSNSサーバも設定できます。iSNSのデフォルトポートは3205です。

  • 接続したターゲット: [Connected Targets]タブには、現在接続しているiSCSIターゲットの概要が表示されます。このタブにも、[検出されたターゲット]タブのように、システムに新しいターゲットを追加するオプションが用意されています。

    このページでは、ターゲットデバイスを選択して、各iSCSIターゲットデバイスの起動時の設定を切り替えることができます。

    • 自動: このオプションは、iSCSIサービス自体の起動時に接続するiSCSIターゲットに使用されます。これが通常の設定です。

    • Onboot(起動時): このオプションは、起動時、つまりルート(/)がiSCSI上にある場合に接続するiSCSIターゲットに使用します。したがって、iSCSIターゲットデバイスはサーバの起動時にinitrdによって評価されます。

  • 検出されたターゲット:検出されたターゲット]では、ネットワーク内のiSCSIターゲットを手動で検出することができます。

iSCSIイニシエータの設定

  1. YaSTを開き、rootユーザとしてログインします。

  2. ネットワークサービス > iSCSIイニシエータ]を選択します。

    [iSCSIイニシエータの概要]ページで[サービス]タブが選択された状態で、YaSTが開きます。

  3. サービスの開始]領域で、次のいずれかを選択します。

    • 起動時: その後の再起動時には、イニシエータサービスが自動的に開始します。

    • 手動(デフォルト): サービスを手動で開始します。

  4. イニシエータ名]を指定、または確認します。

    このサーバ上のiSCSIイニシエータに、正しい形式のイニシエータ修飾名(IQN)を指定します。イニシエータ名はネットワーク全体で固有のものでなければなりません。IQNは次の一般的なフォーマットを使用します。

    iqn.yyyy-mm.com.mycompany:n1:n2
    

    ここでn1とn2はアルファベットか数字です。次に例を示します。

    iqn.1996-04.de.suse:01:9c83a3e15f64
    

    イニシエータ名]には、サーバ上の/etc/iscsi/initiatorname.iscsiファイルから対応する値が自動的に入力されます。

    サーバがiBFT(iSCSI Boot Firmware Table)をサポートしている場合は、[イニシエータ名]にはIBFT内の対応する値が入力され、このインタフェースではイニシエータ名を変更できません。代わりにBIOSセットアップを使用して変更してください。iBFTは、サーバのiSCSIターゲットとイニシエータの説明を含む、iSCSIの起動プロセスに便利な各種パラメータを含んだ情報ブロックです。

  5. 次のいずれかの方法を使用して、ネットワーク上のiSCSIターゲットを検出します。

iSNSによるiSCSIターゲットの検出

このオプションを使用する前に、ご使用の環境内でiSNSサーバをインストールし、設定しておく必要があります。詳細については、セクション 12.0, Linux用iSNSを参照してください。

  1. YaSTで[iSCSIイニシエータ]を選択し、次に[サービス]タブを選択します。

  2. iSNSサーバのIPアドレスとポートを指定します。

    デフォルトのポートは3205です。

  3. [iSCSIイニシエータの概要]ページで、[完了]をクリックして変更内容を保存、および適用します。

iSCSIターゲットの手動検出

iSCSIイニシエータを設定しているサーバからアクセスする各iSCSIターゲットサーバについて、次の手順を繰り返し実行します。

  1. YaSTで[iSCSIイニシエータ]を選択し、次に[検出されたターゲット]タブを選択します。

  2. 検出]をクリックして[iSCSIイニシエータの検出]ダイアログを開きます。

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

    デフォルトポートは3260です。

  4. 認証が必要な場合は、[認証なし]の選択を解除して、[受信]または[送信]認証用の資格情報を指定します。

  5. 次へ]をクリックして、検出を開始し、iSCSIターゲットサーバに接続します。

  6. 資格情報が必要な場合は、検出成功後、[ログイン]を使用してターゲットを有効化します。

    指定したiSCSIターゲットを使用するための、認証資格情報の提供を促されます。

  7. 次へ]をクリックして、設定を完了します

    作業が正常に完了すると、[Connected Targets]にターゲットが表示されます。

    これで、仮想iSCSIデバイスを利用できるようになりました。

  8. [iSCSIイニシエータの概要]ページで、[完了]をクリックして変更内容を保存、および適用します。

  9. lsscsiコマンドを使用すると、iSCSIターゲットデバイスのローカルデバイスパスを検出することができます。

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

iSCSIターゲットデバイスの起動設定

  1. YaSTで、[iSCSIイニシエータ]を選択し、次に[接続したターゲット]タブを選択して、現在サーバに接続されているiSCSIターゲットデバイスの一覧を表示することができます。

  2. 管理するiSCSIターゲットデバイスを選択します。

  3. 起動の切り替え]をクリックして設定を変更します。

    • 自動: このオプションは、iSCSIサービス自体の起動時に接続するiSCSIターゲットに使用されます。これが通常の設定です。

    • Onboot(起動時): このオプションは、起動時、つまりルート(/)がiSCSI上にある場合に接続するiSCSIターゲットに使用します。したがって、iSCSIターゲットデバイスはサーバの起動時にinitrdによって評価されます。

  4. 完了]をクリックして、変更を保存、および適用します。

13.3.2 手動による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行に表示されます。保存されたデータの詳細については、「セクション 13.3.3, iSCSIクライアントデータベース」を参照してください。

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

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

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

13.3.3 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コマンドを実行します。

13.3.4 詳細情報

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

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