I/O ドメインとは、物理 I/O デバイスに対する直接の所有権と直接のアクセス権を持つドメインです。PCI EXPRESS (PCI-E) バスをドメインに割り当てることで、I/O ドメインを作成できます。サーバー上に存在する PCI-E バスは、pci@400 (pci_0) などの名前で識別されます。それぞれのバスを別々のドメインに割り当てるには、ldm コマンドを使用します。
作成できる I/O ドメインの最大数は、サーバー上で使用可能な PCI-E バスの数に応じて異なります。Sun UltraSPARC T2 Plus ベースのサーバーは、最大 4 つの PCI-E バスを搭載しているため、最大 4 つの I/O ドメインを構成できます。
Sun SPARC Enterprise T5120 サーバーや T5220 サーバーなどの Sun UltraSPARC T2 ベースのサーバーには、PCI-E バスは 1 つしかありません。そのため、このようなサーバーでは、物理デバイスに対する直接のアクセス権を持つドメインを複数構成することはできません。ただし、新しい I/O ドメインを構成する代わりに、ネットワークインタフェースユニット (NIU) をドメインに割り当てることができます。「NIU ハイブリッド I/O の使用」 を参照してください。
サーバーで最初から Logical Domains が構成されている場合や、factory-default 構成を使用している場合、制御ドメインはすべての物理デバイスリソースにアクセスできます。つまり、制御 (primary) ドメインがシステム上に構成された唯一の I/O ドメインであり、すべての PCI-E バスを所有します。
ここでは、例として、複数のバスが primary ドメインによって所有されている初期構成で新しい I/O ドメインを作成する手順について説明します。デフォルトでは、システム上に存在するすべてのバスを primary ドメインが所有しています。ここで示す例は、Sun SPARC Enterprise T5440 サーバーの場合です。この手順は、ほかのサーバーにも使用できます。別のサーバーではこれらの手順と若干異なる場合がありますが、この例では基本的な方針について理解できます。
最初に、primary ドメインの起動ディスクを持つバスを保持する必要があります。それから、その他のバスを primary ドメインから削除してほかのドメインに割り当てます。
サポートされたサーバーの内部ディスクはすべて、1 つの PCI バスに接続されています。ドメインが内部ディスクから起動する場合は、ドメインからそのバスを削除しないでください。また、ドメインで使用されているネットワークポートなどのデバイスが接続されたバスを削除していないことを確認してください。誤ったバスを削除すると、ドメインは必要なデバイスにアクセスできず、使用できなくなることがあります。ドメインで使用されているデバイスが接続されたバスを削除する場合は、ほかのバスのデバイスを使用するよう、そのドメインを再構成してください。たとえば、別のオンボードネットワークポートや、別の PCI スロットの PCI カードを使用するよう、ドメインを再構成する必要があります。
この例では、primary ドメインは 1 つの ZFS プール (rpool (c0t1d0s0)) と 1 つのネットワークインタフェース (nxge0) のみを使用します。primary ドメインで複数のデバイスを使用する場合は、デバイスごとに手順 2 - 4 を繰り返して、削除するバスにそれらのデバイスがないことを確認します。
primary ドメインが複数の PCI バスを所有していることを確認します。
primary# ldm list-bindings primary ... IO DEVICE PSEUDONYM OPTIONS pci@400 pci_0 pci@500 pci_1 pci@600 pci_2 pci@700 pci_3 ... |
起動ディスクのデバイスパスを確認します。これは保持する必要があります。
UFS ファイルシステムの場合、df / コマンドを実行して、起動ディスクのデバイスパスを確認します。
primary# df / / (/dev/dsk/c0t1d0s0 ): 1309384 blocks 457028 files |
ZFS ファイルシステムの場合、まず df / コマンドを実行してプール名を確認してから、zpool status コマンドを実行して起動ディスクのデバイスパスを確認します。
primary# df / / (rpool/ROOT/s10s_u8wos_08a):245176332 blocks 245176332 files primary# zpool status rpool zpool status rpool pool: rpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 c0t1d0s0 ONLINE 0 0 0 |
ブロック型デバイスが接続されている物理デバイスを確認します。
ここでは、例としてブロック型デバイス c1t0d0s0 を使用します。
primary# ls -l /dev/dsk/c0t1d0s0 lrwxrwxrwx 1 root root 49 Oct 1 10:39 /dev/dsk/c0t1d0s0 -> ../../devices/pci@400/pci@0/pci@1/scsi@0/sd@1,0:a |
この例では、primary ドメインの起動ディスクに対する物理デバイスは、前述の pci_0 の一覧表示で対応しているバス pci@400 に接続されています。つまり、pci_0 (pci@400) を別のドメインに割り当てることはできません。
システムで使用されているネットワークインタフェースを確認します。
primary# dladm show-dev vsw0 link: up speed: 1000 Mbps duplex: full nxge0 link: up speed: 1000 Mbps duplex: full nxge1 link: unknown speed: 0 Mbps duplex: unknown nxge2 link: unknown speed: 0 Mbps duplex: unknown nxge3 link: unknown speed: 0 Mbps duplex: unknown |
状態が unknown のインタフェースは構成されていないため、使用されていません。この例では、nxge0 インタフェースが使用されます。
ネットワークインタフェースが接続されている物理デバイスを確認します。
次のコマンドでは、nxge0 ネットワークインタフェースを使用します。
primary# ls -l /dev/nxge0 lrwxrwxrwx 1 root root 46 Oct 1 10:39 /dev/nxge0 -> ../devices/pci@500/pci@0/pci@c/network@0:nxge0 |
この例では、primary ドメインで使用されているネットワークインタフェースに対する物理デバイスは、前述の pci@500 の一覧表示で対応しているバス pci@1 の配下にあります。そのため、ほかの 2 つのバス pci_2 (pci@600) と pci_3 (pci@700) は primary ドメインでは使用されていないため、ほかのドメインに安全に割り当てることができます。
primary ドメインで使用されているネットワークインタフェースが、別のドメインに割り当てようとしているバス上にある場合は、別のネットワークインタフェースを使用するように primary ドメインを再構成する必要があります。
起動ディスクを含まないバスをドメインから削除します。
この例では、バス pci@600 とバス pci@700 が primary ドメインから削除されます。
primary# ldm remove-io pci@600 primary primary# ldm remove-io pci@700 primary |
この構成をサービスプロセッサに保存します。
この例では、構成は io-domain です。
primary# ldm add-config io-domain |
この構成 io-domain は、再起動後に使用される次の構成としても設定されます。
現在、SP に保存できる構成数の上限は 8 つです。この数には、factory-default 構成は含まれません。
primary ドメインを再起動して、変更を有効にします。
primary# shutdown -i6 -g0 -y |
PCI バスを追加するドメインを停止します。
ここでは、例として ldg1 ドメインを停止します。
primary# ldm stop ldg1 primary# ldm unbind ldg1 |
直接のアクセス権が必要なドメインに、使用可能なバスを追加します。
使用可能なバスは pci@600、ドメインは ldg1 です。
primary# ldm add-io pci@600 ldg1 |
InfiniBand カードが構成されていると、pci@600 バスでバイパスモードの有効化が必要になる場合があります。バイパスモードを有効にする必要があるかどうかについては、「PCI バスでの I/O MMU バイパスモードの有効化」 を参照してください。
ドメインを再起動して、変更を有効にします。
次のコマンドでは、ldg1 ドメインを再起動します。
primary# ldm bind ldg1 primary# ldm start ldg1 |
適切なバスが primary ドメインに割り当てられたままで、適切なバスがドメイン ldg1 に割り当てられていることを確認します。
primary# ldm list-bindings primary ldg1 NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME primary active -n-cv SP 4 4G 0.4% 18h 25m ... IO DEVICE PSEUDONYM OPTIONS pci@400 pci_0 pci@500 pci_1 ... ---------------------------------------------------------------- NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME ldg1 active -n--- 5000 4 2G 10% 35m ... IO DEVICE PSEUDONYM OPTIONS pci@600 pci_2 ... |
この出力では、PCI-E バス pci_0 および pci_1 とそれらの配下のデバイスがドメイン primary に割り当てられており、pci_2 とそのデバイスが ldg1 に割り当てられていることを確認できます。