====== 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