iSCSIイニシエータ(クライアント)を使って、任意のiSCSIターゲットに接続することができます。前述したiSCSIターゲットソリューション以外への接続にも使用できます。iSCSIイニシエータの設定には、大別すると利用可能なiSCSIターゲットの検出と、iSCSIセッションのセットアップの2つのステップがあります。どちらの設定も、YaSTを使って行うことができます。
設定項目は、3つのタブに分かれています。タブは、ブート時にiSCSIイニシエータを有効にする場合などに使用します。固有のとディスカバリに使用するiSNSサーバも設定できます。iSNSのデフォルトポートは3205です。[Connected Targets]このタブはタブのように、システムに新しいターゲットを追加するオプションが用意されています。タブから設定を行います。このタブ、ネットワーク内のiSCSIターゲットを検出する場合に使用します。
は、ディスカバリダイアログを表示する場合に使用します。
IPアドレスを入力し、必要に応じてポートを変更します。
必要に応じて、または認証を追加します。
をクリックして、検出を開始します。
検出に成功したら、を使ってターゲットを有効にします。指定したiSCSIターゲットを使用するための、認証情報を要求するメッセージが表示されます。設定を完了するには、をクリックします。作業が正常に完了すると、にターゲットが表示されます。
これで、仮想iSCSIデバイスを利用できるようになりました。実際のデバイスを探すには、lsscsiコマンドを使用します。
lsscsi [1:0:0:0] disk IET VIRTUAL-DISK 0 /dev/sda
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コマンドを実行すると、新しく生成されたデバイスが表示されます。これらのデバイスをマウントして、アクセスできるようになりました。
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>を呼び出し、ボリュームグループは有効になります。
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ターゲットにログインさせる場合は、値にautomaticとnode.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
このほか、オンラインマニュアルも利用できます。iscsiadm、iscsid、ietd.conf、およびietdのマニュアルページ、およびサンプルの環境設定ファイルの/etc/iscsid.confなどを参照してください。