皆様こんにちは、TAM の多久です。
VMware vSphere をご利用のお客様の中には、ビジネスクリティカルなアプリケーションに対して高可用性・高スケーラビリティを提供するために Oracle RAC を使用するケースがございます。このような環境でストレージ移行を実施される際には、ダウンタイムの短縮が求められ、お困りのお客様もいらっしゃるのではないでしょうか。
今回は、ダウンタイムなしで vSphere 上の Oracle RAC クラスタのストレージ移行する方法をご紹介します。
なお、こちらのブログに記載の内容は、弊社のSenior Staff Solution Architect かつ VMware Hybrid Multi-Cloud 上の Oracle を専門とする Global Oracle Field Practice Lead を務める Sudhir Balasubramanian が2018年に執筆した下記のブログの一部を日本語に翻訳したものです。
Storage vMotion for Production Oracle RAC Workloads with NO downtime – Same vSphere Cluster , Different Storage Array
Sudhir Balasubramanian は、本ブログに記載の内容以外にも、vSphere 上の Oracle 利用について有用な情報をブログで配信しております。是非ご覧ください。
https://blogs.vmware.com/apps/oracle
◾️ はじめに
ビジネスクリティカルなアプリケーションをご利用の場合、特に I/O インテンシブな Oracle ワークロードをご利用の場合は、要求の厳しいワークロードプロファイルに基づいた下記のようなストレージ移行が求められます。
- 同じ vSphere クラスタ からアクセスする同一ストレージアレイ内の異なる Tier への移行
- 同じ vSphere クラスタ からアクセスする同一データストアタイプの異なるストレージアレイへの移行
- 同じ vSphere クラスタ からアクセスする異なるデータストアタイプの異なるストレージアレイへの移行
※データストアタイプは VMFS, NFS, iSCSI, vVOL, vSAN を示します。
このようなストレージ移行は、VMware のデータストアで共通して使用する vmdk の存在により、様々な組み合わせの中でシームレスに実行することができます。
本ブログでは、同一 vSphere クラスタからアクセスする同一・異なるストレージアレイ上のデータストアへダウンタイムなしで移行する方法をご紹介します。vSphere 上で稼働する Oracle データベースについて、どのようなタイプのストレージをご利用でも実行可能です。このストレージ移行は、以下2つのテクノロジーを組み合わせて使用します。
- VMware Storage vMotion
- Oracle Automatic Storage Management (ASM)
◾️前提となる知識について
vSphere 上の Oracle RAC のストレージ移行方法をご紹介する前に、前提知識を整理します。
- VMware SDDC スタック上に構築できる Oracle データベースのモデルは3種類あります。
- Oracle Single Instance
- Oracle Real Application Cluster (Oracle RAC)
- Oracle RAC one node
- vmdk 共有モードの選択肢は3種類あり、クラスタリングにはMulti-writer を使用します。
- Unspecified
- No sharing
- Multi-writer
Multi-writer は仮想マシン間で vmdk を共有するため、VMware SDDC 上にOracle RAC を導入する際に重要な役割を果たします。VMFS はクラスタ化されたファイルシステムで、通常は複数の仮想マシンが同じ仮想ディスク(.vmdkファイル)を開いたり書き込んだりすることを禁止しています。これにより複数の仮想マシンが同じ vmdkファイルに不注意にアクセスすることを防ぎます。
Multi-writer オプションを使用すると、特定のクラスタ対応アプリケーション(Oracle Clusterware など)の保護を無効にすることができます。このアプリケーションは、2つ以上の仮想マシンからのディスクへの書き込みがデータ損失を引き起こさないように、データの一貫性と同時実効性を確保しています。
Multi-writer オプションを使用した共有 vmdk では、VMware Storage vMotion, スナップショット、変更ブロックのトラッキング(CBT)などの機能をサポートしていないことに注意が必要です。詳細は以下の KBに記載しています。
マルチライター フラグを使用して、VMFS が提供する同時書き込み保護を有効または無効にする (1034165)
- Oracle RAC クラスタを構成する複数の仮想マシンは、それぞれ2つのタイプの vmdk を有します。
- Non-database vmdk(OS ディスクとOracle バイナリ)
- Shared database vmdk ※Multi-writerに設定
- VMware Storage vMotion は、仮想マシンをパワーオンしたまま、仮想マシンの構成ファイルと仮想ディスクを、あるデータストアから別のデータストアに移行することができる機能です。VMware Storage vMotion の要件と制限については以下のドキュメントに記載がございます。
Storage vMotion Requirements and Limitations
先に記載したように Multi-Writer オプションを使用した vmdk の Storage vMotion はサポートされていないため Oracle RAC を構成する仮想マシンの Storage vMotion を試みるとエラーが表示され実行できません。
- Oracle ASM テクノロジーを使用することで、Oracle ブロックをあるデータストア上の vmdk から同一もしくは別のデータストア上にある新たな vmdk へ移行が可能です。既存の ASM ディスクグループに新たなディスクを追加、もしくは古いディスクを削除すると、Oracle ASM は自動的にファイルの内容をダウンタイムなくリバランスします。詳細は以下のドキュメントに記載がございます。
Dropping Disks from Disk Groups
また、ASM_POWER_LIMIT のパラメータにより、リバランス動作の速度を決定することができます。値の範囲は0~1024であり、数値が高いほど処理の速度は速くなりますが、I/Oオーバーヘッドが大きくなりリバランス処理が増える可能性があります。デフォルトの設定値は1です。管理者はこのパラメータを使用することで、移行のスループットを制御し、ピークの時間帯にパフォーマンス低下が発生する可能性を下げることができます。
◾️ ストレージ移行方法の概要
Oracle RAC クラスタを構成する仮想マシンは、Non-database vmdk と Shared database vmdk を持ちます。VMware Storage vMotionは、Non-database vmdk をダウンタイムなしで移行することができますが、Multi-writer オプションをサポートしないため Shared database vmdk は移行できません。一方、Oracle ASM には Non-database vmdk を移行する機能は含まれませんが、Shared database vmdk の移行が可能です。よって、VMware Storage vMotion と Oracle ASM を組み合わせ、Non-database vmdk は VMware Storage vMotion で、Shared database vmdk は Oracle ASM で移行することで、ダウンタイムなしの Oracle RAC クラスタのストレージ移行が実現します。
◾️ ストレージ移行方法の詳細
以下2つのステップでストレージ移行を実施します。
- VMware Storage vMotion による Non-database vmdk (OSとOracle バイナリ)の移行
- Oracle ASM による Shared database vmdk の移行
なお、VMware SDDC スタック上で Oracle RAC を構築する際のベストプラクティスは Oracle VMware Hybrid Cloud High Availability Guide に記載がございます。各 vmdk や SCSI コントローラ等の設定がベストプラクティスに沿っていることを事前にご確認ください。
本ブログ内では Oracle RAC クラスタを構成する仮想マシンが2台あるとして、仮想マシン名を”prac19c1”と”prac19c2”と記述します。
- VMware Storage vMotion による Non-database vmdk (OSとOracle バイナリ)の移行まず、VMware Storage vMotion を用いて Non-database vmdk を新しいデータストアへ移行します。vSphere Client から Storage vMotion を実施しますが、移行対象の選択画面で Non-database vmdk のみを選択し、Storage vMotion を実行してください。ディスクごとに移行対象を設定しない場合は Shared database vmdk も移行対象に含んでしまい、先述のようにエラーが表示されます。正常に Storage vMotion が完了すると、OS とOracle バイナリの vmdk が新しいデータストアに移行した状態となり、Shared database vmdk は元のデータストアに残った状態になります。
- Oracle ASM による Shared database vmdk の移行次に、Oracle ASM を用いて Shared database vmdk を移行します。①仮想マシン ”prac19c1” で、移行先のデータストアに Multi-writer オプションをつけた新たな Eager Zero Thick vmdk を作成します。
②仮想マシン “prac19c2” では、”prac19c1”で新しく作成した vmdk を同じ SCSI ポジションで追加します。その際に Multi-writer オプションを追加します。
この段階で、”prac19c1”, “prac19c2” 上で移行先のデータストア上にある新しい vmdk が表示されます。
③”prac19c1” で適切な partitioning offset を用いて新しい vmdk をパーティショニングします。このプロセスは ASMLIB をご利用の場合に必要で、Linux udev の場合は必要ありません。
④“prac19c2” では SCSI バスをスキャンし、新しいディスクパーティションを確認します。
⑤”prac19c1”で、新しいディスク上に新たな ASM デバイスを作成します。
⑥“prac19c2” では、”oracleasm scandisks” のコマンドを実行します。
⑦”oracle19c1” で新しい ASM ディスクを既存の ASM ディスクグループに追加します。古い ASM ディスクを既存の ASM ディスクグループから削除し、ASM リバランスを実行します。ASM ディスクを削除するとASM ディスクグループは削除されたディスク上のすべてのファイルエクステントを、ASM ディスクグループ内の他のディスクに移動することによってリバランスします。
⑧“oracle19c1” で “oracleasm deletedisk XXX” のコマンドを実行します。XXXは古い ASM ディスクを示します。
⑨“oracle19c2” では、”oracleasm scandisks” のコマンドを実行します。
⑩古い vmdk を “prac19c” “prac19c2” の両方から削除すると、Shared database disk が移行先のデータストア上に移行した状態になります。ASK ディスクの追加と削除、ならびに ASM リバランスについては、下記のブログにて紹介しております。
No downtime Storage vMotion of Oracle RAC Cluster using shared vmdk’s with multi-writer attribute from one vSAN to another vSAN Cluster using VMware HCI Mesh以上のステップを終えると、Non-database vmdk・Shared database vmdk ともに新たなデータストアへの移行が完了します。
◾️ 最後に
本ブログでは VMware Storage vMotion と Oracle ASM のテクノロジーを組み合わせて、vSphere 上の Oracle RAC クラスタをストレージ移行する方法をご紹介しました。
下記ブログ内では、検証環境の画面スクリーンショットともにストレージ移行方法を詳細に記載しております。ぜひご覧ください。
Storage vMotion for Production Oracle RAC Workloads with NO downtime – Same vSphere Cluster , Different Storage Array
ご不明点がございましたら、担当 TAM までお気軽にご連絡いただけますと幸いです。
どうぞよろしくお願いいたします。
TAM 多久