lost and found ( for me ? )

KVM : virt-clone



元VMからクローンVMを作成する。
わざわざ必要なVMの数だけインストールするのは面倒なので。

[ 手順 ]

1. クローン元VMの準備
2. virt-clone でクローンVMを作成
3. 作成されたクローンVMか起動するかチェック

補足: クローン元のインターフェースが eth0 なのにクローンしたVM のそれが eth1 になる件

[ ログ ]

1. クローン元のVMの準備

今回は VM ubuntu をクローン元とする。VMは shutdown してあること。

root@hat1:~# virsh list --all
Id 名前               状態
----------------------------------
 - centos5-1            シャットオフ
 - centos5-1-clone      シャットオフ
 - ubuntu               シャットオフ
 - WANem-VM             シャットオフ

クローン元VM名: ubuntu
クローン元イメージ : /var/lib/libvirt/images/ubuntu-kvm/tmp6oUBpz.qcow2
クローン元xml : /etc/libvirt/qemu/ubuntu.xml

2. virt-clone でクローンVMを作成

-o クローン元VM名 ( virsh list --all で表示されるVM名 )
-n コピー先VM名
-f コピー先イメージ保存場所

root@hat1:~# virt-clone -o ubuntu -n ubuntu-clone1 -f /var/lib/libvirt/images/ubuntu-clone1.img
Cloning tmp6oUBpz.qcow2   100% |=========================|  107 B    00:04

Clone 'ubuntu-clone1' created successfully.

3. 作成されたクローンVMか起動するかチェック

登録された。

root@hat1:~# virsh list --all
Id 名前               状態
----------------------------------
 - centos5-1            シャットオフ
 - centos5-1-clone      シャットオフ
 - ubuntu               シャットオフ
 - ubuntu-clone1        シャットオフ
 - WANem-VM             シャットオフ

クローンVMのMACアドレス、uuid は自動で生成してくれる。( i.e. クローン元とは違う uuid , MACになる )
root@hat1:~# diff /etc/libvirt/qemu/ubuntu.xml /etc/libvirt/qemu/ubuntu-clone1.xml
2,3c2,3
<   ubuntu
<   50390db3-34cd-5618-8a27-4a709fc04085
---
>   ubuntu-clone1
>   6a244550-4dc0-84ad-1ad1-3ffc55fadb0d
21c21
<       
---
>       
25c25
<       
---
>       



ためしに起動

root@hat1:~# virsh start ubuntu-clone1
ドメイン ubuntu-clone1 が起動されました

OK.

root@hat1:~# virsh console ubuntu-clone1
Connected to domain ubuntu-clone1
エスケープ文字は  ^] です

Ubuntu 10.04.1 LTS ubuntu ttyS0

ubuntu login: root
Password:
Last login: Thu Oct  7 01:54:08 UTC 2010 on ttyS0
Linux ubuntu 2.6.32-25-generic-pae #44-Ubuntu SMP Fri Sep 17 21:57:48 UTC 2010 i686 GNU/Linux
Ubuntu 10.04.1 LTS

Welcome to Ubuntu!
* Documentation:  https://help.ubuntu.com/
root@ubuntu:~#

[ 補足: コピー元のインターフェースが eth0 なのにクローンしたVM のそれが eth1 になる件 ]

コピーしたVM。eth0 がない。eth1 となる。
ちなみに、CentOSのクローンをつくったときは、この事象は起きなかった。

root@ubuntu-2:~# ifconfig eth0
eth0: error fetching interface information: Device not found
root@ubuntu-2:~# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:16:36:1e:e8:00

元イメージ。 eth0

root@ubuntu-1:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 52:54:00:01:a8:a0

理由は、クローンしたVMのインターフェース番号の設定ファイルより、eth0 に クローン元の MAC が指定、eth1 に新MACアドレスがアサインされていて、起動するインターフェース番号が eth1 となっているから。

最初の 52:54:00:01:a8:a0 はクローン元VMのMAC
00:16:36:1e:e8:00 が新MAC

root@ubuntu-2:~# egrep -v ^# /etc/udev/rules.d/70-persistent-net.rules

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:01:a8:a0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:36:1e:e8:00", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

eth1 で起動。

root@ubuntu-2:~# egrep eth /etc/network/interfaces
auto eth1
iface eth1 inet dhcp

・eth0 にする方法

/etc/udev/rules.d/70-persistent-net.rules と /etc/network/interfaces を修正し、リブート。

/etc/udev/rules.d/70-persistent-net.rules の編集。最初の eth0 の設定を削除、eth1を eth0 に書き換える。

root@ubuntu-2:~# tail -1 /etc/lsb-release
DISTRIB_DESCRIPTION="Ubuntu 10.04.1 LTS"

root@ubuntu-2:~# cat /etc/udev/rules.d/70-persistent-net.rules
# net device ()
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:01:a8:a0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"  <- コメントアウト

# PCI device 0x10ec:0x8139 (8139cp)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:36:1e:e8:00", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" <- eth0 に変更

/etc/network/interfaces の編集。eth1 を eth1 にする。

root@ubuntu-2:~# egrep eth /etc/network/interfaces
auto eth0
iface eth0 inet dhcp

再起動。

root@ubuntu-2:~# reboot

eth0 になった。

root@ubuntu-2:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:16:36:1e:e8:00


No comments:

Post a Comment

Note: Only a member of this blog may post a comment.