SUSE® Linux Enterprise Serverには、Ardis iSCSIターゲットから進化したオープンソースのiSCSIターゲットソリューションが付属しています。基本的な設定はYaSTを使って行えますが、iSCSIの機能をフル活用するには、手動で設定を行う必要があります。
iSCSIターゲットの設定により、既存のブロックデバイスをiSCSIイニシエータにエクスポートします。YaSTのパーティショナを使用して、またはコマンドラインからパーティション分割を行うことで、未フォーマットのパーティションやデバイスを設定し、ターゲットデバイスで使用するストレージスペースを準備する必要があります。
重要: iSCSIターゲットとして使用するデバイスやパーティションを設定したら、ローカルパス経由で直接アクセスしないでください。作成時にはマウントポイントは指定しないでください。
rootユーザとしてログインし、YaSTを開きます。
[
> ]を選択します。パーティショナの使用に関する警告に対して[
]を選択して続行します。[
]をクリックしてパーティションを作成しますが、フォーマットやマウントは行いません。iSCSIターゲットは、Linux、Linux LVM、またはLinux RAIDファイルシステムIDで未フォーマットのパーティションを使用できます。
[
]を選択し、[ ]をクリックします。使用する容量を指定して、[
]をクリックします。[
]を選択し、ファイルシステムIDの種類を指定します。[
]を選択します。[
]をクリックします。後でiSCSI LUNとして使用したい各エリアに対して、ステップ 4を繰り返し実行します。
[
]をクリックして変更を保存し、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ディスクイメージを作成する場合は、まず、ディレクトリが存在することを確認し、次に、イメージ自体を作成します。
ホストサーバにrootユーザとしてログインします。
端末コンソールプロンプトで次のコマンドを入力します。
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
Xen設定ファイルで、ファイルシステムイメージをゲスト仮想マシンに割り当てます。
ゲストサーバにrootユーザとしてログインし、YaSTを使用してデバイスのパーティショニングの手順で仮想ブロックデバイスを設定します。
YaSTを開き、rootユーザとしてログインします。
[
> を選択します。[iSCSIターゲットの概要]ページで[
]タブを選択した状態で、YaSTが開きます。[
]領域で、次のいずれかを選択します。起動時: その後の再起動時には、イニシエータサービスが自動的に開始します。
手動(デフォルト): サービスを手動で開始します。
ターゲットアドバタイジングにiSNSを使用する場合は、[
]チェックボックスを選択し、IPアドレスを入力します。必要に応じて、ファイアウォールポートを開き、リモートコンピュータからサーバへのアクセスを許可します。
[
]チェックボックスを選択します。[
]をクリックして、ポートを開くネットワークインタフェースを指定し、ネットワークインタフェースの横のチェックボックスをオンにして有効にし、[ ]をクリックして設定を受け入れます。このサーバで設定したターゲットデバイスへの接続に認証が必要な場合は、[
]タブを選択し、[ ]の選択を解除して、送受信の認証に必要な資格情報を指定します。デフォルトでは[
]のオプションが有効になっています。認証は受信、送信、または送受信の両方に対して指定できます。ユーザ名とパスワードのペアを[ ]の一覧に追加することで、受信認証の資格情報を複数セット指定することもできます。iSCSIターゲットデバイスを指定します。
[
]タブを選択します。まだそうしていない場合は、一覧からサンプルのiSCSIターゲットを選択して削除し、[
]をクリックして削除を確認します。[
]をクリックして、新しいiSCSIターゲットを追加します。iSCSIターゲットによって自動的に未フォーマットのパーティションやブロックデバイスが提示され、[ターゲット]および[イニシエータ]フィールドに情報が入力されます。
これを受諾することも、別なスペースを選択することもできます。
[
]をクリックして、そのLUNに割り当てるセクタを指定することで、スペースをさらに分割して、デバイス上にLUNを作成することもできます。これらのLUNに追加のオプションが必要な場合は、[ ]を選択します。Click
(オプション)[
]タブで[ ]をクリックして、設定したiSCSIターゲットの情報をファイルにエクスポートします。こうしておくと、後でこの情報をリソースの利用者に簡単に提供することができます。
[
]をクリックしてデバイスを作成し、[ ]をクリックしてiSCSIソフトウェアスタックをリスタートします。iSCSIターゲットを設定するには、YaSTの[セクション 12.0, Linux用iSNSを参照してください。
]モジュールを起動します。設定項目は、3つのタブに分かれています。[ ]タブでは、実行モードとファイアウォールの設定を行います。リモートコンピュータからiSCSIターゲットにアクセスする場合は、[ ]を選択します。iSNSサーバが検出およびアクセス制御を管理する場合は、[ ]を有効にして、iSNSサーバのIPアドレスを入力します。ホスト名は使用できません。IPアドレスを使用してください。iSNSの詳細は、[
]タブでは、iSCSIサーバの設定を行います。ここで設定する認証方法は、サービスの検出に使用します。ターゲットにアクセスする場合のものではありません。ディスカバリへのアクセスを制限しない場合は、[ ]を選択します。認証が必要な場合、2つの検討事項があります。まず、イニシエータは、iSCSIターゲットでディスカバリを実行するためのパーミッションがあることを証明できなければなりません。この設定は、[RFC 3720を参照してください。
]で行います。もう1つは、iSCSIターゲットはイニシエータに、自分が正しいターゲットであることを証明しなければなりません。そのため、iSCSIターゲットもユーザ名とパスワードを使用できます。この設定は、[ ]で行います。認証の詳細は、ターゲットは、[
]タブで定義します。新しいiSCSIターゲットを作成するには、[ ]をクリックします。最初のダイアログでは、エクスポートするデバイスに関する情報を指定します。[Target]
iqn.yyyy-mm.<reversed domain name>
この行は常に「iqn」から始まります。「yyyy-mm」の部分には、このターゲットをアクティブにする日付を指定します。命名規則の詳細については、「RFC 3722」を参照してください。
[Identifier]
ただし、システムを体系的に管理するためにも、一定のスキーマを使用するようにしてください。ターゲットに複数のLUNを割り当てることができます。そのためには、[
]タブでターゲットを選択し、[ ]をクリックします。次に、既存ターゲットに新しいLUNを追加します。エクスポートするブロックデバイス、またはファイルシステムイメージのパスを追加します。
次のメニューでは、ターゲットへのアクセス制限を設定します。ここの設定は、ディスカバリの認証設定とほとんど変わりありません。この場合、少なくとも着信認証を設定する必要があります。
新しいターゲットの設定を完了するには、[
]をクリックします。[ ]タブの概要ページが表示されます。変更内容を有効にするには、[ ]をクリックします。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
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
この設定を手動で行うには、次の手順に従ってください。
ietadm --op new --tid=2 --params Name=iqn.2006-02.com.example.iserv:system2コマンドを実行して、新しいターゲットを作成します。
ietadm --op new --tid=2 --lun=0 --params Path=/dev/mapper/system-swap2コマンドを実行して、LUNを追加します。
ietadm --op new --tid=2 --user --params=IncomingUser=joe,Password=secretコマンドを実行して、このターゲットにユーザ名とパスワードを設定します。
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にもあります。