Japan
サイト内の現在位置を表示しています。
Oracle Cloud Infrastructureでブロック・ボリューム・バックアップを利用したミラーディスクのバックアップ・リストア方法(Linux)
CLUSTERPRO オフィシャルブログ ~クラブロ~
はじめに
Oracle Cloud Infrastructure(以降、OCI)に構築したミラーディスク型のHAクラスターについて、ブロック・ボリューム・バックアップを利用したミラーディスクのバックアップ・リストアを試してみました。
OCIでは、ブロック・ボリュームのバックアップ機能を利用して、データのバックアップが容易に取得できます。取得したバックアップは任意のタイミングで、新しいブロック・ボリュームとして作成し、リストアできます。
今回は、ミラーディスクに使用するブロック・ボリュームに対して、バックアップの取得、また、リストアを行う手順をご紹介します。
この記事の内容
1. ブロック・ボリューム・バックアップとは
ブロック・ボリュームのバックアップ機能を使用すると、ブロック・ボリューム上のデータのポイントインタイム・スナップショットを作成できます。作成したバックアップはオブジェクト・ストレージに格納されます。ブロック・ボリューム・バックアップを作成する際のベスト・プラクティスとして、バックアップを作成する際はデータの整合性を保つため、静止点を設けることが推奨されています。
リストアの際は、オブジェクト・ストレージに格納されたバックアップを使用して、新しいブロック・ボリュームを作成します。ブロック・ボリュームのバックアップからブロック・ボリュームをリストアすると、すべてのデータが過去の特定時点のそのままの状態で再作成されます。リストアされたブロック・ボリュームをコンピュート・インスタンスにアタッチされていたものと置き換えることで、ブロック・ボリュームをバックアップ時点の状態に戻すことが可能です。
2. HAクラスター構成
OCIに「Oracle Cloud DNSリソースを使用したミラーディスク型のHAクラスター」を構築します。
構成は以下の通りです。
OCIの構成(東京リージョン:ap-tokyo-1)
- VCN (CIDR: 10.0.0.0/16)
- -サブネット
- -Public Subnet:10.0.10.0/24
- -Private Subnet:10.0.110.0/24
- -Internet Gateway
- -NAT Gateway
- コンピュート・インスタンス
- -サーバー1 (現用系インスタンス):server1
- -OS
- -Oracle Linux 9.2
- -IP構成
- -プライマリIP:10.0.110.101
- -サーバー2 (待機系インスタンス):server2
- -OS
- -Oracle Linux 9.2
- -IP構成
- -プライマリIP:10.0.110.102
CLUSTERPROの構成
- CLUSTERPRO X 5.2 for Linux (内部バージョン:5.2.0-1)
- フェールオーバーグループ (failover)
- -Oracle Cloud DNS リソース (ocdns)
- -ミラーディスクリソース (md)
- -マウントポイント:/mnt/mirror
- -データパーティション:/dev/oracleoci/oraclevdb2
- -クラスタパーティション:/dev/oracleoci/oraclevdb1
- モニタリソース
- -Oracle Cloud DNS モニタリソース (ocdnsw1)
- -ミラーディスクコネクトモニタリソース (mdnw1)
- -ミラーディスクモニタリソース (mdw1)
ディスクの構成
- ブロック・ボリューム(ミラーディスク)
- -アタッチメント・タイプ:paravirtualized
- -デバイス・パス:/dev/oracleoci/oraclevdb
- -アクセス:読取り/書込み
- ※クラスタパーティションとデータパーティションは同じブロック・ボリューム上に作成します。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 46.6G 0 disk
├─sda1 8:1 0 100M 0 part /boot/efi
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 44.5G 0 part
├─ocivolume-root 253:0 0 29.5G 0 lvm /
└─ocivolume-oled 253:1 0 15G 0 lvm /var/oled
sdb 8:16 0 50G 0 disk
├─sdb1 8:17 0 1G 0 part ← クラスタパーティション
└─sdb2 8:18 0 4G 0 part ← データパーティション
# ls -l /dev/oracleoci/oraclevd*
lrwxrwxrwx 1 root root 6 Jul 22 04:30 /dev/oracleoci/oraclevda -> ../sda
lrwxrwxrwx 1 root root 7 Jul 22 04:30 /dev/oracleoci/oraclevda1 -> ../sda1
lrwxrwxrwx 1 root root 7 Jul 22 04:30 /dev/oracleoci/oraclevda2 -> ../sda2
lrwxrwxrwx 1 root root 7 Jul 22 04:30 /dev/oracleoci/oraclevda3 -> ../sda3
lrwxrwxrwx 1 root root 6 Jul 22 04:32 /dev/oracleoci/oraclevdb -> ../sdb
lrwxrwxrwx 1 root root 7 Jul 22 04:32 /dev/oracleoci/oraclevdb1 -> ../sdb1 ← クラスタパーティション
lrwxrwxrwx 1 root root 7 Jul 22 04:32 /dev/oracleoci/oraclevdb2 -> ../sdb2 ← データパーティション
OCIでは、インスタンスにアタッチされたブロック・ボリュームに対して、一貫性のあるデバイス・パスがサポートされています。そのため、ブロック・ボリュームをインスタンスにアタッチするときには、インスタンスの再起動後も一貫性を保てるように、デバイス・パスを選択します。
本手順ではコンピュート・インスタンスの起動、ブロック・ボリューム・バックアップの作成、ブロック・ボリューム・バックアップからのブロック・ボリューム作成、ブロック・ボリュームのデタッチ・アタッチなどの操作を行う際にOCI CLIを実行するため、事前にポリシーの設定が必要となります。本記事で必要なポリシーは以下の通りです。上記の操作はClientから実行するため、ClientにもOCI CLIをインストールしています。
ポリシー構文 | 説明 |
Allow <subject> to use dns in <location> |
Oracle Cloud DNS のAレコードを作成、更新、削除または情報を取得する時に必要です。 |
Allow <subject> to manage volume-family in <location> |
ブロック・ボリュームおよびバックアップに関するすべての操作を実行するときに必要です。 |
Allow <subject> to use instance-family in <location> |
インスタンスの停止、再起動、情報を取得する時に必要です。 |
3. バックアップ・リストア概要
今回は、操作ミスにより、ミラーディスク上のデータを削除してしまったケースへの対応を想定して、ミラーディスクのバックアップ・リストアを行います。操作ミスにより現用系インスタンスのデータを削除した場合、待機系にもミラーリングされ、待機系インスタンスのデータも削除されてしまいます。
- ※現用系インスタンスのみに対してミラーディスクをリストアした場合は、現用系インスタンスから待機系インスタンスへフルコピーによる復旧が必要になります。
その他のバックアップ・リストア方式の手順や詳細については以下を参照ください。
- CLUSTERPRO X 5.2 > Linux > メンテナンスガイド
→ 第 2 章 保守情報
→ 2.19 ミラー/ハイブリッドディスクをディスクイメージでバックアップするには
→ 2.20 ミラー/ハイブリッドディスクにディスクイメージをリストアするには
4. バックアップ手順
待機系インスタンスにアタッチされたブロック・ボリュームからバックアップを取得する手順をご紹介します。
4.1 フェールオーバーグループの停止
ミラーディスクが正常に同期できていることを確認します。
現用系、または待機系インスタンスで以下のコマンドを実行し、ミラーディスクの状態が正常(GREEN)であることを確認します。なお、コマンドの戻り値によりミラーディスクの状態を判定することも可能です。現用系/待機系の両インスタンスが正常(GREEN)の場合、17が返却されます。
# clpmdstat --mirror md
Mirror Status: Normal
md server1 server2
------------------------------------------------------------
Mirror Color GREEN GREEN
# echo $?
17
戻り値の詳細については以下を参照ください。
- CLUSTERPRO X 5.2 > Linux > リファレンスガイド
→ 第 9 章 CLUSTERPRO コマンドリファレンス
→ 9.14 ミラーディスク関連コマンド
→ 9.14.1. ミラー状態を表示する (clpmdstat コマンド)
→ 戻り値(--mirror, -m)
同期状態の確認後、静止点を確保するためにフェールオーバーグループを停止します。
現用系インスタンスで以下のコマンドを実行します。
# clpgrp -t failover
Command succeeded.
4.2 ミラーディスクの同期を停止
現用系、または待機系インスタンスで以下のコマンドを実行します。
- ※現用系/待機系の両インスタンスについてミラーディスクモニタリソースを一時停止します。
# clpmonctrl -s -h server1 -m mdw1
Command succeeded.
# clpmonctrl -s -h server2 -m mdw1
Command succeeded.
4.3 バックアップ事前処理コマンドの実行
待機系インスタンスで以下のコマンドを実行します。
# clpbackup.sh --pre --no-shutdown
clpbackup.sh : Beginning backup-mode.
All backup flags have set to <ON>.
clpbackup.sh : Changing the setting of cluster services to Manual Startup.
clpbackup.sh : Stopping Cluster Service.
Command succeeded.
clpbackup.sh : Stopping Mirror Agent.
Command succeeded.
clpbackup.sh : Command succeeded.
コマンドを実行すると、待機系インスタンスのミラーディスクがバックアップモードになり、CLUSTERPROの各種サービスの自動起動がオフに設定され、待機系でクラスタサービスが停止します。
業務をすぐに再開したい場合は、この段階で現用系インスタンスでフェールオーバーグループを起動します。
現用系インスタンスで以下のコマンドを実行します。
# clpgrp -s failover
Command succeeded.
4.4 ブロック・ボリューム・バックアップの取得
待機系インスタンスでミラーディスクに使用しているブロック・ボリュームのバックアップを取得します。
Clientで以下のコマンドを実行します。
> oci bv backup create --volume-id ocid1.volume.oc1.ap-tokyo-1.xxxxxxxxxx --display-name Mirror-Disk-Backup --type FULL
パラメータ | 説明 |
--volume-id |
待機系インスタンスにアタッチしているブロック・ボリュームのOCID |
--display-name |
バックアップとして新規に作成するブロック・ボリューム・バックアップ名 |
--type |
完全バックアップ/増分バックアップ |
OCIコンソールなどで、ブロック・ボリュームのバックアップが作成されていることを確認してください。作成したブロック・ボリュームのOCIDは後で利用しますので控えておきます。ブロック・ボリュームのOCIDは、コマンド実行結果に含まれる[id]の値から取得可能です。
なお、バックアップ開始後、バックアップ状態がREQUEST_RECEIVEDからCREATINGに変わったタイミングで、ボリュームへのデータの書込みを再開できます。次の「4.5 バックアップ事後処理コマンドの実行」に進みます。
4.5 バックアップ事後処理コマンドの実行
待機系インスタンスで以下のコマンドを実行します。
# clpbackup.sh --post --no-reboot
clpbackup.sh : Starting Mirror Agent.
Command succeeded.
clpbackup.sh : Ending backup-mode.
All backup flags have set to <OFF>.
clpbackup.sh : Changing the setting of cluster services to Auto Startup.
clpbackup.sh : Starting Cluster Service.
Command succeeded.
clpbackup.sh : Command succeeded.
コマンドを実行すると、ミラーディスクが通常モードになり、CLUSTERPROの各種サービスの自動起動がオンに設定され、待機系でクラスタサービスが起動します。
4.6 ミラーディスクの同期を再開
現用系インスタンスのミラーディスクの監視を再開します。
現用系インスタンスで以下のコマンドを実行します。
# clpmonctrl -r -h server1 -m mdw1
Command succeeded.
- ※待機系インスタンスはコマンド実行後に、自動的にクラスターへ復帰し、ミラーディスク監視も自動的に再開します。
「4.2 ミラーディスクの同期を停止」で現用系インスタンスでフェールオーバーグループを起動していない場合は、ここで起動します。
現用系インスタンスで以下のコマンドを実行します。
# clpgrp -s failover
Command succeeded.
自動ミラー復帰が有効な場合は、バックアップ作業中に現用系ミラーディスクと待機ミラーディスクとの間に生じた差分が自動的に同期され、正常な状態になります。もし自動ミラー復帰が行われずに正常な状態にならない場合は、現用系、または待機系インスタンスで以下のコマンドを実行します。
# clpmdctrl --recovery md
ミラーディスクリソースのステータス、フェールオーバーグループのステータスを確認し、クラスターが正常であることを確認します。ミラーディスクリソースのステータスが異常の場合、同期完了までしばらく待ってから、再度確認します。
現用系、または待機系インスタンスで以下のコマンドを実行します。
# clpmdstat --mirror md
Mirror Status: Normal
md server1 server2
------------------------------------------------------------
Mirror Color GREEN GREEN
# clpstat -s
======================== CLUSTER STATUS ===========================
Cluster : cluster
<server>
*server1 .........: Online
lankhb1 : Normal Kernel Mode LAN Heartbeat
server2 .........: Online
lankhb1 : Normal Kernel Mode LAN Heartbeat
<group>
failover ........: Online
current : server1
md : Online
ocdns : Online
<monitor>
mdnw1 : Normal
mdw1 : Normal
ocdnsw1 : Normal
userw : Normal
=====================================================================
5. リストア手順
現用系インスタンスと待機系インスタンスのミラーディスクに対して、ブロック・ボリュームのバックアップからのリストアを実施する手順をご紹介します。
5.1 ミラーディスクリソースの設定変更
リストア事後処理コマンド実行時には、ミラーディスクリソースの設定で[初期ミラー構築を行う]がオフになっている必要があります。
(もしオンになっているとリストア事後処理コマンドの実行がガードされます)。
ClientからCluster WebUIに接続し、「設定モード」に切り替えます。ミラーディスクリソースのプロパティにおいて[詳細]タブの[調整]ボタンをクリックします。[ミラー]タブから[初期ミラー構築を行う]の設定を確認し、チェックボックスがオンになっていた場合はオフにした上で設定の反映を実行します。
5.2 ブロック・ボリュームの作成
「4.4 ブロック・ボリューム・バックアップの取得」で作成した、ブロック・ボリュームのバックアップから現用系インスタンスと待機系インスタンス、それぞれに対して新規にブロック・ボリュームを作成します。
Clientで以下のコマンドを実行します。実行例はブロック・ボリュームのバックアップから現用系インスタンス用のブロック・ボリュームを新規に作成する例です。
> oci bv volume create --availability-domain ap-tokyo-1 --compartment-id ocid1.compartment.oc1.xxxxxxxxxx --display-name Mirror-Disk-Restore1 --volume-backup-id ocid1.volume.oc1.ap-tokyo-1.xxxxxxxxxx
パラメータ | 説明 |
--availability-domain |
可用性ドメイン。値はoci iam availability-domain listコマンドを実行し、コマンド実行結果に含まれる[name]の値から取得可能。 |
--compartment-id |
コンパートメントのOCID |
--display-name |
バックアップから新規に作成するブロック・ボリューム名 |
--volume-backup-id |
「4.4 ブロック・ボリューム・バックアップの取得」で作成したブロック・ボリューム・バックアップのOCID |
OCIコンソールなどで、ブロック・ボリュームが作成されていることを確認してください。作成したブロック・ボリュームのOCIDは後で利用しますので控えておきます。ブロック・ボリュームのOCIDは、コマンド実行結果に含まれる[id]の値から取得可能です。
5.3 フェールオーバーグループの停止
フェールオーバーグループを停止します。
現用系インスタンスで以下のコマンドを実行します。
# clpgrp -t failover
Command succeeded.
5.4 リストア事前処理コマンドの実行(現用系/待機系インスタンス停止)
現用系/待機系の両インスタンスで以下のコマンドを実行します。
# clprestore.sh --pre
clprestore.sh : Changing the setting of cluster services to Manual Startup.
clprestore.sh : Shutting down...
Command succeeded.
clprestore.sh : Command succeeded.
コマンドを実行すると、自動的にCLUSTERPROの各種サービスの自動起動をオフにして、インスタンスをシャットダウンします。
5.5 ブロック・ボリュームのデタッチ
デタッチの際に必要な、アタッチメントのOCIDを取得しておきます。現用系/待機系の両インスタンスから取得します。アタッチメントのOCIDは、コマンド実行結果に含まれる[id]の値から取得可能です。
Clientで以下のコマンドを実行します。
> oci compute volume-attachment list --compartment-id ocid1.compartment.oc1.xxxxxxxxxx --instance-id ocid1.instance.oc1.ap-tokyo-1.xxxxxxxxxx
パラメータ | 説明 |
--compartment-id |
コンパートメントのOCID |
--instance-id |
現用系/待機系インスタンスのOCID |
各インスタンスのミラーディスクのブロック・ボリュームをデタッチする前に、ブロック・ボリュームの交換後に同一の設定となるように、既存の設定を確認します。現用系/待機系の両インスタンスから取得します。
Clientで以下のコマンドを実行します。
> oci compute volume-attachment get --volume-attachment-id ocid1.volumeattachment.oc1.ap-tokyo-1.xxxxxxxxxx
パラメータ | 説明 |
--volume-attachment-id |
「5.5 ブロック・ボリュームのデタッチ」で現用系/待機系インスタンスから取得したアタッチメントのOCID |
コマンド実行結果に含まれる[attachment-type]、[device]、[is-shareable]の値は、現用系インスタンスと待機系インスタンスに、「5.2 ブロック・ボリュームの作成」で作成したブロック・ボリュームをアタッチする際の設定値とするため控えておきます。
ミラーディスクとしてアタッチしているブロック・ボリュームをデタッチします。現用系/待機系の両インスタンスからデタッチします。
Clientで以下のコマンドを実行します。
> oci compute volume-attachment detach --volume-attachment-id ocid1.volumeattachment.oc1.ap-tokyo-1.xxxxxxxxxx
パラメータ | 説明 |
--volume-attachment-id |
「5.5 ブロック・ボリュームのデタッチ」で現用系/待機系インスタンスから取得したアタッチメントのOCID |
OCIコンソールなどで、現用系/待機系の両インスタンスからブロック・ボリュームがデタッチされていることを確認してください。
5.6 ブロック・ボリュームのアタッチ
「5.2 ブロック・ボリュームの作成」で作成したブロック・ボリュームをアタッチします。現用系/待機系の両インスタンスにアタッチします。
Clientで以下のコマンドを実行します。
> oci compute volume-attachment attach --instance-id ocid1.instance.oc1.ap-tokyo-1.xxxxxxxxxx --type paravirtualized --volume-id ocid1.volume.oc1.ap-tokyo-1.xxxxxxxxxx --device /dev/oracleoci/oraclevdb --is-shareable false
パラメータ | 説明 |
--instance-id |
「5.2 ブロック・ボリュームの作成」で作成したブロック・ボリュームをアタッチする現用系/待機系インスタンスのOCID |
--type |
「5.5 ブロック・ボリュームのデタッチ」で現用系/待機系インスタンス用に控えた[attachment-type]の値 |
--volume-id |
「5.2 ブロック・ボリュームの作成」で現用系/待機系インスタンス用に作成したブロック・ボリュームのOCID |
--device |
「5.5 ブロック・ボリュームのデタッチ」で現用系/待機系インスタンス用に控えた[device]の値 |
--is-shareable |
「5.5 ブロック・ボリュームのデタッチ」で現用系/待機系インスタンス用に控えた[is-shareable]の値 |
OCIコンソールなどで、現用系/待機系の両インスタンスにブロック・ボリュームがアタッチされていることを確認してください。
5.7 現用系/待機系インスタンスの起動
Clientで以下のコマンドを実行し、現用系/待機系の両インスタンスを起動します。
> oci compute instance action --instance-id ocid1.instance.oc1.ap-tokyo-1.xxxxxxxxxx --action start
パラメータ | 説明 |
--instance-id |
現用系/待機系インスタンスのOCID |
5.8 ミラーディスクの設定確認
起動した現用系/待機系の両インスタンスで、リストアしたクラスターパーティションやデータパーティションのデバイスファイル名をlsblkコマンドなどで確認します。本検証ではOSの停止→起動を行った際に、ミラーパーティションのデバイスファイル名がsdb→sdaに変更されましたが、一貫性のあるデバイス・パスを用いてミラーディスクリソースの設定を行ったため、クラスタパーティションデバイス名とデータパーティションデバイス名の設定は変更する必要はありません。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part ← クラスタパーティション(デバイス名がsdb1から変更)
└─sda2 8:2 0 4G 0 part ←データパーティション(デバイス名がsdb2から変更)
sdb 8:16 0 46.6G 0 disk
├─sdb1 8:17 0 100M 0 part /boot/efi
├─sdb2 8:18 0 2G 0 part /boot
└─sdb3 8:19 0 44.5G 0 part
├─ocivolume-root 253:0 0 29.5G 0 lvm /
└─ocivolume-oled 253:1 0 15G 0 lvm /var/oled
# ls -l /dev/oracleoci/oraclevd*
lrwxrwxrwx 1 root root 6 Jul 22 03:06 /dev/oracleoci/oraclevda -> ../sdb
lrwxrwxrwx 1 root root 7 Jul 22 03:06 /dev/oracleoci/oraclevda1 -> ../sdb1
lrwxrwxrwx 1 root root 7 Jul 22 03:06 /dev/oracleoci/oraclevda2 -> ../sdb2
lrwxrwxrwx 1 root root 7 Jul 22 03:06 /dev/oracleoci/oraclevda3 -> ../sdb3
lrwxrwxrwx 1 root root 6 Jul 22 03:06 /dev/oracleoci/oraclevdb -> ../sda
lrwxrwxrwx 1 root root 7 Jul 22 03:06 /dev/oracleoci/oraclevdb1 -> ../sda1 ← クラスタパーティション
lrwxrwxrwx 1 root root 7 Jul 22 03:06 /dev/oracleoci/oraclevdb2 -> ../sda2 ←データパーティション
もしミラーディスクリソースで設定したデバイスファイル名から変わっている場合は、以下の手順を参考にしてミラーディスクの設定を変更します。
Cluster WebUIに接続し、「設定モード」に切り替えます。
ミラーディスクリソースのプロパティにおいて[詳細]タブの[データパーティションデバイス名]と[クラスターパーティションデバイス名]に正しいデバイスファイル名を入力します。入力後、設定の反映を実行します。
5.9 リストア事後処理コマンドの実行(現用系/待機系インスタンス再起動)
現用系/待機系の両インスタンスで以下のコマンドを実行します。
# clprestore.sh --post --skip-copy
Mirror info will be set as default.
The main handle on initializing mirror disk <md> success.
Initializing mirror disk complete.
clprestore.sh : Changing the setting of cluster services to Auto Startup.
clprestore.sh : Rebooting...
コマンドを実行すると、自動的にCLUSTERPROの各種サービスの自動起動をオンにして、インスタンスを再起動します。
今回は、同じブロック・ボリュームのバックアップから、現用系/待機系インスタンス両方のミラーディスクに使用するブロック・ボリュームを作成したため、クラスタパーティション、データパーティションの中身は同じものとなりミラーディスクのフルコピーは不要となります。clprestoreコマンドを--skip-copyオプション付きで実行することでフルコピーが省略され、ミラーディスクが正常な状態で起動します。
5.10 リストア結果の確認
CLUSTERPRO Xが正常に起動し、ミラーディスクリソースのステータスが正常になっていることを確認します。現用系、または待機系インスタンスで「clpmdstat --mirror md」コマンドを実行します。
リストアにより、バックアップ時点のデータが復旧していることを確認します。必要に応じて待機系インスタンスに切り替えて、フェールオーバーグループや各サービスの動作に問題がないことを確認し、リストア作業を終了します。
まとめ
今回は ブロック・ボリュームのバックアップ機能を利用してミラーディスクのバックアップ・リストアする手順をご紹介しました。簡易的に、バックアップの取得、リストアが実施できる点は、非常に有用だと思います。
ミラーディスクは業務の重要なデータを保管することが多いため、障害や作業ミスなどでデータが破壊・削除されるトラブルに備えたバックアップ手順の整備は運用上必須といえます。実際の運用にあたっては、CLUSTERPRO X メンテナンスガイド の「第2章 保守情報」に記載されているバックアップ・リストア手順もあわせてご覧ください。
お問い合わせ