13.2 iSCSIターゲットのセットアップ

SUSE® Linux Enterprise Serverには、Ardis iSCSIターゲットから進化したオープンソースのiSCSIターゲットソリューションが付属しています。基本的な設定はYaSTを使って行えますが、iSCSIの機能をフル活用するには、手動で設定を行う必要があります。

13.2.1 ストレージスペースの準備

iSCSIターゲットの設定により、既存のブロックデバイスをiSCSIイニシエータにエクスポートします。YaSTのパーティショナを使用して、またはコマンドラインからパーティション分割を行うことで、未フォーマットのパーティションやデバイスを設定し、ターゲットデバイスで使用するストレージスペースを準備する必要があります。

重要: iSCSIターゲットとして使用するデバイスやパーティションを設定したら、ローカルパス経由で直接アクセスしないでください。作成時にはマウントポイントは指定しないでください。

デバイスのパーティショニング

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

  2. システム > パーティショナ]を選択します。

  3. パーティショナの使用に関する警告に対して[はい]を選択して続行します。

  4. 追加]をクリックしてパーティションを作成しますが、フォーマットやマウントは行いません。

    iSCSIターゲットは、Linux、Linux LVM、またはLinux RAIDファイルシステムIDで未フォーマットのパーティションを使用できます。

    1. プライマリパーティション]を選択し、[次へ]をクリックします。

    2. 使用する容量を指定して、[次へ]をクリックします。

    3. フォーマットしない]を選択し、ファイルシステムIDの種類を指定します。

    4. マウントしない]を選択します。

    5. 完了]をクリックします。

  5. 後でiSCSI LUNとして使用したい各エリアに対して、ステップ 4を繰り返し実行します。

  6. 受諾]をクリックして変更を保存し、YaSTを閉じます。

仮想環境でのデバイスのパーティション分割

XenゲストサーバをiSCSIターゲットサーバとして使用することができます。iSCSIストレージデバイスに使用するストレージスペースをゲストの仮想マシンに割り当て、ゲスト環境内の仮想ディスクとしてそのスペースにアクセスします。各仮想ディスクは、ディスク全体、パーティション、ボリュームなどの物理ブロックデバイスでも、Xenホストサーバ上の大規模な物理ディスク上の単一イメージファイルが仮想ディスクになっている、ファイルバックディスクイメージのいずれでも可能です。最適なパフォーマンスを得るためには、物理ディスクまたはパーティションから各仮想ディスクを作成してください。ゲストの仮想マシンに仮想ディスクを設定したら、ゲストサーバを起動し、物理サーバの場合と同じ方法で、新しいブランクの仮想ディスクをiSCSIターゲットデバイスとして設定します。

ファイルバックディスクイメージがXenホストサーバ上に作成され、Xenゲストサーバに割り当てられます。デフォルトでは、Xenはファイルバックディスクイメージを/var/lib/xen/images/vm_nameディレクトリに保存します。ここでvm_nameは仮想マシンの名前です。

たとえば、サイズが4GBの/var/lib/xen/images/vm_one/xen-0ディスクイメージを作成する場合は、まず、ディレクトリが存在することを確認し、次に、イメージ自体を作成します。

  1. ホストサーバにrootユーザとしてログインします。

  2. 端末コンソールプロンプトで次のコマンドを入力します。

    mkdir -p /var/lib/xen/images/vm_one
    dd if=/dev/zero of=/var/lib/xen/images/vm_one/xen-0 seek=1M bs=4096 count=1
    
  3. Xen設定ファイルで、ファイルシステムイメージをゲスト仮想マシンに割り当てます。

  4. ゲストサーバにrootユーザとしてログインし、YaSTを使用してデバイスのパーティショニングの手順で仮想ブロックデバイスを設定します。

13.2.2 YaSTを使ったiSCSIターゲットの作成

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

  2. ネットワークサービス > iSCSI ターゲットを選択します。

    [iSCSIターゲットの概要]ページで[サービス]タブを選択した状態で、YaSTが開きます。

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

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

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

  4. ターゲットアドバタイジングにiSNSを使用する場合は、[iSNSアクセス制御]チェックボックスを選択し、IPアドレスを入力します。

  5. 必要に応じて、ファイアウォールポートを開き、リモートコンピュータからサーバへのアクセスを許可します。

    1. ファイアウォールでポートを開く]チェックボックスを選択します。

    2. ファイアウォールの詳細]をクリックして、ポートを開くネットワークインタフェースを指定し、ネットワークインタフェースの横のチェックボックスをオンにして有効にし、[OK]をクリックして設定を受け入れます。

  6. このサーバで設定したターゲットデバイスへの接続に認証が必要な場合は、[グローバル]タブを選択し、[認証なし]の選択を解除して、送受信の認証に必要な資格情報を指定します。

    デフォルトでは[認証なし]のオプションが有効になっています。認証は受信、送信、または送受信の両方に対して指定できます。ユーザ名とパスワードのペアを[受信認証]の一覧に追加することで、受信認証の資格情報を複数セット指定することもできます。

  7. iSCSIターゲットデバイスを指定します。

    1. ターゲット]タブを選択します。

    2. まだそうしていない場合は、一覧からサンプルのiSCSIターゲットを選択して削除し、[続ける]をクリックして削除を確認します。

    3. 追加]をクリックして、新しいiSCSIターゲットを追加します。

      iSCSIターゲットによって自動的に未フォーマットのパーティションやブロックデバイスが提示され、[ターゲット]および[イニシエータ]フィールドに情報が入力されます。

    4. これを受諾することも、別なスペースを選択することもできます。

      追加]をクリックして、そのLUNに割り当てるセクタを指定することで、スペースをさらに分割して、デバイス上にLUNを作成することもできます。これらのLUNに追加のオプションが必要な場合は、[エキスパート設定]を選択します。

    5. Click Next

    6. 作成する各iSCSIターゲットデバイスに対して、ステップ 7.cからステップ 7.eを繰り返し実行します。

    7. (オプション)[サービス]タブで[保存]をクリックして、設定したiSCSIターゲットの情報をファイルにエクスポートします。

      こうしておくと、後でこの情報をリソースの利用者に簡単に提供することができます。

    8. 完了]をクリックしてデバイスを作成し、[はい]をクリックしてiSCSIソフトウェアスタックをリスタートします。

iSCSIターゲットを設定するには、YaSTの[iSCSIターゲット]モジュールを起動します。設定項目は、3つのタブに分かれています。[Service]タブでは、実行モードとファイアウォールの設定を行います。リモートコンピュータからiSCSIターゲットにアクセスする場合は、[ファイアウォールでポートを開く]を選択します。iSNSサーバが検出およびアクセス制御を管理する場合は、[iSNSアクセス管理]を有効にして、iSNSサーバのIPアドレスを入力します。ホスト名は使用できません。IPアドレスを使用してください。iSNSの詳細は、セクション 12.0, Linux用iSNSを参照してください。

Global]タブでは、iSCSIサーバの設定を行います。ここで設定する認証方法は、サービスの検出に使用します。ターゲットにアクセスする場合のものではありません。ディスカバリへのアクセスを制限しない場合は、[No Authentication]を選択します。

認証が必要な場合、2つの検討事項があります。まず、イニシエータは、iSCSIターゲットでディスカバリを実行するためのパーミッションがあることを証明できなければなりません。この設定は、[Incoming Authentication]で行います。もう1つは、iSCSIターゲットはイニシエータに、自分が正しいターゲットであることを証明しなければなりません。そのため、iSCSIターゲットもユーザ名とパスワードを使用できます。この設定は、[Outgoing Authentication]で行います。認証の詳細は、RFC 3720を参照してください。

ターゲットは、[Targets]タブで定義します。新しいiSCSIターゲットを作成するには、[追加]をクリックします。最初のダイアログでは、エクスポートするデバイスに関する情報を指定します。

ターゲット

[Target]行には、以下のような固定形式の構文を指定します。

iqn.yyyy-mm.<reversed domain name>

この行は常に「iqn」から始まります。「yyyy-mm」の部分には、このターゲットをアクティブにする日付を指定します。命名規則の詳細については、「RFC 3722」を参照してください。

Identifier

[Identifier]は、自由に指定することができます。ただし、システムを体系的に管理するためにも、一定のスキーマを使用するようにしてください。

LUN

ターゲットに複数のLUNを割り当てることができます。そのためには、[ターゲット]タブでターゲットを選択し、[編集]をクリックします。次に、既存ターゲットに新しいLUNを追加します。

パス

エクスポートするブロックデバイス、またはファイルシステムイメージのパスを追加します。

次のメニューでは、ターゲットへのアクセス制限を設定します。ここの設定は、ディスカバリの認証設定とほとんど変わりありません。この場合、少なくとも着信認証を設定する必要があります。

新しいターゲットの設定を完了するには、[次へ]をクリックします。[Target]タブの概要ページが表示されます。変更内容を有効にするには、[完了]をクリックします。

13.2.3 iSCSIターゲットの手動設定

iSCSIターゲットを設定するには、/etc/ietd.confを編集します。このファイル中の、最初のTarget宣言より前にあるすべてのパラメータは、ファイルのグローバルパラメータになります。この部分にある認証情報は、グローバルパラメータではありません。iSCSIターゲットの検出に用いられます。

iSNSサーバにアクセスできる場合は、まず、ファイルを、このサーバについてターゲットに通知するように設定する必要があります。iSNSサーバのアドレスは、必ず、IPアドレスで指定する必要があります。iSNSサーバのDNS名を指定することはできません。この機能の設定は、次のようになります。

iSNSServer 192.168.1.111
iSNSAccessControl no

この設定では、iSCSIターゲットがiSNSサーバでそれ自体を登録し、ディスカバリのイニシエータとなります。iSNSの詳細は、セクション 12.0, Linux用iSNSを参照してください。iSNSディスカバリのためのアクセス制御はサポートされていません。[iSNSアクセス管理]を[いいえ]のままにします。

すべての直接iSCSI認証は、双方向で行うことができます。iSCSIターゲットがiSCSIイニシエータに認証を要求するには、IncomingUserを使用します。このオプションは、複数回追加できます。iSCSIイニシエータも、iSCSIターゲットに認証を要求することができます。この場合は、OutgoingUserを使用します。どちらの場合も、構文は同じです。

IncomingUser <username> <password>
OutgoingUser <username> <password>

認証後は、1つまたは複数のターゲット定義を指定します。定義する各ターゲットについて、Targetセクションを追加します。このセクションは、常にTarget識別子で始まり、その後に論理ユニット番号の定義が続きます。

Target iqn.yyyy-mm.<reversed domain name>[:identifier]
          Lun 0 Path=/dev/mapper/system-v3
          Lun 1 Path=/dev/hda4
          Lun 2 Path=/var/lib/xen/images/xen-1,Type=fileio

Target行では、yyyy-mmにターゲットを有効にする日付を指定し、identifierに任意の識別子を指定できます。命名規則の詳細については、「RFC 3722」を参照してください。この例では、3つの異なるブロックデバイスをエクスポートしています。最初のブロックデバイスは論理ボリューム( 「セクション 4.0, LVMの設定」も参照)、2番目はIDEパーティション、3番目はローカルファイルシステムで使用可能なイメージです。これらはすべてiSCSIイニシエータへのブロックデバイスのようになります。

iSCSIターゲットを有効にする前に、Lun定義の後に、最低1つのIncomingUserを追加してください。このパラメータは、このターゲットの使用に対する認証を指定します。

変更内容を有効にするには、rcopen-iscsi restartコマンドを実行して、iscsitargetデーモンを再起動します。/procファイルシステムで、設定内容を確認してください。

cat /proc/net/iet/volume
tid:1 name:iqn.2006-02.com.example.iserv:systems
        lun:0 state:0 iotype:fileio path:/dev/mapper/system-v3
        lun:1 state:0 iotype:fileio path:/dev/hda4
        lun:2 state:0 iotype:fileio path:/var/lib/xen/images/xen-1

ここで説明しているほかにも、iSCSIターゲットの動作を制御するさまざまなオプションがあります。詳細については、ietd.confのマニュアルページを参照してください。

/procファイルシステムには、アクティブなセッションも表示されます。接続されている各イニシエータに対応するエントリが、/proc/net/iet/sessionに追加されます。

cat /proc/net/iet/session
tid:1 name:iqn.2006-02.com.example.iserv:system-v3
   sid:562949957419520 initiator:iqn.2005-11.de.suse:cn=rome.example.com,01.9ff842f5645
      cid:0 ip:192.168.178.42 state:active hd:none dd:none
   sid:281474980708864 initiator:iqn.2006-02.de.suse:01.6f7259c88b70
      cid:0 ip:192.168.178.72 state:active hd:none dd:none

13.2.4 ietadmを使ったオンラインターゲットの設定

iSCSIターゲットの設定の変更が必要な場合は、必ず、ターゲットを再起動して、設定ファイルで行った変更を有効にする必要があります。ただし、この作業を行うと、アクティブなセッションがすべて中断されます。この問題を回避するには、環境設定ファイルの/etc/ietd.confを変更すると同時に、ietadm管理ユーティリティを使って現在の設定も変更してください。

LUNを指定した新しいiSCSIターゲットを作成するには、まず設定ファイルを更新します。追加するエントリの例を以下に示します。

Target iqn.2006-02.com.example.iserv:system2
          Lun 0 Path=/dev/mapper/system-swap2
          IncomingUser joe secret

この設定を手動で行うには、次の手順に従ってください。

  1. ietadm --op new --tid=2 --params Name=iqn.2006-02.com.example.iserv:system2コマンドを実行して、新しいターゲットを作成します。

  2. ietadm --op new --tid=2 --lun=0 --params Path=/dev/mapper/system-swap2コマンドを実行して、LUNを追加します。

  3. ietadm --op new --tid=2 --user --params=IncomingUser=joe,Password=secretコマンドを実行して、このターゲットにユーザ名とパスワードを設定します。

  4. cat /proc/net/iet/volumeコマンドを実行して、設定内容を確認します。

アクティブな接続を削除することもできます。まず、cat /proc/net/iet/sessionコマンドを実行して、アクティブな接続を表示します。たとえば、次のように表示されます。

cat /proc/net/iet/session
tid:1 name:iqn.2006-03.com.example.iserv:system
        sid:281474980708864 initiator:iqn.1996-04.com.example:01.82725735af5
                cid:0 ip:192.168.178.72 state:active hd:none dd:none

セッションIDが 281474980708864のセッションを削除する場合は、ietadm --op delete --tid=1 --sid=281474980708864 --cid=0コマンドを実行します。このコマンドを実行すると、クライアントシステムからデバイスにアクセスできなくなるため、このデバイスにアクセスしているデバイスがハングアップする可能性があることに注意してください。

ietadmを使って、さまざまな環境設定パラメータを変更することもできます。グローバル変数を一覧表示する場合は、ietadm --op show --tid=1 --sid=0コマンドを実行します。次のような実行結果が表示されます。

InitialR2T=Yes
ImmediateData=Yes
MaxConnections=1
MaxRecvDataSegmentLength=8192
MaxXmitDataSegmentLength=8192
MaxBurstLength=262144
FirstBurstLength=65536
DefaultTime2Wait=2
DefaultTime2Retain=20
MaxOutstandingR2T=1
DataPDUInOrder=Yes
DataSequenceInOrder=Yes
ErrorRecoveryLevel=0
HeaderDigest=None
DataDigest=None
OFMarker=No
IFMarker=No
OFMarkInt=Reject
IFMarkInt=Reject

これらのパラメータは、すべて容易に変更できます。たとえば、最大接続数を2に変更する場合は、=2を実行します。

ietadm --op update --tid=1 --params=MaxConnections=2. 

/etc/ietd.confファイルでは、このパラメータに対応する行がMaxConnections 2のように指定されています。

警告: ietadmユーティリティによる変更は、システムに対して永久的なものではありません。これらの変更は、/etc/ietd.conf環境設定ファイルに追加しない限り、次の再起動で失われます。ネットワークでのiSCSIの利用方法によっては、これによって重大な問題が発生する可能性があります。

ietadmユーティリティには、他にも使用可能なオプションがあります。ietadm -hを使用して、概要をつかんでください。また、省略形も利用できます。省略形には、ターゲットID (tid)、セッションID (sid)、および接続ID (cid)などがあります。これらの情報は、/proc/net/iet/sessionにもあります。