====== QEMU/KVM 仮想マシンのクローン ====== {{tag>qemu-kvm libvirt centos7}} どのコマンドをどの順番で実施するか色々とやり方はあるが、ここでの手順は: - ベースとなる仮想マシン''centos7-origin''を作成 - ベースから各種設定を削除したテンプレート仮想マシン''centos7-template''を作成 - テンプレートから実際に使用する仮想マシン''centos7a''をクローン ベースとテンプレートを分けてベースを残しているのは、テンプレートの再作成が簡単そうだから。 ===== 1. ベース仮想マシンの作成 ===== CentOS 7をコンソールでインストール。 virt-install --name centos7-origin --memory 2048 --vcpus 1 --disk size=8 --os-variant centos7.0 --location /var/lib/libvirt/images/CentOS-7-x86_64-Minimal-2009.iso --nographics --extra-args='console=tty0 console=ttyS0,115200n8' インストールの設定例: - 7) [x] Network configuration - 2) Configure device eth0 - 7) [x] Connect automatically after reboot - 8) [x] Apply configuration in installer - 2) [x] Time settings - 1) Set timezone - 2) [x] Time settings - 2) Configure NTP servers - 1) Add NTP server * ntp.nict.jp * ntp.jst.mfeed.ad.jp * ホストもVMなので外部NTPサーバを指定しているが、ホストが物理ならホストをNTPサーバにする - 4) [x] Software selection - 5) [x] Installation Destination - 6) [x] Kdump - 1) [ ] Enable kdump - 8) [x] Root password ゲストの追加設定: yum install qemu-guest-agent systemctl enable qemu-guest-agent --now vi /etc/chrony.conf # modify server to pool visudo # set %wheel ALL=(ALL) NOPASSWD: ALL vi /etc/ssh/sshd_config # set UseDNS no yum -y install man-pages man-pages-overrides ホストからゲストにSSHの公開鍵をコピー。 virsh domifaddr centos7-origin ssh-copy-id -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@ゲストのIP ベースとなる仮想マシンを停止する。 virsh shutdown centos7-origin virsh list --all ディスクスペースに余裕が無いなら必要に応じて以下を実行。 virt-sparsify --in-place /var/lib/libvirt/images/centos7-origin.qcow2 ===== 2. テンプレート仮想マシンの作成 ===== 仮想マシンのクローンを作成してから、複製しただけでは使えない設定を''virt-sysprep''で削除。 virt-clone -o centos7-origin -n centos7-template --file /var/lib/libvirt/images/centos7-template.qcow2 virt-sysprep -d centos7-template --operations defaults,-ssh-userdir ユーザのSSH設定ディレクトリを削除しないように設定しているが、削除するなら''virt-sysprep''のオプション''%%--operations defaults,-ssh-userdir%%''は不要。 ===== 3. テンプレートからクローンを作成 ===== テンプレートから仮想マシンをクローンした後に、ホスト名の設定などを実施。 virt-clone -o centos7-template -n centos7a --file /var/lib/libvirt/images/centos7a.qcow2 virt-sysprep --enable customize,lvm-uuids,machine-id --selinux-relabel --hostname centos7a.localdomain -d centos7a ディスクサイズを変更したい場合は[[using_virt_resize|virt-resizeを実行]]する。 クローンを起動してコンソールで接続。 virsh start centos7a virsh console centos7a