KVM虛拟化學習筆記系列文章清單
----------------------------------------
kvm虛拟化學習筆記(一)之kvm虛拟化環境安裝
<a href="http://koumm.blog.51cto.com/703525/1288795" target="_blank">http://koumm.blog.51cto.com/703525/1288795</a>
kvm虛拟化學習筆記(二)之linux kvm虛拟機安裝
<a href="http://koumm.blog.51cto.com/703525/1289627" target="_blank">http://koumm.blog.51cto.com/703525/1289627</a>
kvm虛拟化學習筆記(三)之windows kvm虛拟機安裝
<a href="http://koumm.blog.51cto.com/703525/1290191" target="_blank">http://koumm.blog.51cto.com/703525/1290191</a>
kvm虛拟化學習筆記(四)之kvm虛拟機日常管理與配置
<a href="http://koumm.blog.51cto.com/703525/1290269" target="_blank">http://koumm.blog.51cto.com/703525/1290269</a>
kvm虛拟化學習筆記(五)之windows虛拟機性能調整
<a href="http://koumm.blog.51cto.com/703525/1290682" target="_blank">http://koumm.blog.51cto.com/703525/1290682</a>
kvm虛拟化學習筆記(六)之kvm虛拟機控制台登入配置
<a href="http://koumm.blog.51cto.com/703525/1290996" target="_blank">http://koumm.blog.51cto.com/703525/1290996</a>
kvm虛拟化學習筆記(七)之kvm虛拟機克隆
<a href="http://koumm.blog.51cto.com/703525/1291793" target="_blank">http://koumm.blog.51cto.com/703525/1291793</a>
kvm虛拟化學習筆記(八)之kvm虛拟機vnc配置
<a href="http://koumm.blog.51cto.com/703525/1291803" target="_blank">http://koumm.blog.51cto.com/703525/1291803</a>
kvm虛拟化學習筆記(九)之kvm虛拟機時間配置
<a href="http://koumm.blog.51cto.com/703525/1291862" target="_blank">http://koumm.blog.51cto.com/703525/1291862</a>
kvm虛拟化學習筆記(十)之kvm虛拟機快照備份
<a href="http://koumm.blog.51cto.com/703525/1291893" target="_blank">http://koumm.blog.51cto.com/703525/1291893</a>
kvm虛拟化學習筆記(十一)之kvm虛拟機擴充磁盤空間
<a href="http://koumm.blog.51cto.com/703525/1292146" target="_blank">http://koumm.blog.51cto.com/703525/1292146</a>
kvm虛拟化學習筆記(十二)之kvm linux虛拟機線上擴充磁盤
<a href="http://koumm.blog.51cto.com/703525/1295296" target="_blank">http://koumm.blog.51cto.com/703525/1295296</a>
kvm虛拟化學習筆記(十三)之kvm虛拟機磁盤檔案讀取小結
<a href="http://koumm.blog.51cto.com/703525/1298845" target="_blank">http://koumm.blog.51cto.com/703525/1298845</a>
kvm虛拟化學習筆記(十四)之kvm虛拟機靜态遷移
<a href="http://koumm.blog.51cto.com/703525/1298852" target="_blank">http://koumm.blog.51cto.com/703525/1298852</a>
kvm虛拟化學習筆記(十五)之kvm虛拟機動态遷移
<a href="http://koumm.blog.51cto.com/703525/1300783" target="_blank">http://koumm.blog.51cto.com/703525/1300783</a>
kvm虛拟化學習筆記(十六)之kvm虛拟化存儲池配置
<a href="http://koumm.blog.51cto.com/703525/1304196" target="_blank">http://koumm.blog.51cto.com/703525/1304196</a>
kvm虛拟化學習筆記(十七)之KVM到KVM之v2v遷移
<a href="http://koumm.blog.51cto.com/703525/1304271" target="_blank">http://koumm.blog.51cto.com/703525/1304271</a>
kvm虛拟化學習筆記(十八)之ESXi到KVM之v2v遷移
<a href="http://koumm.blog.51cto.com/703525/1304461" target="_blank">http://koumm.blog.51cto.com/703525/1304461</a>
kvm虛拟化學習筆記(十九)之convirt集中管理平台搭建
<a href="http://koumm.blog.51cto.com/703525/1305553" target="_blank">http://koumm.blog.51cto.com/703525/1305553</a>
kvm虛拟化學習筆記(二十)之convirt安裝linux系統
<a href="http://koumm.blog.51cto.com/703525/1306526" target="_blank">http://koumm.blog.51cto.com/703525/1306526</a>
kvm虛拟機的克隆分為兩種情況,本文也就通過以下兩種情況進行克隆,克隆虛拟機為OEL5.8X64。
本文出自:http://koumm.blog.51cto.com
(1) KVM主機本機虛拟機直接克隆。
(2) 通過複制配置檔案與磁盤檔案的虛拟機複制克隆(适用于異機的靜态遷移)。
(1) 檢視虛拟機配置檔案
[root@node1 ~]# cat /etc/libvirt/qemu/oeltest01.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<code><!--</code>
<code>WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE</code>
<code>OVERWRITTEN AND LOST. Changes to </code><code>this</code> <code>xml configuration should be made using:</code>
<code>virsh edit oeltest01</code>
<code>or other application using the libvirt API.</code>
<code>--></code>
<code><domain type=</code><code>'kvm'</code><code>></code>
<code><name>oeltest01</name></code>
<code><uuid>8f2bb4a7-c7ed-32aa-</code><code>3676</code><code>-9fb05923269d</uuid></code>
<code><memory unit=</code><code>'KiB'</code><code>></code><code>524288</code><code></memory></code>
<code><currentMemory unit=</code><code>'KiB'</code><code>></code><code>524288</code><code></currentMemory></code>
<code><vcpu placement=</code><code>'static'</code><code>></code><code>1</code><code></vcpu></code>
<code><os></code>
<code><type arch=</code><code>'x86_64'</code> <code>machine=</code><code>'rhel6.4.0'</code><code>>hvm</type></code>
<code><boot dev=</code><code>'hd'</code><code>/></code>
<code></os></code>
<code><features></code>
<code><acpi/></code>
<code><apic/></code>
<code><pae/></code>
<code></features></code>
<code><clock offset=</code><code>'utc'</code><code>/></code>
<code><on_poweroff>destroy</on_poweroff></code>
<code><on_reboot>restart</on_reboot></code>
<code><on_crash>restart</on_crash></code>
<code><devices></code>
<code><emulator>/usr/libexec/qemu-kvm</emulator></code>
<code><disk type=</code><code>'file'</code> <code>device=</code><code>'disk'</code><code>></code>
<code><driver name=</code><code>'qemu'</code> <code>type=</code><code>'raw'</code> <code>cache=</code><code>'none'</code><code>/></code>
<code><source file=</code><code>'/data/test01.img'</code><code>/></code>
<code><target dev=</code><code>'hda'</code> <code>bus=</code><code>'ide'</code><code>/></code>
<code><address type=</code><code>'drive'</code> <code>controller=</code><code>'0'</code> <code>bus=</code><code>'0'</code> <code>target=</code><code>'0'</code> <code>unit=</code><code>'0'</code><code>/></code>
<code></disk></code>
<code><disk type=</code><code>'block'</code> <code>device=</code><code>'cdrom'</code><code>></code>
<code><driver name=</code><code>'qemu'</code> <code>type=</code><code>'raw'</code><code>/></code>
<code><target dev=</code><code>'hdc'</code> <code>bus=</code><code>'ide'</code><code>/></code>
<code><readonly/></code>
<code><address type=</code><code>'drive'</code> <code>controller=</code><code>'0'</code> <code>bus=</code><code>'1'</code> <code>target=</code><code>'0'</code> <code>unit=</code><code>'0'</code><code>/></code>
<code><controller type=</code><code>'usb'</code> <code>index=</code><code>'0'</code><code>></code>
<code><address type=</code><code>'pci'</code> <code>domain=</code><code>'0x0000'</code> <code>bus=</code><code>'0x00'</code> <code>slot=</code><code>'0x01'</code> <code>function</code><code>=</code><code>'0x2'</code><code>/></code>
<code></controller></code>
<code><controller type=</code><code>'ide'</code> <code>index=</code><code>'0'</code><code>></code>
<code><address type=</code><code>'pci'</code> <code>domain=</code><code>'0x0000'</code> <code>bus=</code><code>'0x00'</code> <code>slot=</code><code>'0x01'</code> <code>function</code><code>=</code><code>'0x1'</code><code>/></code>
<code><</code><code>interface</code> <code>type=</code><code>'bridge'</code><code>></code>
<code><mac address=</code><code>'52:54:00:82:39:01'</code><code>/></code>
<code><source bridge=</code><code>'br0'</code><code>/></code>
<code><model type=</code><code>'virtio'</code><code>/></code>
<code><address type=</code><code>'pci'</code> <code>domain=</code><code>'0x0000'</code> <code>bus=</code><code>'0x00'</code> <code>slot=</code><code>'0x03'</code> <code>function</code><code>=</code><code>'0x0'</code><code>/></code>
<code></</code><code>interface</code><code>></code>
<code><serial type=</code><code>'pty'</code><code>></code>
<code><target port=</code><code>'0'</code><code>/></code>
<code></serial></code>
<code><console type=</code><code>'pty'</code><code>></code>
<code><target type=</code><code>'serial'</code> <code>port=</code><code>'0'</code><code>/></code>
<code></console></code>
<code><input type=</code><code>'tablet'</code> <code>bus=</code><code>'usb'</code><code>/></code>
<code><input type=</code><code>'mouse'</code> <code>bus=</code><code>'ps2'</code><code>/></code>
<code><graphics type=</code><code>'vnc'</code> <code>port=</code><code>'5910'</code> <code>autoport=</code><code>'no'</code> <code>listen=</code><code>'0.0.0.0'</code><code>></code>
<code><listen type=</code><code>'address'</code> <code>address=</code><code>'0.0.0.0'</code><code>/></code>
<code></graphics></code>
<code><video></code>
<code><model type=</code><code>'cirrus'</code> <code>vram=</code><code>'9216'</code> <code>heads=</code><code>'1'</code><code>/></code>
<code><address type=</code><code>'pci'</code> <code>domain=</code><code>'0x0000'</code> <code>bus=</code><code>'0x00'</code> <code>slot=</code><code>'0x02'</code> <code>function</code><code>=</code><code>'0x0'</code><code>/></code>
<code></video></code>
<code><memballoon model=</code><code>'virtio'</code><code>></code>
<code><address type=</code><code>'pci'</code> <code>domain=</code><code>'0x0000'</code> <code>bus=</code><code>'0x00'</code> <code>slot=</code><code>'0x04'</code> <code>function</code><code>=</code><code>'0x0'</code><code>/></code>
<code></memballoon></code>
<code></devices></code>
<code></domain></code>
虛拟機磁盤檔案: /data/test01.img
虛拟機名稱:oeltest01
<a href="http://koumm.blog.51cto.com/attachment/201309/8/703525_1378605991KS0W.png" target="_blank"></a>
(2) 開始克隆
# virt-clone -o oeltest01 -n oeltest02 -f /data/test02.img
說明:以oeltest01做為源,克隆oeltest01虛拟機,并建立名稱為oeltest02虛拟機,使用磁盤檔案/data/test02.img
<a href="http://koumm.blog.51cto.com/attachment/201309/8/703525_1378605993pmsT.png" target="_blank"></a>
(3) 啟動虛拟機并配置主機名,IP位址等
<a href="http://koumm.blog.51cto.com/attachment/201309/8/703525_1378605995NkD0.png" target="_blank"></a>
[root@node1 data]# virsh console oeltest02
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<code>連接配接到域 oeltest02</code>
<code>Escape character </code><code>is</code> <code>^]</code>
<code>Found volume group </code><code>"vg"</code> <code>using metadata type lvm2</code>
<code>2</code> <code>logical volume(s) </code><code>in</code> <code>volume group </code><code>"vg"</code> <code>now active</code>
<code>Welcome to Oracle Linux Oracle Linux Server release </code><code>5.8</code>
<code>Press </code><code>'I'</code> <code>to enter interactive startup.</code>
<code>Starting udev: [ OK ]</code>
<code>Loading </code><code>default</code> <code>keymap (us): [ OK ]</code>
<code>Setting hostname test01: [ OK ]</code>
<code>Setting up Logical Volume Management: </code><code>2</code> <code>logical volume(s) </code><code>in</code> <code>volume group </code><code>"vg"</code> <code>now active</code>
<code>[ OK ]</code>
<code>Checking filesystems</code>
<code>Checking all file systems.</code>
<code>[/sbin/fsck.ext3 (</code><code>1</code><code>) -- /] fsck.ext3 -a /dev/vg/root</code>
<code>/dev/vg/root: clean, </code><code>135384</code><code>/</code><code>1540096</code> <code>files, </code><code>851398</code><code>/</code><code>1540096</code> <code>blocks</code>
<code>[/sbin/fsck.ext3 (</code><code>1</code><code>) -- /boot] fsck.ext3 -a /dev/hda1</code>
<code>/boot: clean, </code><code>39</code><code>/</code><code>26104</code> <code>files, </code><code>26897</code><code>/</code><code>104388</code> <code>blocks</code>
<code>Remounting root filesystem </code><code>in</code> <code>read-write mode: [ OK ]</code>
<code>Mounting local filesystems: [ OK ]</code>
<code>Enabling local filesystem quotas: [ OK ]</code>
<code>Enabling /etc/fstab swaps: [ OK ]</code>
<code>INIT: Entering runlevel: </code><code>5</code>
<code>Entering non-interactive startup</code>
<code>Applying Intel CPU microcode update: [ OK ]</code>
<code>Starting background readahead: [ OK ]</code>
<code>Checking </code><code>for</code> <code>hardware changes [ OK ]</code>
<code>[ OK ] iSCSI daemon: [ OK ]</code>
<code>Bringing up loopback </code><code>interface</code><code>: [ OK ]</code>
<code>Bringing up </code><code>interface</code> <code>eth0:</code>
<code>Determining IP information </code><code>for</code> <code>eth0... done.</code>
<code>Starting auditd: [ OK ]</code>
<code>Starting system logger: [ OK ]</code>
<code>Starting kernel logger: [ OK ]</code>
<code>Starting irqbalance: [ OK ]</code>
<code>iscsid (pid </code><code>1555</code><code>) </code><code>is</code> <code>running...</code>
<code>Setting up iSCSI targets: iscsiadm: No records found</code>
<code>Starting portmap: [ OK ]</code>
<code>Starting NFS statd: [ OK ]</code>
<code>Starting RPC idmapd: [ OK ]</code>
<code>Starting system message bus: [ OK ]</code>
<code>Starting o2cb: [ OK ]</code>
<code>[ OK ] Bluetooth services:[ OK ]</code>
<code>Mounting other filesystems: [ OK ]</code>
<code>Starting PC/SC smart card daemon (pcscd): [ OK ]</code>
<code>Starting acpi daemon: [ OK ]</code>
<code>Starting HAL daemon: [ OK ]</code>
<code>Starting hidd: [ OK ]</code>
<code>Starting monitoring </code><code>for</code> <code>VG vg: </code><code>2</code> <code>logical volume(s) </code><code>in</code> <code>volume group </code><code>"vg"</code> <code>monitored</code>
<code>Starting autofs: Loading autofs4: [ OK ]</code>
<code>Starting automount: [ OK ]</code>
<code>Starting hpiod: [ OK ]</code>
<code>Starting hpssd: [ OK ]</code>
<code>Starting sshd: [ OK ]</code>
<code>Starting cups: [ OK ]</code>
<code>Starting xinetd: [ OK ]</code>
<code>Starting console mouse services: [ OK ]</code>
<code>Starting crond: [ OK ]</code>
<code>Starting xfs: [ OK ]</code>
<code>Starting anacron: [ OK ]</code>
<code>[ OK ] atd: [ OK ]</code>
<code>Starting yum-updatesd: [ OK ]</code>
<code>Starting Avahi daemon... [ OK ]</code>
<code>Starting smartd: hdc: drive_cmd: status=</code><code>0x41</code> <code>{ DriveReady Error }</code>
<code>hdc: drive_cmd: error=</code><code>0x04</code> <code>{ AbortedCommand }</code>
<code>ide: failed opcode was: </code><code>0xec</code>
<code>Oracle Linux Server release </code><code>5.8</code>
<code>Kernel </code><code>2.6</code><code>.</code><code>18</code><code>-</code><code>308</code><code>.el5 on an x86_64</code>
<code>test01 login: mtrr: type mismatch </code><code>for</code> <code>f0000000,</code><code>100000</code> <code>old: uncachable </code><code>new</code><code>: write-combining</code>
<code>mtrr: type mismatch </code><code>for</code> <code>f0000000,</code><code>400000</code> <code>old: uncachable </code><code>new</code><code>: write-combining</code>
<code>test01 login:</code>
<code>test01 login: root</code>
<code>Password:</code>
<code>Last login: Sat Sep </code><code>7</code> <code>05</code><code>:</code><code>21</code><code>:</code><code>11</code> <code>on ttyS0</code>
<code>[root@test01 ~]#</code>
(4) 修改主機名,IP位址等
# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 test02 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=test02
GATEWAY=192.168.233.2
修改IP位址
# vi /etc/sysconfig/network-script/ifcfg-eth0
# Virtio Network Device
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
HWADDR=52:54:00:56:bd:2b
IPADDR=192.168.233.142
NETMASK=255.255.255.0
[root@test01 ~]# service network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
[root@test01 ~]#
(1) 導入kvm虛拟機配置檔案
這裡采用oeltest01做為模闆,進行克隆。
# virsh shutdown oeltest01
<a href="http://koumm.blog.51cto.com/attachment/201309/8/703525_1378605996DpNC.png" target="_blank"></a>
# virsh dumpxml oeltest01 > /etc/libvirt/qemu/oeltest03.xml
<a href="http://koumm.blog.51cto.com/attachment/201309/8/703525_1378605997vlfp.png" target="_blank"></a>
(2) 複制kvm虛拟機磁盤檔案
本系列文章都是采用虛拟磁盤檔案進行測試,沒有使用lvm卷。
通過檢視配置檔案:虛拟磁盤位置<source file='/data/test01.img'/>
<a href="http://koumm.blog.51cto.com/attachment/201309/8/703525_1378606000kABg.png" target="_blank"></a>
(3) 直接編輯修改配置檔案
修改name,uuid,disk位置,vnc端口
此時還是将該配置檔案注冊進來,無法通過virsh edit進行編輯。
[root@node1 data]# vi /etc/libvirt/qemu/oeltest03.xml
<domain type='kvm'>
<name>oeltest03</name>
<uuid>8f2bb4a7-c7ed-32aa-3676-9fb05923260d</uuid>
<memory unit='KiB'>524288</memory>
<currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='rhel6.4.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source file='/data/test03.img'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
<interface type='bridge'>
<mac address='52:54:00:82:39:01'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5911' autoport='no' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</memballoon>
</devices>
</domain>
(4) 定義新虛拟機配置檔案
[root@node1 data]# virsh define /etc/libvirt/qemu/oeltest03.xml
<a href="http://koumm.blog.51cto.com/attachment/201309/8/703525_1378606004qhhN.png" target="_blank"></a>
啟動虛拟機
[root@node1 data]# virsh start oeltest03
域 oeltest03 已開始
(5) 登入虛拟機進行主機名,IP等修改
[root@node1 data]# virsh console oeltest03
連接配接到域 oeltest03
Escape character is ^]
Oracle Linux Server release 5.8
Kernel 2.6.18-308.el5 on an x86_64
test01 login: mtrr: type mismatch for f0000000,100000 old: uncachable new: write-combining
mtrr: type mismatch for f0000000,400000 old: uncachable new: write-combining
test01 login: root
Password:
Last login: Sat Sep 7 05:21:11 on ttyS0
[root@test01 ~]#
修改主機名
127.0.0.1 test03 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
HOSTNAME=test03
HWADDR=52:54:00:56:bd:3b
IPADDR=192.168.233.143
service network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
本文到此通過兩種方式進行kvm虛拟機克隆,其實各有用處。
再次說明:本文克隆的虛拟機是oel5.8,如果克隆的虛拟機是RHEL/CentOS/OEL6.x作業系統,還需要修改/etc/udev/rules.d/70-persistent-net.rules檔案。
本文轉自 koumm 51CTO部落格,原文連結:http://blog.51cto.com/koumm/1291793,如需轉載請自行聯系原作者