db2nodes.cfg ファイルを使用して、DB2® インスタンスに参加するデータベース・パーティション・サーバーを定義します。また、データベース・パーティション・サーバー通信に高速相互接続を使用する場合にも、db2nodes.cfg ファイルを使用して高速相互接続の IP アドレスまたはホスト名を指定します。
Linux® および UNIX® オペレーティング・システムでの db2nodes.cfg ファイルの形式は以下のとおりです。
dbpartitionnum hostname logicalport netname resourcesetnamedbpartitionnum
, hostname, logicalport、netname、 および resourcesetname の定義を以下にまとめます。
Windows® オペレーティング・システムでの db2nodes.cfg ファイルの形式は以下のとおりです。
dbpartitionnum hostname computername logicalport netname resourcesetnameWindows
オペレーティング・システムでは、db2ncrt または START DBM ADD DBPARTITIONNUM コマンドによって db2nodes.cfg にこれらの項目が追加されます。項目は db2nchg コマンドによって変更することもできます。直接これらの行を追加したり、このファイルを編集したりしないでください。
パーティション・データベース・システムを拡大/縮小するには、 それぞれのデータベース・パーティション・サーバーの項目を db2nodes.cfg ファイルに追加します。追加のデータベース・パーティション・サーバー用に選択する dbpartitionnum 値は、 昇順になっていなければなりませんが、その順序内にギャップがあってもかまいません。 論理パーティション・サーバーを追加する予定があって、 ノードをこのファイル内に論理的にグループに分けて保管しておきたい場合、 dbpartitionnum の値と値の間にギャップを置いてもかまいません。
この項目は必須です。
db2nodes.cfg ファイルで、IP アドレスの代わりにホスト名が提供されている場合、データベース・マネージャーはホスト名を動的に解決しようとします。解決は、マシン上の OS 設定で決定されているように、ローカル側または登録済みドメイン・ネーム・サーバー (DNS) の参照のいずれかによって行うことができます。
DB2 バージョン 9.1 から、TCP/IPv4 プロトコルと TCP/IPv6 プロトコルの両方がサポートされています。ホスト名を解決する方式が変更されました。
バージョン 9.1 より前のリリースでは、db2nodes.cfg ファイルで定義されたストリングを解決する方式が使用されていたのに対し、バージョン 9.1 以降では、db2nodes.cfg ファイルで短縮名が定義されている場合、完全修飾ドメイン・ネーム (FQDN) の解決を試行する方式が使用されます。完全修飾ホスト名の構成で短縮名を指定すると、ホスト名を解決するプロセスにおいて不要な遅延が発生する可能性があります。
ホスト名の解決を必要とする DB2 コマンドで遅延が発生しないようにするには、以下のいずれかの回避策を使用します。
db2 catalog tcpip4 node db2tcp2 remote 192.0.32.67 server db2inst1 with "Look up IPv4 address from 192.0.32.67"
db2 catalog tcpip6 node db2tcp3 1080:0:0:0:8:800:200C:417A server 50000 with "Look up IPv6 address from 1080:0:0:0:8:800:200C:417A"
DB2 は、インストール時のパーティション間通信用に、/etc/services ファイル中でポート範囲 (60000 から 60003 など) を予約しています。 db2nodes.cfg 中のこの logicalport フィールドは、この範囲内のどのポートを特定の論理パーティション・サーバーに割り当てるのかを指定します。
このフィールド用の項目がない場合のデフォルト値は 0 です。ただし、netname フィールドの項目を追加した場合、 logicalport フィールドに番号を入力しなければなりません。
論理データベース・パーティションを使用する場合、指定する logicalport 値は、 0 から開始し、昇順にしなければなりません (例えば、 0,1,2)。
さらに、1 つのデータベース・パーティション・サーバーに logicalport 項目を指定する場合、 db2nodes.cfg ファイルにリストされているそれぞれのデータベース・パーティション・サーバーごとに、 logicalport を指定する必要があります。
このフィールドがオプションであるのは、 論理データベース・パーティションや高速相互接続を使用しない 場合だけです。
このフィールドの項目を指定すると、 データベース・パーティション・サーバー相互の通信 (db2start、 db2stop、 および db2_all コマンドで起動した通信を除く) は、 高速相互接続を通して処理されます。
このパラメーターが必要なのは、 データベース・パーティションの通信に高速相互接続を使用する場合だけです。
このパラメーターは、AIX®、HP-UX、Solaris オペレーティング・システム上だけでサポートされています。
この概念は、AIX では「リソース・セット」と呼ばれ、Solaris オペレーティング・システムでは「プロジェクト」と呼ばれています。リソース管理について詳しくは、 ご使用のオペレーティング・システムの資料を参照してください。
HP-UX 上では、resourcesetname パラメーターは PRM グループの名前です。詳しくは、 HP から「HP-UX Process Resource Manager User Guide (B8733-90007)」を参照してください。
Windows オペレーティング・システムでは、論理ノードのプロセス類縁性は、DB2PROCESSORS レジストリー変数で定義できます。
Linux オペレーティング・システムでは、resourcesetname 列により、システム上の Non-Uniform Memory Access (NUMA) ノードに対応する番号を定義します。 NUMA ポリシー・サポートを備えた 2.6 Kernel とともに、システム・ユーティリティーの numactl を使用できる状態にする必要があります。
resourcesetname パラメーターを使用する場合には、netname パラメーターの指定が必要です。
以下の構成例を参考にして、ユーザーの環境に適切な構成を判別してください。
0 ServerA 0 1 ServerA 1 2 ServerA 2 3 ServerA 3
0 ServerA 0 1 ServerB 0
4 ServerA 0 6 ServerA 1 8 ServerA 2 9 ServerB 0
0 ServerA 0 switch1 1 ServerB 0 switch2 2 ServerB 1 switch2
以下の例では、以下の制約事項が適用されます。
AIX オペレーティング・システムの場合にリソース・セットをセットアップする方法の例を示します。
この例では、1 つの物理ノードに、 32 のプロセッサーと 8 つの論理データベース・パーティション (MLN) があります。この例では、個々の MLN にプロセス類縁性を備える方法を示します。
DB2/MLN1: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00000,sys/cpu.00001,sys/cpu.00002,sys/cpu.00003 DB2/MLN2: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00004,sys/cpu.00005,sys/cpu.00006,sys/cpu.00007 DB2/MLN3: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00008,sys/cpu.00009,sys/cpu.00010,sys/cpu.00011 DB2/MLN4: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00012,sys/cpu.00013,sys/cpu.00014,sys/cpu.00015 DB2/MLN5: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00016,sys/cpu.00017,sys/cpu.00018,sys/cpu.00019 DB2/MLN6: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00020,sys/cpu.00021,sys/cpu.00022,sys/cpu.00023 DB2/MLN7: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00024,sys/cpu.00025,sys/cpu.00026,sys/cpu.00027 DB2/MLN8: owner = db2inst1 group = system perm = rwr-r- resources = sys/cpu.00028,sys/cpu.00029,sys/cpu.00030,sys/cpu.00031
vmo -p -o memory_affinity=1
chuser capabilities= CAP_BYPASS_RAC_VMM,CAP_PROPAGATE,CAP_NUMA_ATTACH db2inst1
1 regatta 0 regatta DB2/MLN1 2 regatta 1 regatta DB2/MLN2 3 regatta 2 regatta DB2/MLN3 4 regatta 3 regatta DB2/MLN4 5 regatta 4 regatta DB2/MLN5 6 regatta 5 regatta DB2/MLN6 7 regatta 6 regatta DB2/MLN7 8 regatta 7 regatta DB2/MLN8
この例は、4 つの CPU と 4 つの MLN のあるマシン上で PRM グループを使用して CPU を共用し、MLN 当たり 24% の CPU を共用し、4% を他のアプリケーション用に残しておく方法を示しています。DB2 インスタンス名は db2inst1 です。
OTHERS:1:4:: db2prm1:50:24:: db2prm2:51:24:: db2prm3:52:24:: db2prm4:53:24::
db2inst1::::OTHERS,db2prm1,db2prm2,db2prm3,db2prm4
prmconfig -i prmconfig -e CPU
1 voyager 0 voyager db2prm1 2 voyager 1 voyager db2prm2 3 voyager 2 voyager db2prm3 4 voyager 3 voyager db2prm4
対話式 GUI ツール xprm を使用して PRM の構成 (ステップ 1 から 3) を行うこともできます。
Linux オペレーティング・システムでは、resourcesetname 列により、システム上の Non-Uniform Memory Access (NUMA) ノードに対応する番号を定義します。 NUMA ポリシー・サポートを備えた 2.6 カーネルに加えて、numactl システム・ユーティリティーを使用できる状態にする必要があります。 Linux オペレーティング・システムの NUMA サポートの詳細については、numact1 のマニュアル・ページを参照してください。
1 台の NUMA コンピューターに 4 つのノードを設定し、それぞれの論理ノードに 1 つの NUMA ノードを関連付ける例を以下に示します。
$ numactl --hardware以下のような出力が表示されます。
available: 4 nodes (0-3) node 0 size: 1901 MB node 0 free: 1457 MB node 1 size: 1910 MB node 1 free: 1841 MB node 2 size: 1910 MB node 2 free: 1851 MB node 3 size: 1905 MB node 3 free: 1796 MB
0 hostname 0 hostname 0 1 hostname 1 hostname 1 2 hostname 2 hostname 2 3 hostname 3 hostname 3
Solaris バージョン 9 の場合にプロジェクトをセットアップする方法の例を示します。
この例では、1 つの物理ノードに 8 つのプロセッサーがあります。デフォルトのプロジェクト用に 1 つの CPU が使用され、Application Server 用に 3 つの CPU が使用され、DB2 用に 4 つの CPU が使用されます。インスタンス名は db2inst1 です。
create system hostname create pset pset_default (uint pset.min = 1) create pset db0_pset (uint pset.min = 1; uint pset.max = 1) create pset db1_pset (uint pset.min = 1; uint pset.max = 1) create pset db2_pset (uint pset.min = 1; uint pset.max = 1) create pset db3_pset (uint pset.min = 1; uint pset.max = 1) create pset appsrv_pset (uint pset.min = 3; uint pset.max = 3) create pool pool_default (string pool.scheduler="TS"; boolean pool.default = true) create pool db0_pool (string pool.scheduler="TS") create pool db1_pool (string pool.scheduler="TS") create pool db2_pool (string pool.scheduler="TS") create pool db3_pool (string pool.scheduler="TS") create pool appsrv_pool (string pool.scheduler="TS") associate pool pool_default (pset pset_default) associate pool db0_pool (pset db0_pset) associate pool db1_pool (pset db1_pset) associate pool db2_pool (pset db2_pset) associate pool db3_pool (pset db3_pset) associate pool appsrv_pool (pset appsrv_pset)
system:0:::: user.root:1:::: noproject:2:::: default:3:::: group.staff:10:::: appsrv:4000:App Serv project:root::project.pool=appsrv_pool db2proj0:5000:DB2 Node 0 project:db2inst1,root::project.pool=db0_pool db2proj1:5001:DB2 Node 1 project:db2inst1,root::project.pool=db1_pool db2proj2:5002:DB2 Node 2 project:db2inst1,root::project.pool=db2_pool db2proj3:5003:DB2 Node 3 project:db2inst1,root::project.pool=db3_pool
0 hostname 0 hostname db2proj0 1 hostname 1 hostname db2proj1 2 hostname 2 hostname db2proj2 3 hostname 3 hostname db2proj3