读书人

linux 虚拟化实战 -kvm (基于内核的虚

发布时间: 2012-08-17 02:08:34 作者: rapoo

linux 虚拟化实战 --kvm (基于内核的虚拟机)

?

环境:

?

CentOS5.5 ?桌面环境:CentOS5.5(可以为Ubuntu桌面)

2安装 KVM

CentOS 5.2 KVM主机:

运行

system-config-securitylevel

并且开启SELinux(如果你的SELinux被禁用,virt-install将不会正常工作)。

然后检查CPU是否支持硬件虚拟化-运行命令

egrep ‘(vmx|svm)’ color=always /proc/cpuinfo

应该会显示如下信息:

[root@server1?~]#?egrep?’(vmx|svm)’?color=always?/proc/cpuinfo
flags???????????:?fpu?vme?de?pse?tsc?msr?pae?mce?cx8?apic?sep?mtrr?pge?mca?cmov?pat?pse36?clflush?mmx?fxsr?sse?sse2?ht?syscall
nx?mmxext?fxsr_opt?rdtscp?lm?3dnowext?3dnow?pni?cx16?lahf_lm?cmp_legacy?svm?extapic?cr8_legacy?misalignsse
flags???????????:?fpu?vme?de?pse?tsc?msr?pae?mce?cx8?apic?sep?mtrr?pge?mca?cmov?pat?pse36?clflush?mmx?fxsr?sse?sse2?ht?syscall
nx?mmxext?fxsr_opt?rdtscp?lm?3dnowext?3dnow?pni?cx16?lahf_lm?cmp_legacy?svm?extapic?cr8_legacy?misalignsse
[root@server1?~]#

如果什么也没有显示的话,就说明你的处理器不支持硬件虚拟化技术,下面的内容就不适合你了。

下面我们为软件包导入GPG key

rpm import /etc/pki/rpm-gpg/RPM-GPG-KEY*

然后安装KVM和virtinst(一个创建虚拟机的工具),我们运行

yum install kvm kmod-kvm qemu libvirt python-virtinst

然后重新启动系统:

reboot

启动过后, KVM的内核模块将会被加载:

lsmod | grep kvm

[root@server1?~]#?lsmod?|?grep?kvm
kvm_amd????????????????50452??0
kvm???????????????????109264??1?kvm_amd
[root@server1?~]#

(这个输出结果是一台拥有AMD-V处理器的系统,如果你的电脑使用的是Intel VT的CPU,将会显示类似kvm_intel字符)

使用下列命令检查KVM是否成功安装

virsh -c qemu:///system list

将会显示如下结果:

[root@server1?~]#?virsh?-c?qemu:///system?list
Id?Name?????????????????State
———————————-

[root@server1?~]#

?

如果在这里显示的是一个错误的信息,说明有些东西出现了问题。

下面我们需要在我们的服务器上设置一个网桥,就可以使我们的虚拟机从其他主机中读取数据。

要做到这一点,我们安装bridge-utils工具。。。。。。

yum install bridge-utils

… 并且配置一个网桥从/etc/sysconfig/network-scripts/ifcfg-eth0参考BOOTPROTO,?BROADCAST,?IPADDR,?NETMASK和NETWORK等值来创建文件/etc/sysconfig/network-scripts/ifcfg-br0?:

vi /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0

TYPE=Bridge

BOOTPROTO=static

BROADCAST=192.168.0.255

IPADDR=192.168.0.100

NETMASK=255.255.255.0

NETWORK=192.168.0.0

ONBOOT=yes

修改/etc/sysconfig/network-scripts/ifcfg-eth0?as follows (取消注释BOOTPROTO,?BROADCAST,?IPADDR,?NETMASK, 和NETWORK?最后添加?BRIDGE=br0):

vi /etc/sysconfig/network-scripts/ifcfg-eth0

# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+

DEVICE=eth0

#BOOTPROTO=static

#BROADCAST=192.168.0.255

HWADDR=00:10:A7:05:AF:EB

#IPADDR=192.168.0.100

#NETMASK=255.255.255.0

#NETWORK=192.168.0.0

ONBOOT=yes

BRIDGE=br0

重新启动网络…

/etc/init.d/network restart

… 运行

ifconfig

现在应该显示网桥(br0):

[root@server1?~]#?ifconfig
br0???????Link?encap:Ethernet??HWaddr?00:10:A7:05:AF:EB
inet?addr:192.168.0.100??Bcast:192.168.0.255??Mask:255.255.255.0
inet6?addr:?fe80::210:a7ff:fe05:afeb/64?Scope:Link
UP?BROADCAST?RUNNING?MULTICAST??MTU:1500??Metric:1
RX?packets:17?errors:0?dropped:0?overruns:0?frame:0
TX?packets:53?errors:0?dropped:0?overruns:0?carrier:0
collisions:0?txqueuelen:0
RX?bytes:1160?(1.1?KiB)??TX?bytes:14875?(14.5?KiB)

eth0??????Link?encap:Ethernet??HWaddr?00:10:A7:05:AF:EB
inet6?addr:?fe80::210:a7ff:fe05:afeb/64?Scope:Link
UP?BROADCAST?RUNNING?MULTICAST??MTU:1500??Metric:1
RX?packets:13662?errors:7?dropped:160?overruns:4?frame:0
TX?packets:11646?errors:0?dropped:0?overruns:0?carrier:0
collisions:0?txqueuelen:1000
RX?bytes:15144608?(14.4?MiB)??TX?bytes:1379942?(1.3?MiB)
Interrupt:74?Base?address:0xcc00

lo????????Link?encap:Local?Loopback
inet?addr:127.0.0.1??Mask:255.0.0.0
inet6?addr:?::1/128?Scope:Host
UP?LOOPBACK?RUNNING??MTU:16436??Metric:1
RX?packets:38?errors:0?dropped:0?overruns:0?frame:0
TX?packets:38?errors:0?dropped:0?overruns:0?carrier:0
collisions:0?txqueuelen:0
RX?bytes:4308?(4.2?KiB)??TX?bytes:4308?(4.2?KiB)

virbr0????Link?encap:Ethernet??HWaddr?00:00:00:00:00:00
inet?addr:192.168.122.1??Bcast:192.168.122.255??Mask:255.255.255.0
inet6?addr:?fe80::200:ff:fe00:0/64?Scope:Link
UP?BROADCAST?RUNNING?MULTICAST??MTU:1500??Metric:1
RX?packets:0?errors:0?dropped:0?overruns:0?frame:0
TX?packets:35?errors:0?dropped:0?overruns:0?carrier:0
collisions:0?txqueuelen:0
RX?bytes:0?(0.0?b)??TX?bytes:9987?(9.7?KiB)

[root@server1?~]#

?

3 创建虚拟机:(kvm ,img based)

?

首先wget 下载你想要安装的镜像

下载下来后,执行安装,利用virt-install 指令:

?

virt-install qemu:///system --name CentOS --ram 512 --cpuset=1,3,5 and 7 --accelerate --disk path=/docin/VirtualCentOS/CentOS.img,size=50 --network bridge:br0 --cdrom /home/houzhaowei/centosISO/CentOS-5.5-x86_64-bin-DVD-1of2.iso --vnc
?

?

其中都有哪些指令 输入man virt-install 可查看,说的非常清楚。

如果用光盘安装, 把 --cdrom 指向cdrom 即可。

?

输出结果如下所示:

[root@server1?~]#?virt-install?connect?qemu:///system?-n?vm10?-r?512?vcpus=2?-f?~/vm10.qcow2?-s?12?-c?~/debian-500-amd64-netinst.iso?vnc?noautoconsole?os-type?linux?os-variant?generic26?accelerate?network=bridge:br0?hvm

Starting?install…
Creating?storage?file…??100%?|=========================|??50 GB????00:00
Creating?domain…?????????????????????????????????????????????????0?B?00:00
Domain?installation?still?in?progress.??You?can?reconnect?to
the?console?to?complete?the?installation?process.
[root@server1?~]#

表示镜像和域创建完毕,可以准备安装。

此时问题就出来了:本机linux 没有图形界面,该怎么进行安装?解决方案是:用另一台图形化机器的virt-manager 来连接客户机的kvm。

?

4 在你的CentOS Desktop上安装virt-manager

?

如果你安装了qemu 和libvirt 则执行:

virt-manager

会出现linux 虚拟化实战 -kvm (基于内核的虚拟机)

linux 虚拟化实战 -kvm (基于内核的虚拟机)

选择文件->新建连接

linux 虚拟化实战 -kvm (基于内核的虚拟机)

选择qemu 并在主机名上输入你想连接主机的ip。

连接上后会发现有一个主机在running 然后在上面点右键选择“打开”

linux 虚拟化实战 -kvm (基于内核的虚拟机)

?

会看到控制台:

linux 虚拟化实战 -kvm (基于内核的虚拟机)

会出现安装界面(由于我的已经安装完了,所以进去的直接是系统界面。)

从概况 ?和 硬件 ?选项中可以看到当前虚拟机的信息。

okay 图形出来了 ,接着就按照安装CentOS的图形界面提示进行安装吧(和真实机安装一样。)

?

5 管理KVM客户机

CentOS 5.5 KVM?主机:

可以通过?virsh命令管理KVM客户机,”virtual shell”。连接到virtual shell,运行

virsh connect qemu:///system

下面就是virtual shell的显示界面:

[root@server1?~]#?virsh?connect?qemu:///system
Welcome?to?virsh,?the?virtualization?interactive?terminal.

Type:??’help’?for?help?with?commands
‘quit’?to?quit

virsh?#

现在你可以在virtual shell中输入命令来管理你的客户机,运行:

help

获得更多的命令:

virsh?#?help

?

会出现命令列表,很通俗易懂。

virsh?#

list

显示所有正在运行的客户机;

list all

显示所有客户机,正在运行的和没有运行的:

virsh?#?list?all
Id?Name?????????????????State
———————————-
2?CentOS ? ? ? ? ? ? ? running

virsh?#

如果你修改了一个客户机的xml文件(位于/etc/libvirt/qemu/?目录),你必须重新定义客户机:

define /etc/libvirt/qemu/vm10.xml

请注意,无论你何时在/etc/libvirt/qemu/?中修改了客户机的XML文件,你必须重新运行define?命令!

启动和停止客户机,运行:

start?CentOS

停止一个客户机,运行

shutdown?CentOS

立即中断一个客户机(类似直接关电源),运行

destroy?CentOS

挂起一个客户机:

suspend?CentOS

恢复客户机:

resume?CentOS

?

编辑客户机:

edit?CentOS ?会出席那关于该虚拟机配置的xml 文件,在里面可以修改所有属性,cpu,内存等。。。 保存后重启虚拟机即可。

?

这些都是最重要的命令.

输入

quit

退出virtual shell.

?

?

?

6 复制虚拟机

?

此时产生了个新需求,需要在多台服务器上搭建虚拟的Centos 怎么办?都重新安装一遍?

答案是:不用。

?

把本机器已经安装好的CentOS.img copy 到另一台服务器,当然这台机器上必须已经安装好了kvm ?qemu和libvirt。

?

然后在新服务器上执行:

?

?

virt-install qemu:///system --name CentOS1 --ram 4096 --cpuset=1,3,5 and 7 --accelerate --disk path=/docin/VirtualCentOS/CentOS.img --import --network bridge:br0 
?

注意 ,这里使用了 --import?

具体描述 可以用 virt-install -h 来查看 --import 的作用。

?

ps: 有一个virt-clone 指令,貌似只能本机clone。没详细研究过。

BT

读书人网 >UNIXLINUX

热点推荐