第4章 仮想マシンのクローン作成

ゲストのコピーを作成する場合、2 種類のゲスト仮想マシンのインスタンスが使われます。
  • クローン は単一の仮想マシンのインスタンスです。クローンは、同一の仮想マシンのネットワークを設定するのに使うことができ、別の場所に分散させることもできます。
  • テンプレート は、クローン作成元として使われるように作られた仮想マシンのインスタンスです。テンプレートから複数のクローンを作成し、それぞれのクローンに若干の変更を加えることができます。このことは、これらの変更がシステムに及ぼす影響を把握する場合に役立ちます。
クローンおよびテンプレートは、共に仮想マシンのインスタンスです。両者の違いは、その使われ方です。
作成したクローンが正常に機能するためには、クローンを作成する前にクローン作成元の仮想マシンに固有な情報および設定を削除する必要があります。削除すべき情報は、クローンの使われ方によって異なります。
削除すべき情報および設定は、以下に示すレベルのいずれかに属します。
  • プラットフォームレベル の情報および設定は、仮想化ソリューションによって仮想マシンに割り当てられたものです。ネットワークインターフェースカード (NIC) の番号およびその MAC アドレス等が含まれます。
  • ゲストオペレーティングシステムレベル の情報および設定は、仮想マシン内で設定されたものです。SSH キー等が含まれます。
  • アプリケーションレベル の情報および設定は、仮想マシンにインストールされたアプリケーションによって設定されたものです。アクティベーションコードおよび登録情報などが含まれます。

    注記

    本章では、アプリケーションレベルの情報および設定を削除する手順については説明しません。情報および考え方がアプリケーションごとに異なるためです。
したがって、一部の情報および設定は仮想マシン内で削除する必要があり、一方、仮想化環境 (仮想マシンマネージャーまたは VMware 等) を使って仮想マシンから削除しなければならない情報および設定もあります。

注記

ストレージボリュームのクローン作成についての情報は、「virsh を使用したストレージボリュームの作成」 を参照してください。

4.1. 仮想マシンのクローン作成準備

仮想マシンのクローンを作成する前に、そのディスクイメージの virt-sysprep ユーティリティーを実行するか、以下の手順を使って準備を行う必要があります。

手順4.1 仮想マシンのクローン作成準備

  1. 仮想マシンの設定

    1. クローンまたはテンプレートに使われる仮想マシンを構築します。
      • クローンで必要となるソフトウェアをすべてインストールします。
      • オペレーティングシステムに固有ではない設定をすべて定義します。
      • アプリケーションに固有ではない設定をすべて定義します。
  2. ネットワーク設定の削除

    1. 以下のコマンドを使って、永続的な udev ルールをすべて削除します。
      # rm -f /etc/udev/rules.d/70-persistent-net.rules

      注記

      udev ルールが削除されない場合は、1 番目の NIC の名前が eth0 ではなく eth1 の可能性があります。
    2. /etc/sysconfig/network-scripts/ifcfg-eth[x] を以下のように編集して、ifcfg スクリプトから固有のネットワーク情報を削除します。
      1. HWADDR および Static 行を削除します

        注記

        HWADDR と新しいゲストの MAC アドレスが一致していないと、ifcfg は無視されます。したがって、ファイルから HWADDR を削除することが重要です。
        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
        # Remove any other *unique* or non-desired settings, such as UUID.
      2. HWADDR または固有の情報が削除され、DHCP 設定が維持されていることを確認します。
        DEVICE=eth[x]
        BOOTPROTO=dhcp
        ONBOOT=yes
      3. ファイルに以下の行が含まれていることを確認します。
        DEVICE=eth[x]
        ONBOOT=yes
    3. 以下のファイルが存在する場合は、内容が同じであることを確認します。
      • /etc/sysconfig/networking/devices/ifcfg-eth[x]
      • /etc/sysconfig/networking/profiles/default/ifcfg-eth[x]

      注記

      仮想マシンで NetworkManager または何らかの特殊な設定が使われた場合には、その他すべての固有の情報が ifcfg スクリプトから削除されていること確認します。
  3. 登録情報の削除

    1. 以下のいずれかの方法で、登録情報を削除します。
      • Red Hat Network (RHN) に登録されたゲスト仮想マシンの場合は、以下のコマンドを実行します。
        # rm /etc/sysconfig/rhn/systemid
      • Red Hat サブスクリプションマネージャー (RHSM) に登録されたゲスト仮想マシンの場合:
        • クローン元の仮想マシンが使われない場合は、以下のコマンドを実行します。
          # subscription-manager unsubscribe --all
          # subscription-manager unregister
          # subscription-manager clean
        • クローン元の仮想マシンが使われる場合は、以下のコマンドだけを実行します。
          # subscription-manager clean

          注記

          元の RHSM プロファイルはポータルに残されます。
  4. その他の固有情報の削除

    1. 以下のコマンドを使って、sshd パブリック/プライベートキーのペアを削除します。
      # rm -rf /etc/ssh/ssh_host_*

      注記

      SSH キーを削除することで、SSH クライアントがこれらのホストを信頼しないという問題を防ぐことができます。
    2. アプリケーション固有の識別子、または複数のマシンで実行した場合に競合する恐れのある設定をすべて削除します。
  5. 次回起動時に設定ウィーザードを実行するように仮想マシンを設定

    1. 以下のいずれかの方法で、次回起動時に適切な設定ウィザードが実行されるように、仮想マシンを設定します。
      • Red Hat Enterprise Linux 6 およびそれ以前のバージョンでは、以下のコマンドを使って、ルートファイルシステムに .unconfigured という名前の空ファイルを作成します。
        # touch /.unconfigured
      • Red Hat Enterprise Linux 7 では、次のコマンドを実行して first boot および initial-setup ウィザードを有効にします。
        # sed -ie 's/RUN_FIRSTBOOT=NO/RUN_FIRSTBOOT=YES/' /etc/sysconfig/firstboot
        # systemctl enable firstboot-graphical
        # systemctl enable initial-setup-graphical

      注記

      次回起動時に実行されるウィザードは、仮想マシンから削除された設定により異なります。また、クローンの初回起動時に、ホスト名を変更することを推奨します。