配色: 字号:
KVM简明手册
2012-03-19 | 阅:  转:  |  分享 
  
KVM是一个基于linux内核的虚拟机解决方案。本文介绍KVM的使用方法,以及注意要点。

参考资料:?KVM虚拟机和QEMU?linuxbrctl

先决条件

硬件环境

CPU硬件虚拟化

32位与64位

安装KVM

虚拟机连网

brctl

桥接

安装以及运行虚拟机

kvm常用命令

安装虚拟操作系统

远程登录

先决条件

硬件环境

x86(包括32位和64位),就是我们常用的系统。

CPU硬件虚拟化

kvm需要系统CPU支持,下面命令如果有输出,说明CPU支持硬件虚拟化:

egrep"flags.:.(svm|vmx)"/proc/cpuinfo

32位与64位

下面是32bit与64bit和主机系统与虚拟操作系统的关系:

主机操作系统 虚拟机操作系统 是否支持 32位 32位 是 32位 46位 否 64位 32位 是 64位 64位 是 总结为一句话:不能在32位主机上装64位的操作系统。

安装KVM

yao@debian:~$apt-getinstallkvmqemuuml-utilities

一般情况下,安装好kvm后能就自动加载内核模块,你也可以手动加载:

yao@debian:~$modprobekvm_intel#orkvm_amd

虚拟机连网

虚拟机连网是头等大事,所以我们先解决这个问题。通过桥接可以实现联网,主要用到的命令有:brctl,ifconfig,tunctl,route

brctl

brctl是一个以太网桥接工具,常见的用法有:

命令原型 例子 说明 brctlshow brctlshow 显示已有网桥 brctladdbr brctladdbrbr0 增加网桥br0 brctldelbr brctldelbrbr0 删除网桥br0 brctladdif brctladdifbr0eth0 将接口eth0接到网桥br0 brctldelif brctldelifbr0eth0 从网桥上删除一个接口 如果发现无法删除网桥,那么可能是还没有将其关闭:

yao@twomoon:~$sudobrctldelbrbr0

bridgebr0isstillup;can''tdeleteit

yao@twomoon:~$sudoifconfigbr0down

yao@twomoon:~$sudobrctldelbrbr0

桥接

说了这么多,到这才是重点。首先,将物理网卡桥接:

yao@twomoon:~$ifconfig-a|grepeth

eth0Linkencap:EthernetHWaddr90:fb:a6:14:cd:42

yao@twomoon:~$brctladdbrbr0

yao@twomoon:~$brctladdifbr0eth0

yao@twomoon:~$ifconfigeth00.0.0.0

yao@twomoon:~$ifconfigbr0192.168.1.51up

这样又多了一个网络设备br0:

yao@twomoon:~$LANG=Cifconfig-a|grepEthernet

br0Linkencap:EthernetHWaddr2a:24:d3:aa:99:e7

eth0Linkencap:EthernetHWaddr90:fb:a6:14:cd:42

如果没有弄明白为什么,可以上网找找桥接的资料和brctl的用法。

当然不能每次开机后都要手工输入这么多命令。你可以将这些命令写成一个脚本,每次开机就执行这个脚本:

#!/bin/bash

#networking.sh



#changeeth0toyournetworkinterface(eg.eth1)



ifconfiglo127.0.0.1up



if[!-z"`ifconfig-a|grepbr0`"];then

ifconfigbr0down

brctldelifbr0eth0

brctldelbrbr0

fi



brctladdbrbr0

brctladdifbr0eth0

ifconfigeth00.0.0.0up

ifconfigbr0192.168.1.51up

routeadddefaultgw192.168.1.1



exit0

也可以写到网卡的配置文件配置文件(/etc/network/interfaces)里,效果是一样的:

autolo

ifaceloinetloopback



autobr0

ifacebr0inetstatic

address192.168.1.51

netmask255.255.255.0

gateway192.168.1.1

bridge_portseth0

安装以及运行虚拟机

kvm常用命令

参数 示例 说明 -hda -hda/data/windows.img 指定windows.img作为硬盘镜像 -cdrom -hda/data/windows.iso 指定windows.iso作为光盘镜像 -boot -bootc 从硬件启动 ? -bootd 从光盘启动 -m -m512 分配512M内存给虚拟系统 -vnc -vnc:0 作为vnc服务器 -cpu -cpu? 列出支持的CPU ? -cpucore2duo 指定CPU为core2duo -smp -smp2 指定虚拟机有2个CPU -net -netnic 为虚拟机网卡(默认为tap0) ? -nettap 系统分配tap设备(默认为tap0)1 ? -netnic-nettap 将虚拟机的网卡eth0连接真机里的tap0 安装虚拟操作系统

生成镜像文件:

yao@twomoon:~$sudokvm-imgcreatewindows2003-x86.img25G-f"vmdk"

安装系统:

yao@twomoon:~$sudokvm-bootd-m512-hda~/kvm/windows2003-x86.img-cdrom~/software/wzmb2003.iso

运行系统:

yao@twomoon:~$sudokvm-bootc-m512-hda~/kvm/windows2003-x86.img-netnic-nettap

可以发现多了一个网络设备tap0,这是系统自动创建的。

yao@twomoon:~$LANG=Cifconfig-a|grepEthernet

br0Linkencap:EthernetHWaddr2a:24:d3:aa:99:e7

eth0Linkencap:EthernetHWaddr90:fb:a6:14:cd:42

tap0Linkencap:EthernetHWaddr2a:24:d3:aa:99:e7

远程登录

如果虚拟机是linux,那么就用ssh;如果是windows,那么就用rdesktop。

yao@debian:~$rdesktop-uusername-ppasswd192.168.1.52-f&

记得用Ctrl-Alt-Enter从全屏中切回来。



1.?在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备。不同于普通靠硬件网路板卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行与操作系统上的软件提供与硬件的网络设备完全相同的功能。TAP等同于一个以太网设备,它操作第二层数据包如以太网数据帧。TUN模拟了网络层设备,操作第三层数据包比如IP数据封包。操作系统通过TUN/TAP设备向绑定该设备的用户空间的程序发送数据,反之,用户空间的程序也可以像操作硬件网络设备那样,通过TNU/TAP设备发送数据。在后种情况下,TUN/TAP设备向操作系统的网络栈投递(或“注入”)数据包,从而模拟从外部接受数据的过程。(摘自维基百科)



献花(0)
+1
(本文系忧郁_小刚首藏)