仮想マシン
 Computer >> コンピューター >  >> ソフトウェア >> 仮想マシン

KVM で仮想マシンのクローンを作成する方法 - チュートリアル

注:このチュートリアルでは、virt-sysprep がないことを前提としています;下記参照!

いいえ、これは virt-clone の一般的な使用法ではありません。 virt-clone は仮想マシンの複製を作成するためのかなり便利なツールですが、現在の構成では、複製されたシステムに一意の ID と MAC アドレスしか割り当てられないため、複製が起動したら、追加の微調整とカスタマイズを実行する必要があります。これは、かなり干渉しなければならない可能性があることを意味しますが、これはあなたが望んでいることではありません。

わかりました。KVM テクノロジで仮想マシンの同一のコピーを作成する別の方法を紹介します。一意のホストごとの情報を使用して、任意の数の複製がネットワーク上の個別のホストになるようにします。つまり、一度インストールしてから、必要なだけゲストのインスタンスを作成し、それぞれに独自のホスト名、MAC アドレス、IP アドレスなどを設定します。完全にスクリプト可能で、そのすべて。だから私に従ってください。

注:この画像はウィキメディアから取得したもので、CC BY 2.0 でライセンスされています。

効率の悪い方法

virt-clone について簡単に説明しましょう。これは悪いユーティリティではありませんが、その使用はディストリビューション全体で標準的ではありません。 Virtual Machine Manager の一部として GUI コンポーネントの両方を出荷するものもあれば、コマンド ライン ツールも提供するものもあります。どちらの場合も、クローンには新しい一意の ID と MAC アドレスのみが割り当てられ、その他の情報は割り当てられません。設定ファイルは /etc/libvirt/qemu に保存されます。

以下に例を示します:

今、私たちはこれを望んでいません。完璧ではありません。

クローニング + 取引ツール

さて、正しい方法です。目的の結果を得るために必要なツールはほとんどありません。実際、たった 1 つのツールであり、パーティション テーブルからデバイス マップを作成できるユーティリティ kpartx と呼ばれます。具体的には、仮想ディスクにクエリを実行することで、ゲスト マシンのパーティション マッピングを作成するために使用できます。 Linux を使用してデモンストレーションを行いますが、ほとんどの UNIX ベースのシステムで動作します。

したがって、仮想ディスクからパーティション テーブルを読み取る必要があります。まず、各マシンに独自の仮想ディスクがあるため、仮想ディスクのコピーを作成する必要があります。これは、クローン手順の 1 つの遅い手順であり、ファイルの大きさとディスクの速度によって異なります。通常、一般的な 20 GB のディスク ファイルをコピーするには数分かかります。

cp <古いディスク ファイル> <新しいディスク ファイル>

さて、パーティションテーブル:

kpartx -a <仮想ディスク ファイル>

これにより、何らかの出力が生成されます。実際、仮想マシン内に含まれる個々のパーティションごとに個別のマッパーが表示されます。たとえば、/ と /home がある場合、2 つのマッパーがあります。

kpartx -av /kvm/disk.raw
マップ loop0p1 (253:0) を追加:0 4206592 線形 /dev/loop0 2048
マップ loop0p2 (253:1) を追加:0 79677440 線形 /dev/loop0 4208640

次に、関連するデバイスをマウントし、ホストごとに変更を加えます:

mount /dev/mapper/<該当するパーティションのループバック> /mountpoint

例:

マウント /dev/mapper/loop0p1 /mnt

固有のホストの変更

ここで、仮想マシンに次の変更が必要になる可能性が高くなります:

/etc/ホスト
/etc/ホスト名

また、Debian を使用しているか RedHat/SUSE を使用しているかによって、ネットワーク構成が異なりますが、DHCP を使用している場合は必要ないかもしれません。ただし、静的 IP アドレスを使用している場合、これは必須です:

/etc/sysconfig/network/ifcfg-<デバイス>

また

/etc/network/interfaces

他の変更が必要になる場合もありますが、基本的な変更はあります。変更を保存したら、アンマウントします。次のステップは、新しいクローンの KVM 構成ファイルを編集することです。 Virtual Machine Manager を使用してマシンが自動作成された場合、XML ファイルは通常、/etc/kvm/vm または /etc/libvirt/qemu ディレクトリに保持されます。

XML ファイルの変更

まず、テンプレート構成のコピーを作成します。

ドメインの一意の ID、名前、および MAC アドレスを編集する必要があります。以前と同様に、プロシージャを完全にスクリプト化できるように、何らかの一意性ロジックを適用する必要があります。おそらく、grep、awk、およびインライン検索と sed による置換に加えて、必要に応じて適切な量の正規表現を使用して、手順を完全にスクリプト化できるようにする必要があります。当然、ハードディスク ディレクティブを正しいファイルに向ける必要もあります。

例として、必要なコマンドのセットを次に示します:

sed -i -e 's/\.*/\<\/uuid\>/uuid\>でどいめど\<\/uuid/'
file.xml

grep を使用して動作することを確認します:

sed -i -e 's/\.*/\<\/uuid\>/uuid\>でどいめど\<\/uuid/'
file.xml。 | | grep dedoimedo

デドイメド

すべてをまとめる

したがって、完全なクローン スクリプトは次のようになります。典型的な RedHat の例を示します。独自の調整を行うことができます。同様に、スクリプトの一部の部分では、パーティションの出力を解析する方法を決定するなど、独自のロジックが必要になります。さらに、XML ファイルの出力を解析し、開き括弧と閉じ括弧、引用符、およびその他の文字を削除するために、追加の作業が必要になる場合があります。

#!/ビン/バッシュ

# クローン作成中はテンプレート OS をサスペンド

virsh suspend <ドメイン>
cp <古いディスク> <新しいディスク>
virsh 再開 <ドメイン>

kpartx -a <新しいディスク>

# 関連するパーティションを読み取るロジック

mount <目的のパーティション> <マウント ポイント>

# ホスト固有のファイルの内容を解析するロジック

sed -i -e 's/古いホスト名行/新しいホスト名行/' /etc/HOSTNAME
sed -i -e 's/古いホスト名行/新しいホスト名行/' /etc/hosts
sed -i -e 's/old IP config/new IP config/' /etc/sysconfig/network/ifcfg-eth0

umount <マウントポイント>

cp /etc/kvm/vm/old.xml /etc/kvm/vm/new.xml

# 新しい uuid、名前、mac などを作成するロジック
# XML ファイルを正しく解析するためのロジック

sed -i -e 's/old uuid/new uuid/' /etc/kvm/vm/new.xml
sed -i -e 's/旧名/新名/' /etc/kvm/vm/new.xml
sed -i -e 's/old mac/new mac/' /etc/kvm/vm/new.xml
sed -i -e 's/古いディスク/新しいディスク/' /etc/kvm/vm/new.xml

virsh create /etc/kvm/vm/new.xml

0 を出る

これで完了です。起動してお楽しみください!

最もありそうな未来:virt-sysprep

ボックスで virt-sysprep を使用できる場合、このチュートリアル全体は役に立たなくなります。これは、おそらく、お気に入りのオペレーティング システムの新しいエディションのいずれかを使用していることを意味します。ただし、ビジネス環境ではほとんどの場合そうではないため、ほとんどのシステム管理者はこのツールを利用できません。使用する機会があれば、基本的なクローン ツールに非常に便利な改善が加えられます。元のドキュメントの引用:

Virt-sysprep は仮想マシンをリセットまたは構成解除して、そこからクローンを作成できるようにします。このプロセスの手順には、SSH ホスト キーの削除、永続的なネットワーク MAC 構成の削除、およびユーザー アカウントの削除が含まれます。各ステップは、必要に応じて有効または無効にできます。 Virt-sysprep は、ゲストまたはディスク イメージをその場で変更します。ゲストをシャットダウンする必要があります。ゲストの既存の内容を保持したい場合は、最初にディスクをコピーまたは複製する必要があります。

この便利なツールについては、別のチュートリアルで個別に説明します。

続きを読む

KVM の楽しみ方の詳細:

KVM + VirtualBox の調和

KVM ブリッジ ネットワークのチュートリアル

KVM ストレージとネットワーク管理

ESXi マシンのクローンを作成する方法は次のとおりです - コンセプトは似ています

仮想マシン ディスク イメージ ツールのもう 1 つの優れたリソース - libguestfs

結論

これは非常にシンプルでエレガントなチュートリアルです。ほとんどが手動のクローン作成手順を他のツールで補完するので、非常に便利だと思います。単一の BASH スクリプトに簡単に配置できる一連のコマンドを取得すると、Bob が叔父になります。

より深刻な点として、KVM 構成とファイルの場所、virt-clone の非常に初歩的な使用法、仮想マシン ディスクをマウントする方法、partx を使用して関連するパーティションのデータを編集する方法 (ネットワークとホストの構成を含む) についてもう少し学びました。仮想ドメインに一意のフィールドを割り当てる方法。また、libguestfs もあります。さらに、その他の非常に役立つガイドもいくつかあります。全体として、5 分間の作業としては悪くありません。

最後に、virt-sysprep を使用するとクローン作成が非常に簡単になりますが、手動の方法は少し複雑ですが、誰にでもできる方法です。これを使用して、必要なことは何でも行うことができ、既存のコマンド ライン スイッチとオプションのサブセットに限定されません。常に機能し、常に完全にスクリプト化できます。素晴らしい。

まあ、それがすべてだろうと思います。

乾杯。


  1. 仮想マシンでの 3D アクセラレーション - パート 2:VirtualBox &OpenGL - チュートリアル

    これは、仮想マシンでの 3D 仮想化の構成と使用に特化した 3 つの記事の 2 番目です。今日は、Windows または Linux ホストにインストールされた VirtualBox で実行されている Windows 仮想マシンの OpenGL アプリケーション (およびゲーム) の 3D アクセラレーションを有効にする方法を学習します。 最初の記事では、VMware 製品を使用して、Windows で DirectX プログラムの 3D アクセラレーションを有効にする方法について説明しました。ホスト プラットフォームの選択は問題ではありませんでした。 Windows ホストと Linux

  2. 仮想マシンでの 3D アクセラレーション - パート 1:VMware &DirectX - チュートリアル

    仮想化されたオペレーティング システムを既存のホスト上で実行することは、優れたアイデアです。楽しく、クールで、実際のプラットフォームにコミットする前にソフトウェアを試すことができ、通常はあえてしないことを行うことができ、非常に大きな柔軟性が得られ、展開のコストが大幅に削減されます。 しかし、ほとんどの仮想化ソフトウェアに欠けているのは、ゲスト オペレーティング システムの 3D アクセラレーションです。または不足していた...仮想マシンでの 3D アクセラレーションが現実のものになりました。 はじめに この一連の記事では、ゲスト OS で 3D アクセラレーションを有効にする