技術ブログ
目次
Oracle ACE Proの渡部です。 この記事は、 JPOUG Advent Calendar 2023 5日目の記事です。
KVMを「コーソル流」に使うためのTipsについて書きます。
弊社コーソルは、Oracle DatabaseやDbvisit Standbyなどの製品販売、製品導入、製品サポートなどの業務を行っています。これらの業務を遂行するには、製品を稼働させて動作を確認するための検証環境が必要です。
弊社では検証環境の仮想化基盤として、2010年ごろからOracle VM for x86を使用してきました。
コーソル検証環境ではOracle VMを積極的に活用しています
Oracle VM 3.xでのOracle VM Managerとの付き合い方
しかし、2022年ごろ(?)からOracle VM for x86の先行きが怪しくなってきたため、仮想化基盤をOracle Linux 9のKVMに切替えています。
この記事では、KVMを「コーソル流」に使うためのTipsについて書きます。 参考になる方は少ないかもしれませんが・・・ 少なくてもお役に立つ方がいらっしゃれば幸いです!
KVMにおいて、VMはいくつかの種類のファイルから構成されます。
一般的なKVMの使用形態では、これらのファイルは以下に分かれて配置されます。
「コーソル流 KVM環境」では、VM単位(正確には、VMセット単位。Oracle RACなど複数VMで構成される場合があるため)でバックアップなどの管理作業を簡単に行えるように、あるVMセットに関連するファイルは1つのディレクトリにまとめて配置しています。
このため、ファイル種別ごとに以下の対処を行っています。
一般的なKVMの使用形態では、virsh startでVMを起動します。 このとき、Domain XMLファイルには、/etc/libvirt/qemu/ に保存したものが使われます。
しかし、「コーソル流 KVM環境」では、Domain XMLファイルとして、VMセット用のディレクトリに保存したものを使いたいため、virsh startではなく、virsh createを使用してVMを起動します(いわゆる"transient"なVMの起動方法)。
製品の検証作業には、試行錯誤が伴います。これを円滑に進めるために、VMのスナップショット機能の活用は必要不可欠と考えています。
たとえば、作業実施前にスナップショットを取得しておけば、作業を最初からやり直したい場合は、取得したスナップショットをロールバックして元の状態に戻して、再度作業を実施することができるなどです。
KVMがサポートする仮想ディスク形式の1つであるQCOW2形式はスナップショットをサポートしています。
しかし、「コーソル流 KVM環境」では仮想ディスク形式として、RAW形式を使用し、xfs reflinkを使用してスナップショット機能を実現しています。
これは以下の理由からです。
Oracle RACを構築するためには、共有ディスクが必要です。
ただ、私が検証したかぎり、特に配慮なく共有ディスクを構成すると、あるディスクが、各ノードで異なるデバイスパスで認識される場合があるようでした。
一般にこれではOracle RACは構成できませんので、以下のURLを参考に、Domain XMLファイルで、仮想ディスクにSerial numberを設定しておき、これをキーにudevルールでデバイスファイルを作るようにしました。
KVMに限った話ではありませんが、SSDを適切に使うには、適切なタイミングでTrimを実行する必要があります。
VM内でファイルを削除した場合などに、Trimが実行されるよう、Domain XMLファイルの<disk>セクションに、discard='unmap'を指定しています。
詳細は以下のURLをご覧ください。
アイドル時にWindows VMのCPU使用率が高い問題を軽減できます。
JPOUG Advent Calendar 2023 の明日6日目の記事は、chasunumaさんに執筆いただく予定です。chasunumaさん、よろしくお願いいたします!