PowerCLI を利用して、Oracle RAC 用に構成した vSphere / vSAN 環境の VM の情報を確認してみます。
vSphere / vSAN 環境に Oracle RAC を構築する場合に、いくつか VM に RAC むけの設定をします。
RAC の構築目的によって具体的な設定値は変わりますが、たとえば下記のような設定です。
- vNICの数や、接続するネットワークを揃える。
- 仮想ハード ディスク の VMDK ファイルを複数の VM で共有する。
- VMDK ファイルは EagerZeroed Thick にして「Multi Writer フラグ」を設定する。
(参考: https://kb.vmware.com/kb/2121181) - 共有ディスクむけに容量を 100%予約する「仮想マシン ストレージ ポリシー」を作成する。
- Oracle RAC のクラスタに参加している VM 同士を DRS のアンチ アフィニティ ルールで分割配置する。
など・・・
VM の設定項目が多いため、私のラボでは何か忘れていないか気づきやすいように
PowerCLI を利用して設定確認しています。
下記のようなスクリプトを作成しています。
- ファイルは UTF-8(with BOM)で保存すると無難かなとおもいます。
- 実行するときは、PowerShell / PowerCLI のウィンドウ幅を 100 くらいにしておくとよいです。
今回は、Windows で PowerCLI 10.0 を利用しています。
PowerCLI> Get-Module VMware.* | select Version,Name | Sort-Object
Version Name
------- ----
10.0.0.7893910 VMware.VimAutomation.Sdk
10.0.0.7894167 VMware.VimAutomation.Storage
10.0.0.7893909 VMware.VimAutomation.Core
10.0.0.7893915 VMware.VimAutomation.Cis.Core
10.0.0.7893906 VMware.VimAutomation.Common
PowerCLI>
スクリプトの実行前に、vCenter に接続しておきます。
PowerCLI> Connect-VIServer vc-sv01.go-lab.jp -Force | Out-Null
私のラボの RAC (db01 / db02 で 2ノード構成)で情報取得してみると、下記のようになっています。
vmx-13 の仮想マシンなので、OSTyep は「Oracle Linux 7 (64-bit)」にしています。
ESXi 6.5 での Guest OS の細分化について。(Oracle Linux 7 など)
PowerCLI> .\get_rac-vm_info.ps1 db01,db02
==========================================================================================
vCPU / vRAM
VM PowerState NumCpu MemoryGB HwVersion OSType
-- ---------- ------ -------- --------- ------
db01 PoweredOn 2 8 vmx-13 Oracle Linux 7 (64-bit)
db02 PoweredOn 2 8 vmx-13 Oracle Linux 7 (64-bit)
==========================================================================================
Cluster
Cluster : vsan-cluster-01
VsanEnabled : True
HAEnabled : True
DrsEnabled : True
EVCMode : intel-haswell
==========================================================================================
Host
VM Cluster ESXi
-- ------- ----
db01 vsan-cluster-01 hv-i22.go-lab.jp
db02 vsan-cluster-01 hv-i21.go-lab.jp
==========================================================================================
vNIC
VM Name Type NetworkName StartConnected Connected
-- ---- ---- ----------- -------------- ---------
db01 Network adapter 1 Vmxnet3 dvpg-vds01-vlan-1011 True True
db01 Network adapter 2 Vmxnet3 dvpg-vds01-vlan-4001 True True
db02 Network adapter 1 Vmxnet3 dvpg-vds01-vlan-1011 True True
db02 Network adapter 2 Vmxnet3 dvpg-vds01-vlan-4001 True True
==========================================================================================
vSCSI Controller
VM Name Type BusSharingMode UnitNumber ControllerKey
-- ---- ---- -------------- ---------- -------------
db01 SCSI controller 0 ParaVirtual NoSharing 3 1000
db01 SCSI controller 1 ParaVirtual NoSharing 4 1001
db02 SCSI controller 0 ParaVirtual NoSharing 3 1000
db02 SCSI controller 1 ParaVirtual NoSharing 4 1001
==========================================================================================
vDisk
VM Name Controller GB StorageFormat Persistence Sharing
-- ---- ---------- -- ------------- ----------- -------
db01 Hard disk 1 1000 16 Thin Persistent sharingNone
db01 Hard disk 2 1000 40 Thin Persistent sharingNone
db01 Hard disk 3 1001 30 EagerZeroedThick IndependentPersistent sharingMultiWriter
db01 Hard disk 4 1001 30 EagerZeroedThick IndependentPersistent sharingMultiWriter
db01 Hard disk 5 1001 30 EagerZeroedThick IndependentPersistent sharingMultiWriter
db01 Hard disk 6 1001 30 EagerZeroedThick IndependentPersistent sharingMultiWriter
db01 Hard disk 7 1001 30 EagerZeroedThick IndependentPersistent sharingMultiWriter
db01 Hard disk 8 1001 30 EagerZeroedThick IndependentPersistent sharingMultiWriter
db02 Hard disk 1 1000 16 Thin Persistent sharingNone
db02 Hard disk 2 1000 40 Thin Persistent sharingNone
db02 Hard disk 3 1001 30 EagerZeroedThick IndependentPersistent sharingMultiWriter
db02 Hard disk 4 1001 30 EagerZeroedThick IndependentPersistent sharingMultiWriter
db02 Hard disk 5 1001 30 EagerZeroedThick IndependentPersistent sharingMultiWriter
db02 Hard disk 6 1001 30 EagerZeroedThick IndependentPersistent sharingMultiWriter
db02 Hard disk 7 1001 30 EagerZeroedThick IndependentPersistent sharingMultiWriter
db02 Hard disk 8 1001 30 EagerZeroedThick IndependentPersistent sharingMultiWriter
==========================================================================================
Share vDisk
vDisk : Hard disk 3
Name : [vsanDatastore-01] 60c4ab5a-6c3e-ca85-29da-b8aeedea7a23/db01_2.vmdk
VMs : 2
VM : db01,db02
vDisk : Hard disk 4
Name : [vsanDatastore-01] 60c4ab5a-6c3e-ca85-29da-b8aeedea7a23/db01_3.vmdk
VMs : 2
VM : db01,db02
vDisk : Hard disk 5
Name : [vsanDatastore-01] 60c4ab5a-6c3e-ca85-29da-b8aeedea7a23/db01_4.vmdk
VMs : 2
VM : db01,db02
vDisk : Hard disk 6
Name : [vsanDatastore-01] 60c4ab5a-6c3e-ca85-29da-b8aeedea7a23/db01_5.vmdk
VMs : 2
VM : db01,db02
vDisk : Hard disk 7
Name : [vsanDatastore-01] 60c4ab5a-6c3e-ca85-29da-b8aeedea7a23/db01_6.vmdk
VMs : 2
VM : db01,db02
vDisk : Hard disk 8
Name : [vsanDatastore-01] 60c4ab5a-6c3e-ca85-29da-b8aeedea7a23/db01_7.vmdk
VMs : 2
VM : db01,db02
==========================================================================================
VM Storage Policy
VM vDisk StoragePolicy ComplianceStatus
-- ----- ------------- ----------------
db01 Hard disk 1 vsan-policy-raid5 compliant
db01 Hard disk 2 vsan-policy-raid5 compliant
db01 Hard disk 3 vsan-policy-rac-01 compliant
db01 Hard disk 4 vsan-policy-rac-01 compliant
db01 Hard disk 5 vsan-policy-rac-01 compliant
db01 Hard disk 6 vsan-policy-rac-01 compliant
db01 Hard disk 7 vsan-policy-rac-01 compliant
db01 Hard disk 8 vsan-policy-rac-01 compliant
db02 Hard disk 1 vsan-policy-raid5 compliant
db02 Hard disk 2 vsan-policy-raid5 compliant
db02 Hard disk 3 vsan-policy-rac-01 compliant
db02 Hard disk 4 vsan-policy-rac-01 compliant
db02 Hard disk 5 vsan-policy-rac-01 compliant
db02 Hard disk 6 vsan-policy-rac-01 compliant
db02 Hard disk 7 vsan-policy-rac-01 compliant
db02 Hard disk 8 vsan-policy-rac-01 compliant
==========================================================================================
Storage Policy Setting
StoragePolicy Capability Value
------------- ---------- -----
vsan-policy-rac-01 VSAN.proportionalCapacity 100
vsan-policy-rac-01 VSAN.hostFailuresToTolerate 1
vsan-policy-rac-01 VSAN.stripeWidth 2
vsan-policy-raid5 VSAN.replicaPreference RAID-5/6 (Erasure Coding) - Capacity
vsan-policy-raid5 VSAN.proportionalCapacity 0
==========================================================================================
DRS Affinity Rule
Cluster : vsan-cluster-01
Name : drs-anti-affinity-rac-01
Type : VMAntiAffinity
Mandatory : False
Enabled : True
VMs : db01,db02
PowerCLI>
vSAN 環境に RAC を構築した場合でも VM の構成は VMFS データストアの場合とあまり変わりませんが、
VMDK は EagerZeroed Thick にして、さらに「仮想マシン ストレージ ポリシー」で
オブジェクトの容量予約を 100% にしておきます。
Oracle RAC では(ゲスト)OS の iSCSI Initiator から
直接接続した iSCSI デバイスを共有ディスクとして利用することもできます。
一方、vSAN に iSCSI Target を提供する機能がありますが、
現時点(2018年3月)では物理マシンでの RAC のみを対象としているようです。
そして vSAN では RDM には対応しないので
ゲスト OS で RAC を構築するときには VMDK 共有をすることになるはずです。
下記の KB に制限が記載されていました。
vSAN 6.5 iSCSI デバイスを使用するためのベスト プラクティス (2151966)
https://kb.vmware.com/kb/2151966
制限
- 現在、Microsoft クラスタの実装ではサポートされていません。
- 現在、他の vSphere ホストのターゲットとしての使用はサポートされていません。
- 現在、サードパーティのハイパーバイザーでの使用はサポートされていません。
- 現在、仮想マシンでの使用はサポートされていません。
また、VMware から vSAN + Oracle RAC についてのドキュメントも公開されているので、
本番環境(デモ/開発むけのラボ環境ではなく)での構築となる場合には確認しておくとよいと思います。
Oracle Real Application Clusters on VMware vSAN
https://storagehub.vmware.com/t/vmware-vsan/oracle-real-application-clusters-on-vmware-virtual-san/
以上、PowerCLI を利用した Oracle RAC VM の情報取得例でした。