はじめに
先日ExaDB-DとExaDB-C@CでASMディスク・グループの容量配分をカスタム指定できる機能が追加されたので、試してみました。
これまでは、DATA/RECO/SPARSEの容量配分はOCIが用意したデフォルト配分を使う形でしたが、今回の機能追加によってVMクラスタ作成時だけでなく、作成後にも用途に合わせて容量配分を変更できるようになっています。
ExaDB-Dの検証環境で実際にOCIコンソールを使い、DATAとRECOの容量配分を変更してみます。
★ ExaDB-D新機能の概要はこちら:ASM Disk Group Resizing
★ ExaDB-C@C新機能の概要はこちら:Oracle Exadata Database Service on Dedicated InfrastructureおよびExadata Database Service on Cloud@Customer上のASMディスク・グループのサイズ変更
なお、本記事の検証は以下のExaDB-Dのチュートリアルを参考に試しています。
Oracle Exadata Database Service on Dedicated InfrastructureおよびExadata Database Service on Cloud@Customer上のASMディスク・グループのサイズ変更
ASMディスク・グループとは
ASM(Automatic Storage Management)は、Oracle Database向けのストレージ管理機能です。
ExaDBのASM構成では、主に次のディスク・グループが使われています。
| ディスク・グループ | 主な用途 |
|---|---|
| DATA | データファイルなど、データベース本体の格納 |
| RECO | Fast Recovery Area(FRA)、アーカイブREDOログ、バックアップ関連ファイルなど |
| SPARSE | Exadata Snapshotを利用するための領域 |
今回の機能は、このDATA/RECO/SPARSEに対して、割合ベースで容量配分を指定できるようになったというものです。
何ができるようになったのか
主なポイントは以下です。
- VMクラスタ作成時に、DATA/RECO/SPARSEの割合をカスタム指定できる
- VMクラスタ作成後にも、既存の容量配分を変更できる
- Oracle選択のデフォルト配分も引き続き利用できる
- 一度カスタム指定したあと、別のカスタム値やOracleデフォルトに変更できる
例えば、RECOに空きが多く、DATAを増やしたい場合は、RECOの割合を下げてDATAに多く割り当てることができます。逆に、バックアップやリカバリ関連の領域を増やしたい場合は、RECOの割合を増やすこともできます。
対象サービス
対象は以下のサービスです。
- Oracle Exadata Database Service on Dedicated Infrastructure(ExaDB-D)
- Oracle Exadata Database Service on Cloud@Customer(ExaDB-C@C)
今回の検証環境
今回は、以下のようなExaDB-Dの検証環境で確認しました。
| 項目 | 内容 |
|---|---|
| サービス | Oracle Exadata Database Service on Dedicated Infrastructure(ExaDB-D) |
| リージョン | KIX(Osaka) |
| ストレージ・タイプ | ASM |
| Exadataストレージ | 2TB |
| ローカル・バックアップ用ストレージ | 無効 |
| Exadataスパース・スナップショットのストレージ | 無効 |
| CDB | 検証用に1台 |
今回の検証では、SPARSEは使わず、DATAとRECOの配分だけを変更しました。
また、操作対象はCDB単位ではなく、VMクラスタのASMディスク・グループです。同じVMクラスタ上に複数のDBが共存している場合、ASMリバランス中のI/O影響は他のDBにも及ぶ可能性があるので検証や本番作業では注意が必要です。
カスタム指定時の主な制限
カスタム指定できるとはいえ、完全に自由な割合を設定できるわけではありません。
主な制限は以下です。
| ディスク・グループ | 制限 |
|---|---|
| DATA | 最小10% |
| RECO | 最小10% |
| SPARSE | 0%を指定可能。ただし0%より大きい場合は最小10% |
また、各ディスク・グループの合計は100%になる必要があります。
既存VMクラスタで変更する場合は、さらに注意が必要です。ディスク・グループのサイズを、現在使用している容量に予約領域を加えたサイズより小さくすることはできません。公式ドキュメントでは、現在使用量に加えて、そのディスク・グループ総サイズの15%相当の予約容量が考慮されると説明されています。
変更前に確認したこと
実際に変更する前に、以下を確認しました。
- VMクラスタが
使用可能状態であること - ストレージ・タイプが
ASMであること - 同じ時間帯にバックアップやメンテナンスが走っていないこと
- DATAの使用量が十分に小さく、DATAの容量を下げても問題ないこと
- ASMリバランスが実行中ではないこと
これはエラーではなく、「現在実行中のASM操作がない」という意味です。
今回変更した容量配分
今回は、2TBのASMストレージで、DATA / RECO / SPARSE の割合を以下のように変更しました。
| ディスク・グループ | 変更前 | 変更後 |
|---|---|---|
| DATA | 80% | 75% |
| RECO | 20% | 25% |
| SPARSE | 0% | 0% |
2TB環境なので、5%の変更は約0.1TB、つまり約100GB相当です。
ざっくりしたイメージは以下です。
| 割合 | DATA | RECO | SPARSE |
|---|---|---|---|
| 80 / 20 / 0 | 約1.6TB | 約0.4TB | 0TB |
| 75 / 25 / 0 | 約1.5TB | 約0.5TB | 0TB |
今回は記事用に変更前後の差分が分かりやすいよう、1%ではなく5%変更しました。ただし、DATAを減らす場合は、現在使用量と予約領域を下回らないことを必ず確認してください。
ちなみに、asmcmd lsdgコマンドから現在のASMディスク・グループの状態をすることもできます。
[grid@host ~]$ asmcmd lsdg
State Type Rebal Total_MB Free_MB Name
MOUNTED HIGH N xxxxxxxx xxxxxxxx DATA/
MOUNTED HIGH N xxxxxxxx xxxxxxxx RECO/
OCIコンソールから変更してみる
既存VMクラスタの容量配分を変更する流れを整理していきたいと思います。
まず、OCIコンソールで対象のExadata VMクラスタの詳細画面から右上の「VMクラスタのスケーリング」を選択します。
「VMクラスタのスケーリング」というタブが開かれるので、一番下の「Exadataストレージ」の設定までスクロールし、右側のボタン、「カスタム・ストレージ・サイズの割当て」を選択します。
次に具体的なDATA/RECO/SPARSEの割合を入力していきます。
今回は DATA75%、RECO25%、SPARSE0% を指定していて、表示される容量換算値を確認して問題なければ右下の「スケール」を実行します。
スケールが始まると、VMクラスタが更新中に変化します。
更新中の進捗やログ、エラーメッセージは「作業リクエスト」タブから確認できます。
更新が完了すると、ステータスが「使用可能」に戻ります
作成済みVMクラスタのスケール画面では、以前に指定したカスタム値が保持されます。そのため、再度スケール画面を開くと、前回指定したDATA/RECO/SPARSEの割合を確認できます。
スケールするとASMリバランスが発生する
ASMディスク・グループの容量配分を変更すると、ASMリバランスが発生します。
ASMリバランスは、変更後の構成に合わせてASM内のデータ配置を再調整する処理です。実行中はディスク・グループのパフォーマンスに影響する可能性があるため、本番環境では以下のポイントを考慮した方が良いと思います。
- 業務影響の少ない時間帯に実施する
- 事前にDATA/RECO/SPARSEの使用量を確認する
- 同じVMクラスタ上の他DB利用者にも影響可能性を共有する
- ストレージ拡張とディスク・グループ配分変更を両方行う場合は、まとめて実施する
- 必要性が低い変更は避ける
特に大きなディスク・グループでは、リバランス完了まで時間がかかる可能性があるというのも注意ポイントです。
機能を試してみて思ったこと
OCIコンソール上の操作自体はシンプルでした。スケール画面でカスタム割当てを選び、DATA/RECO/SPARSEの割合を入力するだけです。
一方で、裏側ではASMディスク・グループの配分変更とリバランスが発生します。見た目は簡単でも、扱いとしてはストレージ構成変更に近い作業です。
検証用ならCDB1台で十分ですが、共有VMクラスタや本番環境で実施する場合は、DB単位ではなくVMクラスタ単位の影響として考えるのが大事だと思いました。
まとめ
ASMディスク・グループのサイズ変更機能により、ExaDB-DとExaDB-C@CでDATA/RECO/SPARSEの容量配分を柔軟に管理できるようになりました。
今回の検証では、ExaDB-Dの2TB環境で、DATA/RECO/SPARSEを80/20/0から75/25/0に変更する例を確認しました。
主にポイントは次の3つです。
- VMクラスタ作成時と作成後の両方で容量配分を指定できる
- Oracleデフォルト配分とカスタム配分を選べる
- 変更時はASMリバランスが発生するため、実施タイミングに注意する
ストレージの空き状況とワークロードの変化に合わせて、より効率よくExaDBの容量を使える便利な機能かと思います。
一方で、本番環境で気軽に何度も変更するものではないので、本番環境で利用する場合は事前に使用量を確認し、メンテナンス時間帯で計画的に実施するのがよさそうです。


