#chiroito ’s blog

Java を中心とした趣味の技術について

ASMの環境移行(シングルノード)

経緯

自宅のストレージサーバにはデータ用、VMイメージ用としてそれぞれ2つのディスクをRAID1でミラーリングして使用していましたが、この構成ではディスク全体のI/Oや容量を効率的に利用できていませんでした。
容量管理としてLVMなどのボリュームマネージャやを使用してRAID1+LVMとする事も考えましたが、管理するツールが複数にも関わらずこれではI/Oの効率化は出来ませんでした。
そのため冗長性管理とボリューム管理、リバランスによってI/Oの効率化まで行えるACFSを使ってみました。

目標:

今回の構成では複数台構成ではなくシングルノードで構成し、ディスク以外が原因でサーバが壊れた場合を想定してディスクはそのままで新しい環境へ移行する方法を記載します。

移行先でもディスクをそのまま使う構成の場合は特にバックアップをする情報も無く簡単に移行できます。

環境:

今回、環境は移行元と移行先共に同じ構成にしています。
別にデータ用のディスクが入っていれば他は異なる環境でも問題ありません。(たぶん)

VM(移行元と移行先)
CPU:1つ
メモリ:1536MB
NIC:1つ
ディスク:
OS用(xvda):15GB(スワップ含む)
ASM管理用(sda):1GB(OCRやVoteなど)
データ用(xvdb,xvdc):5GB×2

移行先の作成

移行元からDATA用のディスクを抜き取ります。
ASM管理用のディスクは使用してもしなくても良いです。
使用した場合でも一度情報を削除します。
# パーティションの確認(DATA用のパーティションがあるか確認しましょう)
[root@移行先]fdisk -l

# ASMディスクの確認(何も表示されません)
[root@移行先]oracleasm listdisks

# ディスクのスキャン
[root@移行先]oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
Instantiating disk "VOL1"
Instantiating disk "VOL2"
Instantiating disk "ENVDISK"

# ASMディスクの確認
[root@移行先]oracleasm listdisks
ENVDISK
VOL1
VOL2

# ASM管理用ディスクの削除(管理用のディスクを再利用する場合は必要)
[root@移行先]oracleasm deletedisk ENVDISK
Clearing disk header: done
Dropping disk: done

# ASMディスクの確認
[root@移行先]oracleasm listdisks
VOL1
VOL2

# ASM管理用ディスクの追加
[root@移行先]oracleasm createdisk ENVDISK /dev/sda1
Writing disk header: done
Instantiating disk: done

# ASMディスクの確認
[root@移行先]oracleasm listdisks
ENVDISK
VOL1
VOL2
ASMインスタンスを作成します。
移行元で作成したDATA用ディスクグループやボリュームはインスタンス作成時に認識されます。
DATA用ディスクグループのサイズは0になっていますがマウントを行うと正しく認識されます。
また、マウントポイントの登録を行う事によって移行先の環境でもマウント可能になります。
[grid@移行先]cd /u01/app/11.2.0/grid/bin
[grid@移行先]./asmca

おわりに

お分かりの通りこの方法だとASM管理用のASMディスク(手順のENVDISK)が必要になってしまいます。
これがなんか勿体無いです。
また、asmcaで新しいASMインスタンスを作成しているので完全な移行ではありません。
このASM管理用ディスクグループにある管理情報などをバックアップ・リカバリすれば完全な移行は可能であると考えられます。(asmcmdやocrconfigなどで)
今回はデータが消えていなければ良いのでそこまでの完全性は求めておらず手順22行目以降の処理で代替としています。(家で使うのでそこまでの完全性は求めていません)

時間があれば他の環境・制約でも行いたいと思います。

参考

Oracle Databaseストレージ管理者ガイド11gリリース2(11.2)
また、助言を下さいました@nkjmさんに感謝します。nkjmkzk.net