- メンテナンス・ガイド
- Oracle VMユーザー・ドメインの管理
- Oracle ExadataでのOracle VM Oracle RACクラスタ間のInfiniBandパーティションの実装
- Oracle VM RACクラスタ間のInfiniBandパーティションの構成
5.24.4 Oracle VM RACクラスタ間のInfiniBandパーティションの構成
ここでは、Oracle VMで実行するOracle RACクラスタ間のInfiniBandパーティションを構成するステップについて説明します。
このタスクの開始前に、ファイルcreate_pkeys.tar
をダウンロードして抽出しておきます。このファイルは、「ExadataでのOVM RACクラスタ間のInfiniBandパーティションの実装(My Oracle SupportのドキュメントID 2075398.1)」からダウンロードできます。このファイルは、管理ドメイン(dom0)ノードのいずれかにダウンロードする必要があります。これは、この手順のすべてのスクリプトを実行するために使用するノードです。この手順では、このノードをdriver_dom0と表記します。
ファイルを抽出すると、3つのファイルが表示されます:
create_pkeys_on_switch.sh
run_create_pkeys.sh
create_pkey_files.sh
- pkeyインタフェースによって使用されるIPアドレスを割り当てます。
クラスタにInfiniBandパーティションが実装されたときに、クラスタpkeyインタフェースおよびストレージpkeyインタフェースで使用される各Oracle VM RACクラスタのIPアドレスとネットマスクのセットを計画して割り当てます。
具体例は、トピック「InfiniBandパーティションのネットワーク構成について」を参照してください。
- InfiniBandスイッチで、クラスタウェアで使用する専用パーティション(クラスタpkey)を作成します。また、Oracle RACクラスタ・ノードとストレージ・セルとの通信のために、すべてのOracle VM RACクラスタおよびストレージ・セルで使用する1つのパーティション(ストレージpkey)を作成します。
サブネット・マネージャで簡単にパーティションを識別する手段として、各パーティションにpkeyを割り当てます。pkeyは15ビットの整数です。値
0x0001
と値0x7fff
は、デフォルト・パーティションです。pkeyには、0x0002
から0x7ffe
までの値を使用してください。root
ユーザーに対して、driver_dom0管理ドメイン(dom0)ノードからInfiniBandファブリックのすべてのスイッチへのパスワードなしのssh等価を有効にします。次のようなコマンドを使用します。ib_switch_listはファブリックのすべてのInfiniBandスイッチのリストが含まれているファイルを表します(各スイッチ名は個別の行で示されています)。
# dcli –g ib_switch_list -l root –k
- driver_dom0からスクリプト
create_pkeys_on_switch.sh
を実行して、InfiniBandスイッチでパーティション・キーを作成および構成します。ノート:
スクリプトcreate_pkeys_on_switch.sh
の実行ごとに、1つのパーティションが作成されます。作成するパーティションごとにスクリプトを1回実行する必要があります。たとえば、2つのOracle VM RACクラスタを含む環境に、1つのストレージ・パーティションと2つのクラスタ・パーティション(Oracle RACクラスタごとに1つ)の合計3つのパーティションを作成するとします。この例では、create_pkeys_on_switch.sh
を3回実行する必要があります。このスクリプトは、1つのノード(driver_dom0)のみで実行する必要があります。このスクリプトでは、入力として指定したすべてのスイッチにパーティションが作成されます。
- スクリプトの実行後、すべてのスイッチにパーティションが作成されたことを確認します。
# /usr/local/sbin/smpartition list active no-page
次の出力例には、デフォルトのパーティション(0x0001および0x7fff)と、追加のパーティション(0x0004)が示されています。pkeyが0x0004のパーティションは、IPoIB用に構成されていて、そのパーティションの完全なメンバーシップが割り当てられた2つのメンバー・ポートがあります。
# Sun DCS IB partition config file #! version_number : 1 #! version_number : 12 Default=0x7fff, ipoib : ALL_CAS=full, ALL_SWITCHES=full, SELF=full; SUN_DCS=0x0001, ipoib : ALL_SWITCHES=full; = 0x0004,ipoib: 0x0021280001cf3787=full, 0x0021280001cf205b=full;
この段階で、すべての必要なパーティションを作成したことを確認します。
- Oracle VM RACノードとストレージ・セルでは、新しいIP over InfiniBand (IPoIB)インタフェース用のすべての関連ネットワーク構成ファイルを生成します。
パーティションごとに、新しいIPoIBネットワーク・インタフェースが必要です。
このステップでは、Oracle RACクラスタ・ノードに次の変更を加えます。
-
次のファイルを変更します:
/etc/sysconfig/network-scripts/ifcfg-ib0
/etc/sysconfig/network-scripts/ifcfg-ib1
-
次のファイルを削除します:
/etc/sysconfig/network-scripts/rule-ib0
/etc/sysconfig/network-scripts/rule-ib1
/etc/sysconfig/network-scripts/route-ib0
/etc/sysconfig/network-scripts/route-ib1
-
/etc/sysconfig/network-scripts
に次の新しいファイルを作成します。ifcfg-clib0、ifcfg-clib1
rule-clib0、rule-clib1
route-clib0、route-clib1
ifcfg-stib0、ifcfg-stib1
rule-stib0、rule-stib1
route-stib0、route-stib1
ノート:
このステップが失敗した場合は、このステップを再実行する前に次の作業を行います。
- すべてのファイルを
/etc/sysconfig/network-scripts/backup-for-pkeys
から/etc/sysconfig/network-scripts
にリストアします。 - このステップでリストされる、新しく作成したファイルを削除します。
- driver_dom0ノードから、パーティション・キーについて構成する必要があるすべてのOracle RACクラスタ・ノードとストレージ・セルに向けたパスワードなしのsshが設定されていることを確認します。
run_create_pkeys.sh
とcreate_pkey_files.sh
が実行可能になっていて、driver_dom0の同じディレクトリ内にあることを確認します。run_create_pkeys.sh
を実行します。クラスタ・ノードについては、node_typeの値が
compute
のすべてのクラスタ・ノードに対して、スクリプトを合計4回実行する必要があります。このスクリプトの構文は次のとおりです。
run_create_pkeys.sh node_name interface_name pkey_id node_type pkey_ipaddr pkey_netmask pkey_interfaceType
node_name
では、クラスタ・ノードを指定します。interface_name
は、ib0
またはib1
のどちらかです。pkey_id
では、0x
接頭辞なしのpkeyを指定します。ここで使用している値は、ステップ2で入力したクラスタのpkey_id値から導出されるクラスタのパーティション・キーです。node_type
は、compute
またはcell
のどちらかです。pkey_ipaddr
では、IPアドレスを指定します。pkey_netmask
では、CIDR形式(たとえば、/21
)のネットマスクを指定します。pkey_interfaceType
は、計算ノード・タイプの場合はcluster
またはstorage
、セル・ノード・タイプの場合はstorage
です。
ノート:
クラスタpkeyインタフェースのpkey_ipaddr
とpkey_netmask
は、ストレージpkeyインタフェースのpkey_ipaddr
とpkey_netmask
とは別のサブネット上に存在している必要があります。次のコマンドを使用すると、ステップ2で入力した
pkey_id
の値から、run_create_pkeys.sh
スクリプトに使用するパーティション・キーの値を導出できます。FinalHexValue=$(echo "obase=16;ibase=2;$(expr 1000000000000000 + $(echo "obase=2;ibase=16;$(echo $HexValue|tr [:lower:] [:upper:])"|bc))" |bc|tr [:upper:] [:lower:])
FinalHexValue
は、ここのコマンドで入力する値です。HexValue
は、ステップ2でpkey_id
に入力した値です。次の表は、クラスタ・ノードに対する4回の実行の入力例を示しています。
表5-4 クラスタ・ノードに対する4回の実行
実行 インタフェース名 pkey_id node_type pkey_ipaddress pkey_netmask pkey_interfaceType 1
ib0
a000
compute
192.168.12.153
/21
cluster
2
ib1
a000
compute
192.168.12.154
/21
cluster
3
ib0
aa00
compute
192.168.114.15
/20
storage
4
ib1
aa00
compute
192.168.114.16
/20
storage
この例に示すように、スクリプトの実行のたびに「実行」列で示した値を使用します。この例の
vm-guest-1
は、クラスタ・ノードの名前です。# ./run_create_pkeys.sh vm-guest-1 ib0 a000 compute 192.168.12.153 /21 cluster
この段階で、すべての必須のネットワーク・ファイル(このステップの最初に示したもの)は、Oracle VM RACクラスタ・ノードの新しいpkey対応ネットワーク・インタフェース向けに作成されています。
また、再起動時に新しいネットワーク・インタフェースを使用するように、Oracle Grid Infrastructureも変更されています。コマンド
$GRID_HOME/bin/oifcfg getif
の出力では、クラスタ・インターコネクトに使用されるインタフェースのリストにclib0
とclib1
が示されている必要があります。 -
- Oracle ASMおよびOracle RAC
CLUSTER_INTERCONNECTS
パラメータを変更します。- Oracle RACクラスタ内のOracle ASMインスタンスごとに、SYSとしてSQL*Plusを使用してログインし、次のコマンドを実行します。
ALTER SYSTEM SET cluster_interconnects='<cluster_pkey_IP_address_of_ib0>: <cluster_pkey_IP_address_of_ib1>' scope=spfile sid='<name_of_current_ASM_instance>';
次に例を示します:
ALTER SYSTEM SET cluster_interconnects='192.168.12.153:192.168.12.154' scope=spfile sid='+ASM1';
- Oracle RACクラスタ内のデータベース・インスタンスごとに、SQL*Plusを使用してログインし、Oracle RACインスタンスに対して同じコマンドを実行します。
次に例を示します:
ALTER SYSTEM SET cluster_interconnects='192.168.12.153:192.168.12.154' scope=spfile sid='RACDB1';
- すべてのOracle RACクラスタ・ノードでCRS自動起動を停止して無効化します。
# Grid_home/bin/crsctl stop crs # Grid_home/bin/crsctl disable crs
この段階で、Oracle Grid Infrastructure、Oracle ASMインスタンスおよびOracle Databaseインスタンスが、新しく作成したネットワーク・インタフェースを使用するように変更されています。
- Oracle RACクラスタ内のOracle ASMインスタンスごとに、SYSとしてSQL*Plusを使用してログインし、次のコマンドを実行します。
- すべてのクラスタ・ノード(ユーザー・ドメイン)の
cellip.ora
とcellinit.ora
を変更します。クラスタのいずれかのデータベース・サーバー・ノード(Oracle VM RACクラスタの場合はユーザー・ドメイン)で、次のステップを実行します。
cellip.ora
ファイルとcellinit.ora
ファイルのバックアップを作成します。# cd /etc/oracle/cell/network-config # cp cellip.ora cellip.ora-bak # cp cellinit.ora cellinit.ora-bak
cellip.ora-bak
ファイルに変更を加えることで、既存のIPアドレスをステップ7で設定するすべてのストレージ・セルの2つのストレージpkey IPアドレスに置き換えます。この2つのIPアドレスは、セミコロン(;
)で区切ります。root
ユーザーに対して、このクラスタ・ノードからすべてのクラスタ・ノードに向けたssh等価が設定されていることを確認します。- すべてのクラスタ・ノードで
cellip.ora
ファイルを置き換えます。次のコマンドを使用して、すべてのクラスタ・ノードで
cellip.ora
ファイルのバックアップを作成してから置き換えます。この例のcluster_nodes
は、Oracle VM RACクラスタのすべてのOracle RACクラスタ・ノードの名前が含まれているファイルを表します(各ノードは個別の行で示されています)。# /usr/local/bin/dcli -g cluster_nodes –l root "/bin/cp /etc/oracle/cell/network-config/cellip.ora /e tc/oracle/cell/network-config/cellip-orig.ora" # /usr/local/bin/dcli -g cluster_nodes –l root –f celli p.ora-bak –d /etc/oracle/cell/network-config/cellip.ora
/etc/oracle/cell/network-config/cellinit.ora-bak
ファイルを手動で編集して、既存のIPアドレスとネットマスクを、ステップ3で使用したクラスタ・ノードの2つのストレージpkey IPアドレスとネットマスクに置き換えます。root
ユーザーに対して、このクラスタ・ノードからすべてのクラスタ・ノードに向けたssh等価が設定されていることを確認します。- すべてのクラスタ・ノードで
cellinit.ora
ファイルを置き換えます。このIPアドレスとネットマスクは、ステップ3の3回目と4回目の実行で使用されたものです。
次のコマンドを使用して、すべてのクラスタ・ノードで
cellinit.ora
ファイルのバックアップを作成してから置き換えます。この例のcluster_nodes
は、Oracle VM RACクラスタのすべてのOracle RACクラスタ・ノードの名前が含まれているファイルを表します(各ノードは個別の行で示されています)。# /usr/local/bin/dcli -g cluster_nodes –l root "/bin/cp /etc/oracle/cell/network-config/cellinit.ora /e tc/oracle/cell/network-config/cellinit-orig.ora" # /usr/local/bin/dcli -g cluster_nodes –l root –f cellini t.ora-bak –d /etc/oracle/cell/network-config/cellinit.ora
- 管理ドメイン(dom0)で、各ユーザー・ドメインのユーザー・ドメイン構成ファイルを、そのユーザー・ドメインに該当するパーティション・キーを使用するように変更します。
管理ドメインのすべての関連
vm.cfg
ファイルを変更します。このステップはOracle VM環境にのみ適用できます。すべての管理ドメインにログインして、ステップ2で作成したパーティション・キーが含まれるように、/EXAVMIMAGES/GuestImages/user_domain_name/vm.cfg
を手動で編集します。たとえば、次の行を変更します。
ib_pkeys = [{'pf':'40:00.0','port':'1','pkey':['0xffff' ,]},{'pf':'40:00.0','port':'2','pkey':['0xffff',]},]
変更後:
ib_pkeys = [{'pf':'40:00.0','port':'1','pkey':['0xa000' ,'0xaa00',]},{'pf':'40:00.0','port':'2','pkey':['0xa000 ','0xaa00',]},]
この例では、
0xa000
はステップ2で入力したクラスタのpkey_id
から導出されるクラスタのパーティション・キーです。また、0xaa00
はストレージのpkey_id
値から導出されるストレージのパーティション・キーです。次のコマンドを使用して、ステップ2で入力した
pkey_id
の値からvm.cfg
で使用するパーティション・キーの値を導出します。FinalHexValue=$(echo "obase=16;ibase=2;$(expr 100000000 0000000 + $(echo "obase=2;ibase=16;$(echo $HexValue|tr [:lower:] [:upper:])"|bc))"|bc|tr [:upper:] [:lower:])
FinalHexValue
は、vm.cfg
に入力する値です。また、HexValue
は、ステップ2でpkey_id
に対して入力した値です。 - 新しく作成したIPoIBインタフェースを使用するようにストレージ・セルを変更します。
run_create_pkeys.sh
とcreate_pkey_files.sh
が使用可能になっていて、前のステップで使用したものと同じdriver_dom0ノードの同じディレクトリに存在することを確認します。- driver_dom0から、パティション・キーの構成が必要になるすべてのストレージ・セルへのパスワードなしのsshが設定されていることを確認します。
run_create_pkeys.sh
を実行します。ストレージ・サーバーの場合は、node_typeの値が
cell
のすべてのストレージ・サーバーにスクリプトを2回実行する必要があります。このスクリプトの構文は次のとおりです。
run_create_pkeys.sh node_name interface_name pkey_id node_type pkey_ipaddr pkey_netmask pkey_interfaceType
node_name
では、ストレージ・サーバーを指定します。interface_name
は、ib0
またはib1
のどちらかです。pkey_id
では、0x
接頭辞なしのpkeyを指定します。ここで使用している値は、ステップ2で入力したストレージのpkey_id値から導出されるクラスタのパーティション・キーです。node_type
は、compute
またはcell
のどちらかです。pkey_ipaddr
では、IPアドレスを指定します。pkey_netmask
では、CIDR形式(たとえば、/21
)のネットマスクを指定します。pkey_interfaceType
は、計算ノード・タイプの場合はcluster
またはstorage
、セル・ノード・タイプの場合はstorage
です。
次のコマンドを使用すると、ステップ2で入力した
pkey_id
の値から、run_create_pkeys.sh
スクリプトに使用するパーティション・キーの値を導出できます。FinalHexValue=$(echo "obase=16;ibase=2;$(expr 1000000000000000 + $(echo "obase=2;ibase=16;$(echo $HexValue|tr [:lower:] [:upper:])"|bc))" |bc|tr [:upper:] [:lower:])
FinalHexValue
は、ここのコマンドで入力する値です。HexValue
は、ステップ2でpkey_id
に入力した値です。次の表は、ストレージ・サーバーに対する2回の実行の入力例を示しています。
表5-5 ストレージ・サーバーに対する2回の実行
実行 インタフェース名 pkey_id node_type pkey_ipaddress pkey_netmask pkey_interfaceType 1
ib0
aa00
cell
192.168.114.1
/20
storage
2
ib1
aa00
cell
192.168.114.2
/20
storage
この例に示すように、スクリプトの実行のたびに「実行」列で示した値を使用します。この例の
cell01
は、ストレージ・サーバーの名前です。# ./run_create_pkeys.sh cell01 ib0 aa00 cell 192.168.114.1 /20 storage
ノート:
スクリプトからの次のメッセージは無視できます。このタスクの最後にストレージを再起動すると、次の問題が処理されます。
Network configuration altered. Please issue the following commands as root to restart the network and open IB stack: service openibd restart service network restart A restart of all services is required to put new network configuration into effect. MS-CELLSRV communication may be hampered until restart.
この段階で、ストレージ・サーバー(セル)は再起動時に新しいネットワーク・インタフェースを使用するように変更されています。
- 各ストレージ・サーバーの
/opt/oracle.cellos/cell.conf
ファイルを変更して、ストレージ・サーバーを再起動します。/opt/oracle.cellos/cell.conf
ファイルのバックアップを作成します。# cd /opt/oracle.cellos # cp cell.conf cell.conf-prepkey
/opt/oracle.cellos/cell.conf
のPkey構成の行を変更します。次の行を変更します:
<Pkeyconfigured>no</Pkeyconfigured>
変更後:
<Pkeyconfigured>yes</Pkeyconfigured>
2つのプライベート・インタフェース、ib0とib1について、次の行を変更します。
<IP_enabled>yes</IP_enabled>
変更後:
<IP_enabled>no</IP_enabled>
- すべてのOracle VM RACノードでOracle Grid Infrastructureが停止していることを確認します。
- すべてのストレージ・セル・サーバーを再起動します。
# shutdown -r now
- 新しいpkey対応ネットワーク・インタフェースが使用されていることを確認します。
# cellcli -e list cell detail | egrep 'interconnect|ipaddress'
出力には、新しいpkey対応インタフェース(
stib0
とstib1
)が新しいIPアドレスのセットとともに表示されます。
- Oracle RACクラスタを再起動します。
- 各ユーザー・ドメイン・ノードの対応する管理ドメインにログインします。
- 次のコマンドを実行します。
# xm shutdown user_domain_name # xm create /EXAVMIMAGES/GuestImages/user_domain_name/vm.cfg
- すべてのクラスタ・ノードでOracle Grid Infrastructureスタックを起動して、完全に起動されていることを確認します。
- すべてのOracle RACクラスタ・ノードでOracle Grid Infrastructureスタックを起動して、自動起動を有効にします。
# $GRID_HOME/bin/crsctl start crs # $GRID_HOME/bin/crsctl enable crs
- すべてのノードでOracle Grid Infrastructureを起動したら、新しく構成したpkeyインタフェースを使用するように
cluster_interconnects
パラメータが設定されていることを確認します。データベース・インスタンスにログインして、次の問合せを実行します。
SQL> SELECT inst_id, value FROM gv$parameter WHERE name = 'cluster_interconnects'
- Oracle Cluster Registry (OCR)から古いクラスタ・インターコネクト・インタフェースを削除します。
# Grid_home/bin/oifcfg delif –global ib0/<old subnet> # Grid_home/bin/oifcfg delif –global ib1/<old subnet>
- すべてのOracle RACクラスタ・ノードでOracle Grid Infrastructureスタックを起動して、自動起動を有効にします。