クローン: 既存のKVMインスタンス

システム管理者は、既存のKVMインスタンスの構成をクローニングすることで、KVMインスタンスを簡単に作成できます。システム管理者は、クローニングの使用方法に応じて、ソースKVM構成をクローニングする前に準備するか、ソースKVMインスタンスと同じ構成でKVMクローンを作成できます。

ノート:

1つのKVMインスタンスから複数のクローンを作成する場合は、クローニング前にソース構成を準備することをお薦めします。ソース構成の準備では、構成を検査して、クローン構成に適用されず、クローンに障害が発生したり正しく動作しなかったりする原因となる可能性がある固有のパラメータを削除できます。

KVMクローンのクローニングまたは作成のためのKVMインスタンスの準備方法については、次のトピックを参照してください:

ノート:

CLIを使用してKVMクローンを作成することに加えて、Cockpit Webコンソールを使用してKVMインスタンスをクローニングできます。詳細は、『Oracle Linux: Cockpit Webコンソールの使用』VMのクローニングを参照してください。

KVMのクローニングの準備: virt-sysprepの使用

システム準備スクリプト・ツール(virt-sysprep)を使用して、クローニング用のソースKVMディスク構成を準備する方法について説明します。

ノート:

virt-sysprepツールは、ディスク・イメージ上のSSHホスト・キー、永続ネットワーク構成およびユーザー・アカウントを削除することで、クローニング用にKVM構成を準備するのに役立ちます。また、SSHキー、ユーザーまたはロゴを追加することもできます。virt-sysprepの詳細は、https://libguestfs.org/virt-sysprep.1.htmlを参照してください。
前提条件
  • ソースKVM上のすべての重要なデータがバックアップされます。

    virt-sysprepでは、ディスク・イメージはコピーされず、その場所で変更されることに注意してください。ソースKVMの構成をそのまま維持するには、クローンを作成します。詳細は、「virt-cloneコマンドを使用したKVMクローンの作成」を参照してください。

  • システム準備ツール(virt-sysprep)がホストにインストールされている必要があります。
    yum install /usr/bin/virt-sysprep
  • ソースKVMを停止する必要があります。
  • ソースKVMディスク・イメージの場所が必要です。また、ディスク・イメージの所有者であり、ディスク書込み権限を持っている必要があります。

virt-sysprepツールを使用して、クローニング用のソースKVMディスク・イメージ構成を準備するには、次の手順に従います。

  1. KVMディスク・イメージのrootの所有者としてログインします。次に例を示します:
    whoami
    root
  2. クローニング用にソースKVMディスク・イメージを準備するには、次のvirt-sysprepコマンド構文を使用します。
    virt-sysprep -a [/var/lib/libvirt/images/a-replace me -my-kvm.qcow2]
    [   0.0] Examining the guest ...
    [   7.3] Performing "abrt-data" ...
    [   7.3] Performing "backup-files" ...
    [   9.6] Performing "bash-history" ...
    [   9.6] Performing "blkid-tab" ...
    [...]
    説明:
    • [/var/lib/libvirt/images/replace me-my-kvm.qcow2]をソースKVMディスク・イメージ・パスに置き換えます。
  3. virt-sysprepツールを使用して、準備済のディスク・イメージを検査します。使用可能なオプションのリストを表示するには、virt-sysprep --helpと入力します。
    詳細は、Linuxのvirt-sysprep(1)のマニュアル・ページを参照してください。
  4. クローニング用のディスクイメージを準備したら、準備済のKVMディスク構成を使用してクローンを作成します。
    詳細は、「virt-cloneコマンドを使用したKVMクローンの作成」を参照してください。

    ノート:

    クローンの最初の起動時に、ホスト名を変更することをお薦めします。

KVMのクローニングの準備: 手動

クローニング用のソースKVM構成を手動で準備する方法について説明します。
前提条件
  • ソースKVM上のすべての重要なデータがバックアップされます。

    ソースKVMの構成をそのまま維持するには、クローンを作成します。詳細は、「virt-cloneコマンドを使用したKVMクローンの作成」を参照してください

  • ソースKVMディスク・イメージの場所が必要です。また、ディスク・イメージの所有者であり、ディスク書込み権限を持っている必要があります。
  • ソースKVMを停止する必要があります。
  • 管理者権限。

クローニングのためにソースKVM構成を手動で準備するには、次の手順に従います。

  1. 必要に応じて、ソースKVMを構成します。次に例を示します:
    • クローンに必要なソフトウェアをインストールします。

    • オペレーティング・システムまたはシステム・アプリケーションに固有ではない必要なプロパティを構成します。

  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]

      ノート:

      NetworkManagerが使用されたか、KVMに特別な設定があった場合は、ifcfgスクリプトからすべての固有の情報が削除されていることを確認します。
  3. ULN登録の詳細を登録解除します。
    たとえば、クローンを作成するKVMゲストがULNに登録されている場合、登録を解除する必要があります。詳細は、該当するリファレンスを参照してください:
  4. sshdの公開キーと秘密キーのペアを削除します。
    たとえば、次のように入力します:
    rm -rf /etc/ssh/ssh_host_[name]
  5. 複数のマシンで実行する場合に競合の原因になる可能性のある、その他のアプリケーション固有の識別子または構成を削除します。
  6. 関連する設定構成ウィザードが最初の起動時に実行されるように構成します。
    例:
    • Oracle Linux 7の場合、最初の起動および初期設定ウィザードを有効にします:
      sed -ie 's/RUN_FIRSTBOOT=NO/RUN_FIRSTBOOT=YES/' /etc/sysconfig/firstboot
      systemctl enable firstboot-graphical
      systemctl enable initial-setup-graphical
    • Oracle Linux 8および9の場合、gnome-initial-setup-doneファイルを削除して、次回の起動時に構成ウィザードが実行されるようにKVMを構成します:
      # rm ~/.config/gnome-initial-setup-done
  7. 必要なすべての変更を行ったら、準備したKVM構成を使用してクローンを作成します。
    詳細は、「virt-cloneコマンドを使用したKVMクローンの作成」を参照してください。

    ノート:

    クローンの最初の起動時に、ホスト名を変更することをお薦めします。

virt-cloneコマンドを使用したKVMクローンの作成

virt-cloneコマンドを使用してソースKVMインスタンスをクローニングする方法について説明します。
前提条件

手順

既存のKVMインスタンスをクローニングするには、次の手順を実行します:

  1. 次のいずれかを実行します。
    • ソースKVMを元の構成でクローニングするには、次のvirt-cloneコマンド構文を使用します:
      virt-clone --orginal kvm-name --auto-clone
      たとえば、次のように入力したとします:
      virt-clone --orginal My_KVM --auto-clone
      次のような出力が表示されます。
      virt-clone --original My_KVM --auto-clone
      Allocating 'My_KVM-clone.qcow2'                            | 55.0 GB  00:02:37
      
      Clone 'My_KVM-clone' created successfully.
      この例では、virt-cloneコマンドによってソースのMy-KVM構成がコピーされ、(1) My_KVM-cloneという名前のクローンKVMゲスト、および(2) My_KVM-clone.qcow2という名前のクローン・ディスク・イメージが作成されます。

      または

    • virt-cloneコマンドを他のオプションとともに使用してソースKVMをクローニングするには、次のコマンドを入力して使用可能な構成オプションを表示します:
      virt-clone --help
      virt-cloneコマンドの使用方法の詳細は、Linuxのvirt-clone(1)のマニュアル・ページを参照してください。
  2. クローニングされたKVMインスタンスが動作していることを確認します。次に例を示します:
    • クローンがホスト上のKVMのリストに追加されていることを確認します:
      virsh list --all
      Id   Name                  State
      ---------------------------------------
      -    My_KVM          shut off
      -    My_KVM-clone    shut off
    • クローンを起動し、起動するかどうかを確認します:
      virsh start My_KVM-clone
      Domain 'My_KVM-clone' started