DBサーバ構築(Oracle RAC環境用デバイス設定)
事前準備
ポートグループ作成
DBネットワーク用ポートグループとインターコネクト用ポートグループを作成します。
【ポートグループ設定】
設定項目 | DBネットワーク用ポートグループ | インターコネクト用ポートグループ |
Name | Production DB Pub Network | Production DB Prv Network |
VLAN ID | 10 | 20 |
Virtual suitch | vSwitchp2 | vSwitchp3 |
【ポートグループ作成手順】
No. | 操作 |
1 | ESXiコンソールの画面左の「ネットワーク」をクリック → ネットワーク管理画面表示 |
2 | 「ポートグループ」タブ – 「ポートグループの追加」をクリック → ポートグループ作成画面表示 |
3 | 以下の通り設定 —————————————————— DBネットワーク用ポートグループ —————————————————— 名前:Production DB Pub Network VLAN ID:10 仮想スイッチ:vSwitchp2 —————————————————— インターコネクト用ポートグループ —————————————————— 名前:Production DB Prv Network VLAN ID:20 仮想スイッチ:vSwitchp3 |
4 | 「追加」をクリック → ポートグループ作成画面終了 |
5 | ネットワーク管理画面・ポートグループ一覧に作成したポートグループが追加されていることを確認 |
OSインストールメディア入手
Oracle21cがサポートするRHELバージョンはRHEL8まででRHEL9はサポート対象外となっています。
本日時点のRHEL 8最新パージョンはRed Hat Enterprise Linux 8.10なのでこのインストール・メディアを入手してESXiにアップロードします。
Oracle製品イメージ・ファイルの入手
Oracle technology networkのダウンロードページからOracle DB 21cとGrid Infrastructure 21cのイメージ・ファイルをダウンロードします。
Oracle Database 21c Download for Linux x86-64
- Oracle Database 21c for Linux x86-64
- LINUX.X64_213000_db_home.zip
- Oracle Database 21c Grid Infrastructure (21.3) for Linux x86-64
- LINUX.X64_213000_grid_home.zip
ダウンロードしイメージ・ファイルは管理サーバのNFSにディレクトリを作成して格納します。
【prsmg01で実行】
---------------------------------------------------------------------------
# Oracle DBイメージ・ファイル格納用ディレクトリ作成
mkdir -p /nfsdisk/exports/media/oracle/21c/db
→ Teratermのscpファイル転送等で作成したディレクトリにLINUX.X64_213000_db_home.zipを格納
# Grid Infrastructureイメージ・ファイル格納用ディレクトリ作成
mkdir -p /nfsdisk/exports/media/oracle/21c/grid
→ Teratermのscpファイル転送等で作成したディレクトリにLINUX.X64_213000_grid_home.zipを格納
サーバ初期構築
仮想マシンを作成してOSインストール、初期構築まで行います。
仮想マシン作成
DBサーバとして使用する3台の仮想マシンを作成します。
【DBサーバ・仮想マシン構成】
設定項目 | 設定値 |
仮想マシン名 | prsdb01 prsdb02 prsdb03 |
CPU | 4 |
Memory | 12 GB |
Hard Disk 1 | 100 GB |
Disk Provisioning | Thin provisioned |
CD/DVD Media | <データストア・アップロード・ディレクトリ>/rhel-8.10-x86_64-dvd.iso |
OSインストール
作成した仮想マシンにOS(RHEL8)をインストールします。各DBサーバのホスト名及びIPアドレスは以下の通りです。
【DBサーバ・ホスト名/IPアドレス一覧】
DBサーバ#1 | DBサーバ#2 | DBサーバ#3 | |
ホスト名 | prsdb01.exsample.lan | prsdb02.exsample.lan | prsdb03.exsample.lan |
IPアドレス | 172.16.10.21 | 172.16.10.22 | 172.16.10.23 |
サーバ初期構築
RHEL8もRHEL9も初期構築の手順はほとんど同じですが、RHEL8は最初からrootログインが可能なのでsshd_configの編集は不要です。また、chronydのサービスがデフォルトでは無効化してあるので有効化を行います。
デバイス追加
サーバ初期構築が終わったらネットワーク・アダプタ、ローカル・ディスク、共有ディスクの順にデバイスの追加を行います。
ネットワーク・インターフェース
まず最初にDBネットワーク用のアダプタ、次にインターコネクト用のアダプタを仮想マシンに追加します。各アダプタに割り当てるポートグループとIPアドレスは以下の通りです。
【仮想マシン・追加ネットワーク・アダプタ】
ネットワーク・アダプタ | ポートグループ |
ネットワーク アダプタ 2 | Production DB Pub Network |
ネットワーク アダプタ 3 | Production DB Prv Network |
【N/Wインターフェース・IPアドレス設定】
デバイス名 | DBサーバ#1(prsdb01) | DBサーバ#2(prsdb02) | DBサーバ#3(prsdb03) |
ens224 | 192.168.30.21/24 | 192.168.30.22/24 | 192.168.30.23・24 |
ens256 | 10.10.20.1/24 | 10.10.20.2/24 | 10.10.20.3/24 |
ローカル・ディスク
Oracle Grid Infrastructure、Oracle Databaseをインストールするために50GBのローカルディスクを追加します。
【DBサーバ 追加ローカル・ディスク】
設定項目 | 設定値 |
ハードディスク 2(サイズ) | 50 GB |
ファイル・システムタイプ | xfs |
ファイルシステム マウント・ポイント | /opt/app |
共有ディスク
ASMディスクとして使用する共有ディスクをDBサーバに追加します。3台のDBサーバが同じディスクに同じ順番で接続するように構成しないとASMが構成できないので注意が必要です。
追加する共有ディスクの構成は以下の通り。SCSI ID(1:x)の 1 はコントローラ番号、x はディスク番号です。なおディスク番号 7 は割り当てに使用されず、ディスク番号 6 の次はディスク番号 8 となります。
【共有ディスク】
ハードディスク | サイズ | 場所 | SCSIコントローラ |
ハードディスク 3 | 5 GB | [datastore]/storage/prsdb/disk001.vmdk | SCSIコントローラ 1 SCSI(1:0) |
ハードディスク 4 | 5 GB | [datastore]/storage/prsdb/disk002.vmdk | SCSIコントローラ 1 SCSI(1:1) |
ハードディスク 5 | 5 GB | [datastore]/storage/prsdb/disk003.vmdk | SCSIコントローラ 1 SCSI(1:2) |
ハードディスク 6 | 10 GB | [datastore]/storage/prsdb/disk011.vmdk | SCSIコントローラ 1 SCSI(1:3) |
ハードディスク 7 | 10 GB | [datastore]/storage/prsdb/disk012.vmdk | SCSIコントローラ 1 SCSI(1:4) |
ハードディスク 8 | 10 GB | [datastore]/storage/prsdb/disk101.vmdk | SCSIコントローラ 1 SCSI(1:5) |
ハードディスク 9 | 10 GB | [datastore]/storage/prsdb/disk102.vmdk | SCSIコントローラ 1 SCSI(1:6) |
ハードディスク 10 | 30 GB | [datastore]/storage/prsdb/disk201.vmdk | SCSIコントローラ 1 SCSI(1:8) |
ハードディスク 11 | 30 GB | [datastore]/storage/prsdb/disk202.vmdk | SCSIコントローラ 1 SCSI(1:9) |
共有ディスクの追加が環境したら lsblkでデバイスが正しく追加されていることを確認します。
【prsdb01、prsdb02、prsdb03で実行】
-----------------------------------------------------------------------------
# ブロックデバイスを確認
lsblk
# ディスクのハードウェア・パスを確認
ls -l /dev/disk/by-path/ | cut -d" " -f 12-
-----------------------------------------------------------------------------
【実行例】
-----------------------------------------------------------------------------
[root@prsdb01 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
Lsda1 8:1 0 1G 0 part /boot
Lsda2 8:2 0 99G 0 part
Lroot_vg-root 253:0 0 57G 0 lvm /
Lroot_vg-swap 253:1 0 12G 0 lvm [SWAP]
Lroot_vg-var 253:2 0 30G 0 lvm /var
sdb 8:16 0 50G 0 disk
Lsdb1 8:17 0 50G 0 part
Lapp_vg-app_lv1 253:3 0 50G 0 lvm /opt/app
sdc 8:32 0 3G 0 disk
sdd 8:48 0 3G 0 disk
sde 8:64 0 3G 0 disk
sdf 8:80 0 10G 0 disk
sdh 8:112 0 10G 0 disk
sdi 8:128 0 10G 0 disk
sdj 8:144 0 30G 0 disk
sdk 8:160 0 30G 0 disk
sr0 11:0 1 13.3G 0 rom
[root@prsdb01 ~]#
[root@prsdb01 ~]# ls -l /dev/disk/by-path/ | cut -d" " -f 12-
pci-0000:02:03.0-ata-1 -> ../../sr0
pci-0000:03:00.0-scsi-0:0:0:0 -> ../../sda
-> ../../sda1
-> ../../sda2
pci-0000:03:00.0-scsi-0:0:1:0 -> ../../sdb
-> ../../sdb1
pci-0000:04:00.0-scsi-0:0:0:0 -> ../../sdc
pci-0000:04:00.0-scsi-0:0:1:0 -> ../../sdd
pci-0000:04:00.0-scsi-0:0:2:0 -> ../../sde
pci-0000:04:00.0-scsi-0:0:3:0 -> ../../sdf
pci-0000:04:00.0-scsi-0:0:4:0 -> ../../sdg
pci-0000:04:00.0-scsi-0:0:5:0 -> ../../sdh
pci-0000:04:00.0-scsi-0:0:6:0 -> ../../sdi
pci-0000:04:00.0-scsi-0:0:8:0 -> ../../sdj
pci-0000:04:00.0-scsi-0:0:9:0 -> ../../sdk
[root@prsdb01 ~]#
DM Multi-Path設定
ディスクのハードウェア・パスとデバイス名(デバイスファイル /dev/sda、/dev/sdb、…)を見ると仮想マシンに接続されたディスクには「SCSIコントローラ番号:ディスク番号」の順番にデバイス名が割り当てられています。ただしこの割り当ての順番はカーネルによって保証されたものではありません。
ディスクのデバイス名はOS起動やディスク追加のタイミングでudevにより割り当て(デバイスファイルの作成)が行われます。この割り当ての順番はディスクが接続された順番ではなくカーネルがディスク(デバイス)を認識した順番です。
ファイルシステムのマウントはデバイス名ではなくUUIDを参照します。そのためサーバ起動時にディスクのデバイス名が入れ替わってしまっても問題ありません。ところがASMディスクはファイルシステムを使用しないので、デバイス名が入れ替わったりノード間で一致しないということが起きてしまってはあまりよろしくありません。
そこでDM Multipath(device-mapper-multipath)を使用してディスクに割り当てるデバイス名を永続的に固定します。DM Multipathはその名の通りマルチパスのディスク・アクセスを制御するドライバですが、このドライバで共有ディスクを片パスのマルチパスデバイスとして構成します。
DBサーバのパッケージ構成ではDM multipathが既にインストールされています。まず、各DBサーバでmpathconf –enableを実行してデフォルトの設定ファイルを作成します。
【prsdb01、prsdb02、prsdb03で実行】
-----------------------------------------------------------------------------
mpathconf --enable
# 設定ファイル(multipath.conf)が作成されたことを確認
ls /etc/multipath.conf
DBサーバ#1でmultipathd.serviceを起動してステータスを確認します。
【prsdb01で実行】
-----------------------------------------------------------------------------
# multipathd.service起動
systemctl start multipathd.service
# multipathd.serviceステータス確認
systemctl status multipathd.service
この時点ではまだ何も設定していないので「sda: failed to get udev…」「sdb: failed to get udev」といったエラーが出力されると思いますがステータスが”active (running)”となっていれば問題ありません。
先に確認したディスクのハードウェア・パスではSCSIコントローラ 1に接続した共有ディスクのハードウェア・パスは”/dev/disk/by-path/pci-0000:04:00.0-scsi-0:0:x:0”で x がディスク番号になっていることがわかります。対象を絞って共有ディスクのWWN(World Wide Name)を取得します。
【prsdb01で実行】
-----------------------------------------------------------------------------
# SCSIコントローラ 1に接続したディスクのWWNを出力(1行で記述)
ls /dev/disk/by-path/pci-0000:04:00.0-scsi-0:0:*:0 | while read DEVPATH ; do /lib/udev/scsi_id --whitelisted --device=${DEVPATH};done
-----------------------------------------------------------------------------
【実行例】
-----------------------------------------------------------------------------
[root@prsdb01 ~]# ls /dev/disk/by-path/pci-0000:04:00.0-scsi-0:0:*:0 | while read DEVPATH ; do /lib/udev/scsi_id --whitelisted --device=${DEVPATH};done
36000c29a3f0a7b1c0cfce643cbd2998a
36000c298625b80b185837f00f9a086de
36000c295799d0b1c0e4c886066513186
36000c298f4fde5ccf40d0b016a9464aa
36000c29802c1077545367d572fcfe23f
36000c29880c6e9c851e00d5f6537cc2a
36000c29dc34668da2329d10889319d3e
36000c298792b9280cdb2d7a4ecbfe242
36000c2946ad523c016fbafd30ad31abb
[root@prsdb01 ~]#
取得したWWNを元に/etc/multipath.confを編集します。
【prsdb01で実行】
-----------------------------------------------------------------------------
vi /etc/multipath.conf
-----------------------------------------------------------------------------
【/etc/multipath.conf編集内容】
-----------------------------------------------------------------------------
defaults {
user_friendly_names no
find_multipaths no
enable_foreign "^$"
}
blacklist {
wwid ".*"
}
blacklist_exceptions {
# property "(SCSI_IDENT_|ID_WWN)"
wwid "36000c29a3f0a7b1c0cfce643cbd2998a"
wwid "36000c298625b80b185837f00f9a086de"
wwid "36000c295799d0b1c0e4c886066513186"
wwid "36000c298f4fde5ccf40d0b016a9464aa"
wwid "36000c29802c1077545367d572fcfe23f"
wwid "36000c29880c6e9c851e00d5f6537cc2a"
wwid "36000c29dc34668da2329d10889319d3e"
wwid "36000c298792b9280cdb2d7a4ecbfe242"
wwid "36000c2946ad523c016fbafd30ad31abb"
}
multipaths {
multipath {
wwid 36000c29a3f0a7b1c0cfce643cbd2998a
alias asmd001
skip_kpartx yes
}
multipath {
wwid 36000c298625b80b185837f00f9a086de
alias asmd002
skip_kpartx yes
}
・
・
・
multipath {
wwid 36000c2946ad523c016fbafd30ad31abb
alias asmd202
skip_kpartx yes
}
}
devices {
device {
vendor "VMware"
product "Virtual disk"
getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
}
}
[root@prsdb01 ~]#
【multipath.conf 補足説明】
設定セクション/項目 | 設定内容 | 説明 |
user_friendly_names | no | yes :デバイス名を/dev/mapper/mpathに設定 no :デバイス名を/dev/mapper/WWIDに設定 |
find_multipaths | no | マルチパスデバイスのセットアップ用のモードを定義。yesに設定するとブラックリスト化されていないすべてのパスに対してデバイスの作成を試行するのではなく条件を満たす場合だけデバイス化 |
blacklist | “.*” | ブラックリストを記述するセクション。wwid “.*”に該当するデバイス、つまりすべてのデバイスををマルチパス化しない。要はACLと一緒で最初に全部対象外にしてblacklist_exceptionsでマルチパス対象デバイスを記述 |
blacklist_exceptions | ASMディスクのWWN | ブラックリストから除外するデバイスを記述するセクション。wwidに続けて上で取得したASMディスクのWWNを記述 |
multipaths | デバイスごとのマルチパス定義 | マルチパス定義を記述するセクション。ASMディスクごとにmultipath設定を記述 ———————————————— multipath { wwid <ASMディスクのWWN> alias <asmd+仮想ディスク(.vmdk)の数値部分> skip_kpartx yes } ———————————————— wwid :ディスクのWWN alias :ディスクのエイリアス(任意の文字列を設定可) skip_kpartx:yes に設定すると、kpartx は自動的にデバイスにパーティションを作成しない |
devices | VMWare仮想ディスクのストレージタイプ | ストレージデバイス用に設定できる属性を定義するセクション。もともと主要ベンダーのストレージ情報は組み込まれている。MWareの仮想ディスクが見つからなかったので追加 ———————————————— device { vendor “VMware” product ”Virtual disk” getuid_callout “/lib/udev/scsi_id –whitelisted –device=/dev/%n” ———————————————— vendor:cat /sys/block/sda/device/vendorで取得 product:cat /sys/block/sda/device/modelで取得 getuid_callout: 一意のパス識別子を取得するためにコールアウトするデフォルトのプログラムと引数を指定(絶対パスでの指定が必要) |
編集内容をチェックしてエラーがなければmultipathd.serviceをリロードします。
【prsdb01で実行】
-----------------------------------------------------------------------------
# 設定ファイルをチェック
multipath -t > /dev/nul
# multipathd.serviceの設定をリロード
systemctl reload multipathd.service
# マルチパスデバイスを出力
multipath -ll
-----------------------------------------------------------------------------
【実行例】
-----------------------------------------------------------------------------
[root@prsdb01 ~]# multipath -t > /dev/nul
[root@prsdb01 ~]# systemctl reload multipathd.service
[root@prsdb01 ~]# multipath -ll
asmd001 (36000c29a3f0a7b1c0cfce643cbd2998a) dm-4 VMware,Virtual disk
size=3.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
`- 5:0:0:0 sdc 8:32 active ready running
asmd002 (36000c298625b80b185837f00f9a086de) dm-5 VMware,Virtual disk
size=3.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
`- 5:0:1:0 sdd 8:48 active ready running
・
・
・
asmd201 (36000c298792b9280cdb2d7a4ecbfe242) dm-11 VMware,Virtual disk
size=30G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
`- 5:0:8:0 sdj 8:144 active ready running
asmd202 (36000c2946ad523c016fbafd30ad31abb) dm-12 VMware,Virtual disk
size=30G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
`- 5:0:9:0 sdk 8:160 active ready running
[root@prsdb01 ~]#
マルチパスデバイスのリンク(asmdxxx)は/dev/mapperに作られます。ls、lsblkでデバイスが正常に構成されていることを確認します。
【prsdb01で実行】
-----------------------------------------------------------------------------
ls -l /dev/mapper/
lsblk
DBサーバ#1で編集したmultipath.confをDBサーバ#2、DBサーバ#3に転送します。
【prsdb01で実行】
-----------------------------------------------------------------------------
scp /etc/multipath.conf 172.16.10.22:/etc/
scp /etc/multipath.conf 172.16.10.23:/etc/
DBサーバ#2、DBサーバ#3でmultipathd.serviceを起動してマルチパスデバイスが構成されていることを確認します。
【prsdb02、prsdb03で実行】
-----------------------------------------------------------------------------
# multipathd起動
systemctl start multipathd.service
# マルチパスデバイス確認
multipath -ll
ls -l /dev/mapper/
lsblk
DBサーバのOracle RAC環境用デバイス設定が完了したら次はGrid Infrastructure、OracleDBのインストール環境を構築します。
コメント