仮想マシンのクローニング

2つのタイプのVMインスタンスが、VMのコピーの作成に使用できます。

  • クローン

    クローンは単一のVMのインスタンスです。クローンを使用すると同じVMのネットワークを設定できます。このVMはオプションで別の宛先に分散できます。

  • テンプレート

    テンプレートは、クローニングのソースとして使用できるVMのインスタンスです。テンプレートを使用すると複数のクローンを作成できます。オプションとして、各クローンは変更できます。

クローンとテンプレートの違いは、それらの使用方法にあります。作成したクローンが正常に機能するためには、クローニング前に、クローニングするVMに固有の情報を削除して固有の構成を変更します。この情報と構成は、クローンの使用方法によって異なります。次に例を示します。

  • ネットワーク・インタフェース・カード(NIC)の数やMACアドレスなど、VMに割り当てられたもの。

  • SSHキーなど、VMで構成されたもの。

  • アクティブ化コードや登録情報など、VMにインストールされたアプリケーションで構成されたもの。

VMから一部の情報と構成を削除する必要があります。その他の情報と構成は、仮想化環境を使用してVMから削除する必要があります。

クローニングに向けた仮想マシンの準備

VMのクローニング前に、ディスク・イメージでvirt-sysprepユーティリティを実行するか、次のステップを実行することで、そのVMを準備する必要があります。

ノート:

virt-sysprepユーティリティを使用してVMを準備する方法および使用可能なオプションを理解する方法の詳細は、https://libguestfs.org/virt-sysprep.1.htmlを参照してください。

  1. クローンまたはテンプレートに使用するVMを構築します。

    1. 必要なソフトウェアをインストールします。

    2. オペレーティング・システムおよびアプリケーションの固有でない設定を構成します。

  2. ネットワーク構成の永続的または固有の詳細を削除します。

    1. 次のコマンドを実行して、永続的なudevのルールを削除します。

      rm -f /etc/udev/rules.d/70-persistent-net.rules

      ノート:

      udevのルールを削除しないと、最初のNICの名前はeth0ではなくeth1になります。

    2. /etc/sysconfig/network-scripts/ifcfg-eth[x]を変更して、HWADDRと静的な行および固有または不要な設定(UUIDなど)を削除します。次に例を示します。

      DEVICE=eth[x]
      BOOTPROTO=none
      ONBOOT=yes
      #NETWORK=10.0.1.0       <- REMOVE
      #NETMASK=255.255.255.0  <- REMOVE
      #IPADDR=10.0.1.20       <- REMOVE
      #HWADDR=xx:xx:xx:xx:xx  <- REMOVE
      #USERCTL=no             <- REMOVE

      変更後のファイルには、HWADDRエントリや固有の情報が含まれていないことと、少なくとも次の行が含まれていることが必要です。

      DEVICE=eth[x]
      ONBOOT=yes

      重要:

      HWADDRエントリの削除が必要な理由は、そのアドレスが新しいゲストのMACアドレスと一致しないと、ifcfgが無視されてしまうためです。

    3. /etc/sysconfig/networking/profiles/default/ifcfg-eth[x]ファイルと/etc/sysconfig/networking/devices/ifcfg-eth[x]ファイルがある場合は、それらの内容が/etc/sysconfig/network-scripts/ifcfg-eth[x]ファイルと同じになっていることを確認します。

      ノート:

      その他の固有情報がifcfgファイルから削除されていることを確認します。

  3. クローンを作成するゲストVMがULNに登録されている場合は、その登録を解除する必要があります。詳細は、『Oracle Linux: Unbreakable Linux Networkユーザーズ・ガイドfor Oracle Linux 6 and Oracle Linux 7』を参照してください。

  4. 次のコマンドを実行して、sshdの公開/秘密キー・ペアを削除します。

    rm -rf /etc/ssh/ssh_host_*

    ノート:

    sshキーを削除することで、sshクライアントがホストを信頼しないという問題を回避します。

  5. 複数のマシンで実行する場合に競合の原因になる可能性のある、その他のアプリケーション固有の識別子または構成を削除します。

  6. 次回ブート時に関連する構成ウィザードが実行されるようにVMを構成します。

    • Oracle Linux 6以前の場合は、次のコマンドを実行して、rootファイル・システムに.unconfiguredという空のファイルを作成します。

      touch /.unconfigured
    • Oracle Linux 7の場合は、次のコマンドを実行して、初回ブートと初期設定のウィザードを有効にします。

      sed -ie 's/RUN_FIRSTBOOT=NO/RUN_FIRSTBOOT=YES/' /etc/sysconfig/firstboot
      systemctl enable firstboot-graphical
      systemctl enable initial-setup-graphical

      ノート:

      次回のブートで実行されるウィザードは、VMから削除した構成によって異なります。また、クローンの初回ブート時には、ホスト名を変更するようにお薦めします。

重要:

クローニングの続行前に、VMを停止します。VMは、virt-cloneまたはvirt-managerを使用してクローニングできます。

virt-cloneコマンドを使用した仮想マシンのクローニング

virt-cloneを使用すると、コマンドラインからVMをクローニングできますが、virt-cloneが正常に完了するにはroot権限が必要です。virt-cloneコマンドには、コマンドラインで渡せるいくつかのオプションがあります。たとえば、全般オプション、ストレージ構成オプション、ネットワーク構成オプションなどのオプションがあります。--originalのみが必須です。

virt-clone --helpを実行してオプションの完全なリストを表示するか、virt-clone(1)マニュアル・ページを参照してください。

次のコマンドを実行して、デフォルトの接続でVMをクローニングします。新しい名前とディスク・クローン・パスは自動的に生成されます。

virt-clone --original vm-name --auto-clone

次のコマンドを実行して、複数のディスクを備えたVMをクローニングします。

virt-clone --connect qemu:///system --original vm-name --name vm-clone-name \
--file /var/lib/libvirt/images/vm-clone-name.img --file /var/lib/libvirt/images/vm-clone-data.img

仮想マシン・マネージャを使用した仮想マシンのクローニング

VM Managerを使用してゲストVMをクローニングするには、次のステップを実行します。

  1. 次のいずれかの方法で、VM Managerを開始します。

    • システム・ツール・メニューからVM Managerを開きます。

    • rootとしてvirt-managerコマンドを実行します。

  2. ゲストVMのリストから、クローニングするゲストVMを右クリックし、「クローン」をクリックします。

    「VMのクローニング」ウィンドウが開きます。

  3. 「名前」フィールドで、クローンの名前を変更するか、デフォルト名を使用します。

  4. 「ネットワーキング」の情報を変更するには、「詳細」をクリックします。次に、クローンの新しいMACアドレスを入力して、「OK」をクリックします。

  5. クローニングしたゲストVMのディスクごとに、次のいずれかのオプションを選択します。

    • このディスクのクローニング - クローニングされたゲストVMのディスクがクローニングされます。

    • guest-virtual-machine-nameとのディスクの共有 - クローニングするゲストVMとそのクローンによってディスクが共有されます。

    • 詳細 - ディスクの新しいパスを選択する場合に、ストレージ・パスの変更ウィンドウを開きます。

  6. 「クローン」をクリックします。