环境介绍:
redhat6.5_x64 basic_server安装
iptables及selinux禁用
光盘作为yum源
1、BIOS开启虚拟化
Linux中x64的环境中才能使用kvm(如果是vmware,需要在CPU那里启用虚拟化)
2、检测是否支持虚拟化
1
|
egrep
--color
"(vmx|svm)"
/proc/cpuinfo
|
VMX:它是Intel处理器虚拟机技术标志;
SVM:它是AMD处理器虚拟机技术的标志;
3、加载并查看内核模块
1
2
3
|
modprobe kvm
modprobe kvm_intel(AWD加载kvm_amd)
lsmod|
grep
kvm
|
4、安装kvm 和虚拟化管理软件包
1
2
3
|
yum -y
install
kvm virt-* libvirts bridge-utils qemu-img
service libvirtd start;chkconfig libvirtd on
service acpid start; chkconfig acpid on
|
5、配置网络桥接
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
cd
/etc/sysconfig/network-scripts/
cp
ifcfg-eth0 ifcfg-br0
做相应修改
#cat ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=
yes
TYPE=Ethernet
BRIDGE=br0
#cat ifcfg-br0
DEVICE=br0
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=
yes
TYPE=Bridge
IPADDR=192.168.1.2
NETMASK=255.255.255.0
GATEWAY=192.168.1.253
|
配置桥接网卡br0后,物理网卡eth0不需要获得ip地址,其功能被br0取代,因此在配置的时候无论是静态ip还是动态获取都用br0取代eth0的ip地址,
而实际上数据发送还是通过本机的物理网卡。
6、复制安装光盘镜像
1
2
|
mkdir
/iso
dd
if
=
/dev/cdrom
of=
/iso/centos6
.5.iso
|
7、创建虚拟磁盘存放目录
1
|
mkdir
/data/vmdisk
-p
|
8、开启VNC监听IP
1
2
|
sed
-i
's/^#vnc_listen.*/vnc_listen = "0.0.0.0"/'
/etc/libvirt/qemu
.conf
/etc/init
.d
/libvirtd
restart
|
9、创建磁盘镜像文件
1
2
|
#virt-install --name=centos6.5-01 --ram=4096 --vcpus=2 --disk=/data/vmdisk/centos6.5-01.raw,size=40,bus=virtio,cache=writeback --network bridge=br0\
--accelerate --cdrom=
/iso/centos6
.5.iso --vnc --vncport=5900 -d
|
默认镜像文件为raw格式,可用qemu-img info IMG 查看
--name 指定虚拟机名字
--ram 内存,单位M
--vcpus 分配虚拟机cpu个数
--disk 指定虚拟机安装文件路径
size 虚拟机文件大小,单位G
bus 虚拟机网卡驱动类型
cache 虚拟机磁盘cache类型
--network bridge 指定桥接网卡
--accelerate 使用内核加速功能
--cdrom 安装镜像全路径
--vnc 可以用vnc连接
--vncport 指定vnc端口,-1表示随机生成
-d debug打印调试信息到终端
VNC连接192.168.1.2:5900端口进行后续安装
Other:
kvm安装Windows与装linux类似,但是Windows需要安装额外的驱动文件,一个是硬盘的,一个是网卡的
分别为virtio-win-0.1.96_amd64.vfg和virtio-win-0.1-100.iso
不同的版本与架构,名称也不一样,可在这两个地址下载
硬盘驱动 https://fedoraproject.org/wiki/Windows_Virtio_Drivers#Direct_download.com
网卡驱动 https://fedorapeople.org/groups/virt/virtio-win/deprecated-isos/
1、创建磁盘镜像
1
|
qemu-img create -f qcow2 windows7.qcow2 40G
|
2、创建xml文件(/etc/libvirt/qemu)
xml内容如末尾所示
3、定义虚拟机,让kvm来管理
1
|
virsh define windows7.xml
|
4、启动虚拟机
1
|
virsh start windows7
|
下边是windows的xml文件,重点在于两个virto文件的加载。当然,也可以用命令生产xml文件,不过我更喜欢复制修改xml
一般主要修改或注释UUID、虚拟机名字及配置、MAC地址、网桥名字、磁盘类型、镜像或驱动或iso路径、vnc或spice端口号
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
[root@controller1 ~]
# cat /etc/libvirt/qemu/win7-02.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh edit windows7
or other application using the libvirt API.
-->
<domain
type
=
'kvm'
>
<name>windows7<
/name
>
<uuid>6ce14f21-33ac-dc79-5444-f64ccc80ea17<
/uuid
>
<memory unit=
'KiB'
>2097152<
/memory
>
<currentMemory unit=
'KiB'
>2097152<
/currentMemory
>
<vcpu placement=
'static'
>1<
/vcpu
>
<os>
<
type
arch=
'x86_64'
machine=
'rhel6.5.0'
>hvm<
/type
>
<boot dev=
'cdrom'
/>
<
/os
>
<features>
<acpi/>
<apic/>
<pae/>
<
/features
>
<cpu mode=
'host-passthrough'
>
<topology sockets=
'1'
cores=
'4'
threads=
'1'
/>
<
/cpu
>
<clock offset=
'localtime'
/>
<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
=
'qcow2'
/>
<
source
file
=
'/data/vmdisk/win7-02.qcow2'
/>
<target dev=
'vda'
bus=
'virtio'
/>
<address
type
=
'pci'
domain=
'0x0000'
bus=
'0x00'
slot=
'0x04'
function
=
'0x0'
/>
<
/disk
>
<disk
type
=
'file'
device=
'cdrom'
>
<driver name=
'qemu'
type
=
'raw'
/>
<
source
file
=
'/iso/win7.iso'
/>
<target dev=
'hda'
bus=
'ide'
/>
<
readonly
/>
<address
type
=
'drive'
controller=
'0'
bus=
'0'
target=
'0'
unit=
'0'
/>
<
/disk
>
<disk
type
=
'file'
device=
'cdrom'
>
<driver name=
'qemu'
type
=
'raw'
/>
<
source
file
=
'/iso/virtio-win-0.1-100.iso'
/>
<target dev=
'hdb'
bus=
'ide'
/>
<
readonly
/>
<address
type
=
'drive'
controller=
'0'
bus=
'0'
target=
'0'
unit=
'1'
/>
<
/disk
>
<disk
type
=
'file'
device=
'floppy'
>
<driver name=
'qemu'
type
=
'raw'
/>
<
source
file
=
'/iso/virtio-win-0.1.96_amd64.vfg'
/>
<target dev=
'fda'
bus=
'fdc'
/>
<
readonly
/>
<address
type
=
'drive'
controller=
'0'
bus=
'0'
target=
'0'
unit=
'0'
/>
<
/disk
>
<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'
/>
<
/controller
>
<controller
type
=
'fdc'
index=
'0'
/>
<controller
type
=
'virtio-serial'
index=
'0'
>
<address
type
=
'pci'
domain=
'0x0000'
bus=
'0x00'
slot=
'0x05'
function
=
'0x0'
/>
<
/controller
>
<interface
type
=
'bridge'
>
<mac address=
'fa:c6:3e:a3:e4:a7'
/>
<
source
bridge=
'br0'
/>
<model
type
=
'virtio'
/>
<address
type
=
'pci'
domain=
'0x0000'
bus=
'0x00'
slot=
'0x03'
function
=
'0x0'
/>
<
/interface
>
<serial
type
=
'file'
>
<
source
path=
'/tmp/console.log'
/>
<target port=
'0'
/>
<
/serial
>
<serial
type
=
'pty'
>
<target port=
'1'
/>
<
/serial
>
<console
type
=
'file'
>
<
source
path=
'/tmp/console.log'
/>
<target
type
=
'serial'
port=
'0'
/>
<
/console
>
<channel
type
=
'spicevmc'
>
<target
type
=
'virtio'
name=
'com.redhat.spice.0'
/>
<address
type
=
'virtio-serial'
controller=
'0'
bus=
'0'
port=
'1'
/>
<
/channel
>
<input
type
=
'tablet'
bus=
'usb'
/>
<input
type
=
'mouse'
bus=
'ps2'
/>
<graphics
type
=
'spice'
port=
'6789'
autoport=
'no'
listen=
'0.0.0.0'
keymap=
'en-us'
>
<listen
type
=
'address'
address=
'0.0.0.0'
/>
<channel name=
'main'
mode=
'insecure'
/>
<channel name=
'display'
mode=
'insecure'
/>
<channel name=
'inputs'
mode=
'insecure'
/>
<channel name=
'cursor'
mode=
'insecure'
/>
<channel name=
'playback'
mode=
'insecure'
/>
<channel name=
'record'
mode=
'insecure'
/>
<channel name=
'smartcard'
mode=
'insecure'
/>
<channel name=
'usbredir'
mode=
'insecure'
/>
<image compression=
'auto_glz'
/>
<streaming mode=
'all'
/>
<clipboard copypaste=
'yes'
/>
<
/graphics
>
<video>
<model
type
=
'qxl'
ram
=
'65536'
vram=
'65536'
heads=
'1'
>
<acceleration accel3d=
'yes'
accel2d=
'yes'
/>
<
/model
>
<address
type
=
'pci'
domain=
'0x0000'
bus=
'0x00'
slot=
'0x02'
function
=
'0x0'
/>
<
/video
>
<memballoon model=
'virtio'
>
<address
type
=
'pci'
domain=
'0x0000'
bus=
'0x00'
slot=
'0x06'
function
=
'0x0'
/>
<
/memballoon
>
<
/devices
>
<
/domain
>
[root@controller1 ~]
#
|