株式会社コーソル

コーソルDatabaseエンジニアのブログ

技術ブログ

[小ネタ] コーソル流 KVM環境Tips集

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について書きます。 参考になる方は少ないかもしれませんが・・・ 少なくてもお役に立つ方がいらっしゃれば幸いです!

VM関連ファイルを1つのディレクトリにまとめる

KVMにおいて、VMはいくつかの種類のファイルから構成されます。

一般的なKVMの使用形態では、これらのファイルは以下に分かれて配置されます。

  • Domain XMLファイル → /etc/libvirt/qemu/
  • 仮想ディスクのイメージファイル → ストレージプール

「コーソル流 KVM環境」では、VM単位(正確には、VMセット単位。Oracle RACなど複数VMで構成される場合があるため)でバックアップなどの管理作業を簡単に行えるように、あるVMセットに関連するファイルは1つのディレクトリにまとめて配置しています。

このため、ファイル種別ごとに以下の対処を行っています。

  • Domain XMLファイル → virsh dumpxmlでXMLファイルをdumpし、不要箇所を削除した上で、VMセット用のディレクトリに保存
  • 仮想ディスクのイメージファイル → ストレージプールからVMセット用のディレクトリに移動

virsh createでVMを起動

一般的なKVMの使用形態では、virsh startでVMを起動します。 このとき、Domain XMLファイルには、/etc/libvirt/qemu/ に保存したものが使われます。

しかし、「コーソル流 KVM環境」では、Domain XMLファイルとして、VMセット用のディレクトリに保存したものを使いたいため、virsh startではなく、virsh createを使用してVMを起動します(いわゆる"transient"なVMの起動方法)。

xfs reflink機能でVMのスナップショットを取得する

製品の検証作業には、試行錯誤が伴います。これを円滑に進めるために、VMのスナップショット機能の活用は必要不可欠と考えています。

たとえば、作業実施前にスナップショットを取得しておけば、作業を最初からやり直したい場合は、取得したスナップショットをロールバックして元の状態に戻して、再度作業を実施することができるなどです。

KVMがサポートする仮想ディスク形式の1つであるQCOW2形式はスナップショットをサポートしています。

しかし、「コーソル流 KVM環境」では仮想ディスク形式として、RAW形式を使用し、xfs reflinkを使用してスナップショット機能を実現しています。

これは以下の理由からです。

  • Oracle VM for x86使用時にOCFS2 reflink機能を使用しており、これを前提にした過去のスクリプト資産を生かせるため
  • シンプルな仕組みの方がトラブルが少ないであろうという「勘」

共有ディスクの認識ズレ回避

Oracle RACを構築するためには、共有ディスクが必要です。

ただ、私が検証したかぎり、特に配慮なく共有ディスクを構成すると、あるディスクが、各ノードで異なるデバイスパスで認識される場合があるようでした。

一般にこれではOracle RACは構成できませんので、以下のURLを参考に、Domain XMLファイルで、仮想ディスクにSerial numberを設定しておき、これをキーにudevルールでデバイスファイルを作るようにしました。

SSDのTrim対応

KVMに限った話ではありませんが、SSDを適切に使うには、適切なタイミングでTrimを実行する必要があります。

VM内でファイルを削除した場合などに、Trimが実行されるよう、Domain XMLファイルの<disk>セクションに、discard='unmap'を指定しています。

詳細は以下のURLをご覧ください。

Hyper-V enlightenments

アイドル時にWindows VMのCPU使用率が高い問題を軽減できます。

明日の記事

JPOUG Advent Calendar 2023 の明日6日目の記事は、chasunumaさんに執筆いただく予定です。chasunumaさん、よろしくお願いいたします!

プロフィール

On7tWW6m1Ul4

渡部 亮太

・Oracle ACE
・AWS Certified Solutions Architect - Associate
・ORACLE MASTER Platinum Oracle Database 11g, 12c 他多数

カテゴリー

アーカイブ