此次涉及到的KVM安装使用,前前后后大概花了5天时间,其中包括了重装了两次系统,搞蹦了三台机器的桌面环境,包括重装的这台。

背景环境,在centos6.2的64位下安装的,文档说32位的无法安装,就选择了64位的。

在安装之前要确认机器开启硬件虚拟化,进入系统的BIOS进行开启

查看机器的CPU是否支持KVM

[root@linux-216 ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo

KVM安装工作记录_第1张图片

红色的VMX就代表inter的支持


进行安装

第一次安装步骤导致了桌面崩溃

yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager libvirt libvirt-python python-virtinst

这个是把virt-viewer virt-manager都安装进去了,这是虚拟机的桌面管理工具,因为是yum安装的,安装之后估计是导致了其他软件也升级了,桌面直接崩溃掉

用网上的方法

yum groupinstall "GNOME Desktop Environment"

并不能正常恢复桌面环境

一开始我以为在kvm环境下安装虚拟系统必须要用桌面环境,所有在这里卡了两天一直在想办法把桌面恢复,包括了重装系统的步骤。


在尝试几次桌面崩溃后,后群里有人指点,其实KVM根本不用桌面环境都是可以安装虚拟机系统的,多方查找之后进入了第二种安装,也是用yum安装的方式,只不过这次没有安装kvm的桌面环境

yum  install qemu-kvm libvirt python-virtinst bridge-utils

检测安装成果


检测模块是否加载
[root@linux-216 ~]# lsmod  | grep kvm
kvm_intel              50380  4
kvm                   305081  1 kvm_intel
若只看到第一行,没有第二行,说明没开启硬件虚拟化,需要从BIOS开启
检测KVM是否安装成功
[root@linux-216 ~]# virsh -c qemu:///system list
 Id    名称                         状态
----------------------------------------------------

修改网卡配置,添加虚拟网卡br0

[root@linux-216 ~]# cd /etc/sysconfig/network-scripts/
[root@linux-216 network-scripts]# cat ifcfg-em1
DEVICE="em1"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE=Ethernet
BOOTPROTO=none
BRIDGE=br0
[root@linux-216 network-scripts]# cat ifcfg-br0
DEVICE="br0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.1.216
PREFIX=24
GATEWAY=192.168.1.1
DNS1=202.96.128.86

em1不配实际的ip信息,在br0中配置ip信息,删掉网卡信息。


要关闭NetworkManager ,否则会影响网络的使用

[root@linux-216 network-scripts]# chkconfig NetworkManager off



在虚拟机中安装XP系统,这个是我要安装KVM最主要原因

在安装前要先VNC,远程桌面工具

直接下载后安装即可

http://pan.baidu.com/s/17qaKD


开始安装XP

WINDOWS环境安装参数
[root@linux-216 network-scripts]# virt-install --name=wintest04 --ram 512 --vcpus=2 --check-cpu --disk path=/data/vm_winxp_1/wintest04.img,size=8  --accelerate --cdrom /data/soft/DEEPBBS_GHOST_XP_SP3_2012.08.iso --vnc --vncport=5912 --vnclisten=0.0.0.0 --network bridge=br0 --force --autostart
开始安装......
创建域......                                                                                                                                             |    0 B     00:00
WARNING  无法连接到图形控制台:没有安装 virt-viewer。请安装 'virt-viewer' 软件包。
域安装仍在进行。您可以重新连接
到控制台以便完成安装进程。
参数说明
--name指定虚拟机名称
--ram分配内存大小。
--vcpus分配CPU核心数,最大与实体机CPU核心数相同
--disk指定虚拟机镜像,size指定分配大小单位为G。
--network网络类型,此处用的是默认,一般用的应该是bridge桥接。
--accelerate加速
--cdrom指定安装镜像iso
--vnc启用VNC远程管理,一般安装系统都要启用。
--vncport指定VNC监控端口,默认端口为5900,端口不能重复。
--vnclisten指定VNC绑定IP,默认绑定127.0.0.1,这里改为0.0.0.0。
--os-type=linux,windows
--os-variant=
win7:MicrosoftWindows7
vista:MicrosoftWindowsVista
winxp64:MicrosoftWindowsXP(x86_64)
winxp:MicrosoftWindowsXP
win2k8:MicrosoftWindowsServer2008
win2k3:MicrosoftWindowsServer2003
freebsd8:FreeBSD8.x
generic:Generic
debiansqueeze:DebianSqueeze
debianlenny:DebianLenny
fedora16:Fedora16
fedora15:Fedora15
fedora14:Fedora14
mes5.1:MandrivaEnterpriseServer5.1andlater
mandriva2010:MandrivaLinux2010andlater
rhel6:RedHatEnterpriseLinux6
rhel5.4:RedHatEnterpriseLinux5.4orlater
rhel4:RedHatEnterpriseLinux4
sles11:SuseLinuxEnterpriseServer11
sles10:SuseLinuxEnterpriseServer
ubuntuoneiric:Ubuntu11.10(OneiricOcelot)
ubuntunatty:Ubuntu11.04(NattyNarwhal)
ubuntumaverick:Ubuntu10.10(MaverickMeerkat)
ubuntulucid:Ubuntu10.04(LucidLynx)
ubuntuhardy:Ubuntu8.04LTS(HardyHeron)


看到最后提示 “域安装仍在进行。您可以重新连接到控制台以便完成安装进程。”

此时,用VNC工具进行连接进去,关于VNC使用可以自行查找资料

KVM安装工作记录_第2张图片

注意后面所带的端口号

然后就像平常安装系统那样安装完即可

KVM安装工作记录_第3张图片

安装完还有会用另一个重启的操作,此时要从linux主机进行用命令触发它,让xp虚拟机启动

最开始一直以为这一步必须要用桌面环境才能触发启动的,所以一直卡在这一步,后来发现其实这边也是可以用命令完成的,所以之存在的问题都不是问题了。


进入虚拟机控制台命令环境


[root@linux-216 network-scripts]# virsh
欢迎使用 virsh,虚拟化的交互式终端。
输入:'help' 来获得命令的帮助信息
       'quit' 退出
列出所有的虚拟机
virsh # list --all
 Id    名称                         状态
----------------------------------------------------
 1     wintest03                      running
 5     wintest04                      running
 -     wintest01                      关闭
 -     wintest02                      关闭
停止wintest04虚拟机
virsh # destroy wintest04
域 wintest04 被删除
virsh # list --all
 Id    名称                         状态
----------------------------------------------------
 1     wintest03                      running
 -     wintest01                      关闭
 -     wintest02                      关闭
 -     wintest04                      关闭
启动wintest04虚拟机
virsh # start wintest04
域 wintest04 已开始


用这种方式就可以不用桌面环境进行启动关闭虚拟机了。


然后等到安装完后,用vnc配置远程桌面后就可以使用了。


virsh控制台管理虚拟机

virsh # list --all
 Id    名称                         状态
----------------------------------------------------
 1     wintest02                      running
 4     wintest04                      running
 -     wintest01                      关闭
 -     wintest03                      关闭
virsh # shutdown wintest02
域 wintest02 被关闭
virsh # list --all
 Id    名称                         状态
----------------------------------------------------
 4     wintest04                      running
 -     wintest01                      关闭
 -     wintest02                      关闭
 -     wintest03                      关闭
virsh # start wintest02
域 wintest02 已开始


正常的话,shutdown是无法使用的

需要开启acpi进程

[root@linux-216 ~]# service acpid restart
正在关闭 acpi 守护进程:                                   [确定]
启动 acpi 守护进程:                                       [确定]
[root@linux-216 ~]# chkconfig acpid on


接下来就是虚拟机的复制问题了,要做多个虚拟机,就要复制这个已安装好的,就不用重做系统了。

待续。。。。


续篇~~


三步走克隆虚拟机

第一步,复制虚拟机的镜像文件

创建新的镜像文件为   214_vir_202.img

[root@linux-214 vm_winxp_1]# ll
总用量 3579124
-rwxr-xr-x. 1 qemu qemu 8589934592 11月 20 20:21 214_vir_201.img
-rwxr-xr-x. 1 root root 8589934592 11月 20 19:44 wintxp01.img
[root@linux-214 vm_winxp_1]# pwd
/data/vm_winxp_1
[root@linux-214 vm_winxp_1]# cp wintxp01.img 214_vir_202.img
[root@linux-214 vm_winxp_1]# ll
总用量 5358520
-rwxr-xr-x. 1 qemu qemu 8589934592 11月 20 20:22 214_vir_201.img
-rwxr-xr-x. 1 root root 8589934592 11月 20 20:22 214_vir_202.img
-rwxr-xr-x. 1 root root 8589934592 11月 20 19:44 wintxp01.img

第二步,添加新虚拟机 214_vir_202 的配置文件

进入配置文件的目录

/etc/libvirt/qemu

创建214_vir_202的配置文件

[root@linux-214 qemu]# virsh dumpxml winxp01 > /etc/libvirt/qemu/214_vir_202.xml
[root@linux-214 qemu]# ll
总用量 24
-rw-r--r--. 1 root root 2144 11月 20 20:07 214_vir_201.xml
-rw-r--r--. 1 root root 2137 11月 20 20:26 214_vir_202.xml
drwxr-xr-x. 2 root root 4096 11月 19 19:07 autostart
drwx------. 3 root root 4096 11月 19 16:35 networks
-rw-------. 1 root root 2362 11月 20 19:36 winxp01.xml
-rw-------. 1 root root 2362 11月 20 19:30 winxp01.xml.bak

修改214_vir_202的配置文件

包括:name,uuid,disk,vnc

其中uuid需要用命令生成

[root@linux-214 vm_winxp_1]# uuidgen -r
febf42d9-677d-41db-8f01-bf4d505cb21a

KVM安装工作记录_第4张图片KVM安装工作记录_第5张图片

保存退出

用配置文件方法启动 214_vir_202 虚拟机

[root@linux-214 vm_winxp_1]# virsh create /etc/libvirt/qemu/214_vir_202.xml
域 214_vir_202 被创建(从 /etc/libvirt/qemu/214_vir_202.xml)

第三步,用VNC连接进去,端口为12,进行修改虚拟机的ip跟主机名,否则会有冲突。

KVM安装工作记录_第6张图片


KVM安装工作记录_第7张图片

KVM安装工作记录_第8张图片


在使用过程中发现一个问题,使用virsh create 方式启动虚拟机的话,当关闭后virsh控制台中没有这个虚拟机

运行状态时

virsh # list --all
 Id    名称                         状态
----------------------------------------------------
 8     214_vir_201                    running
 -     winxp01                        关闭


当关闭214_vir_201后控制台中就没有这个虚拟

virsh # list --all
 Id    名称                         状态
----------------------------------------------------
 -     winxp01                        关闭


所以要把 214_vir_201 使用define命令加入到控制台中

[root@linux-214 vm_winxp_1]# virsh define /etc/libvirt/qemu/214_vir_202.xml
定义域 214_vir_202(从 /etc/libvirt/qemu/214_vir_202.xml)
[root@linux-214 vm_winxp_1]# virsh define /etc/libvirt/qemu/214_vir_201.xml
定义域 214_vir_201(从 /etc/libvirt/qemu/214_vir_201.xml)


virsh # list --all
 Id    名称                         状态
----------------------------------------------------
 -     214_vir_201                    关闭
 -     214_vir_202                    关闭
 -     winxp01                        关闭


加入控制台后,就可以直接启动,关闭虚拟机

virsh # start 214_vir_201
域 214_vir_201 已开始
virsh # list --all
 Id    名称                         状态
----------------------------------------------------
 12    214_vir_201                    running
 -     214_vir_202                    关闭
 -     winxp01                        关闭



其他东西 待续~~


查看虚拟机状态

virsh # list --all
 Id    名称                         状态
----------------------------------------------------
 5     216_vir_207                    running
 7     216_vir_206                    running
 -     wintest03                      关闭
 -     wintest08                      关闭
 -     winxp04                        关闭
virsh # dominfo 216_vir_206
Id:             7
名称:       216_vir_206
UUID:           2e457976-366e-4cce-92fd-3b6b0e4d1f6e
OS 类型:    hvm
状态:       running
CPU:          4
CPU 时间:   214.2s
最大内存: 524288 KiB
使用的内存: 524288 KiB
Persistent:     no
自动启动: 禁用
Managed save:   no
安全性模式: none
安全性 DOI: 0


修改虚拟机的内存大小

计算2G的内存值,随便用什么计算都行

Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 2*1024*1024
2097152
>>>


修改配置文件

[root@linux-216 vm_winxp_1]# vim 216_vir_206.img

KVM安装工作记录_第9张图片

查看下修改后想信息

virsh # dominfo 216_vir_206
Id:             8
名称:       216_vir_206
UUID:           2e457976-366e-4cce-92fd-3b6b0e4d1f6e
OS 类型:    hvm
状态:       running
CPU:          4
CPU 时间:   428.0s
最大内存: 2097152 KiB
使用的内存: 2097152 KiB
Persistent:     no
自动启动: 禁用
Managed save:   no
安全性模式: none
安全性 DOI: 0

添加开机自启动

virsh # autostart 214_vir_201
域 214_vir_201标记为自动开始

注:在控制命令中添加到开机启动的话,必须先进行定义到控制面板中,否则无法设定。


取消开机启动

virsh # autostart --disable winxp01
域 winxp01取消标记为自动开始
virsh # autostart --disable 214_vir_201
域 214_vir_201取消标记为自动开始
virsh # autostart --disable 214_vir_202
域 214_vir_202取消标记为自动开始
virsh # autostart --disable 214_vir_203
域 214_vir_203取消标记为自动开始

安装centos

[root@linux-216 vm_linux]# pwd
/data/vm_linux
[root@linux-216 vm_linux]# qemu-img create -f qcow2 centos6.2_01.img 7G
Formatting 'centos6.2_01.img', fmt=qcow2 size=7516192768 encryption=off cluster_size=65536
[root@linux-216 vm_linux]# virt-install --name=centos6.2_01 --os-variant=centos6.2 --ram 512 --vcpus=1 --disk path=/data/vm_linux/centos6.2_01.img,format=qcow2,size=7,bus=virtio --accelerate --cdrom /data/soft/CentOS-6.2-x86_64-bin-DVD1.iso --vnc --vncport=5919 --vnclisten=0.0.0.0 --network bridge=br0,model=virtio --noautoconsole