squeeze+kvm

http://openwares.net/linux/debian_kvm.html

http://openwares.net/linux/kvm_client_install.html

Debian Squeeze KVM虚拟机安装笔记(1):基础

基于内核的虚拟机KVM(Kernel-based Virtual Machine)是linux平台上的全虚拟化解决方案

KVM需要包含虚拟化支持的x86硬件,intel VT或者AMD-V。KVM使用修改后的QEMU作为前端工具,QEMU通过/dev/kvm设备与KVM交互。自kernel版本2.6.20 KVM随主线内核一起发行。

前提条件(prerequisite)

可以使用KVM的前提条件是CPU支持虚拟化技术,Intel VT或者AMD-V
$egrep ‘(svm|vmx)’ /proc/cpuinfo
如果有输出则说明CPU支持硬件虚拟化,SVM(Secure Virtual Machine)是AMD CPU支持硬件虚拟化的标志,VMX是INTEL CPU支持硬件虚拟化的标志

KVM安装

$sudo apt-get insall qemu-kvm
从squeeze开始KVM的包名改为qemu-kvm,kvm只是个占位dummy包

创建vdisk

$qemu-img create -f qcow2 client.qcow2 60G
创建一个60G的qcow2格式的虚拟磁盘文件,更多参数见man qemu-img

桥接网络

KVM支持很多网络类型,但是使用最方便的还是桥接网络,设置桥接网络,系统中必须存在以下三个命令
/sbin/ip
/usr/sbin/brctl
/usr/sbin/tunctl
所以需要安装一下包
$sudo apt-get install bridge-utils uml-utilities

编辑/etc/network/interfaces文件增加网络桥,增加的网络桥接口名字为br0,将主机网络接口桥接到此网络桥
 1 # This file describes the network interfaces available on your system
 2 # and how to activate them. For more information, see interfaces(5).
 3 
 4 # The loopback network interface
 5 auto lo
 6 iface lo inet loopback
 7 
 8 # The primary network interface
 9 #allow-hotplug eth0
10 #iface eth0 inet static
11 #   address 192.168.0.18
12 #   netmask 255.255.255.0
13 #   network 192.168.0.0
14 #   broadcast 192.168.0.255
15 #   gateway 192.168.0.1
16 #   # dns-* options are implemented by the resolvconf package, if installed
17 #   dns-nameservers 211.137.191.26
18 #   dns-search localdomain
19 
20 auto bond0
21 iface bond0 inet static
22     address 192.168.0.18
23     netmask 255.255.255.0
24     network 192.168.0.0
25     broadcast 192.168.0.255
26     gateway 192.168.0.1
27     slaves eth0 eth1
28     bond-mode balance-rr
29     bond-miimon 100
30 
31 auto br0
32 iface br0 inet static
33     address 192.168.0.18
34     netmask 255.255.255.0
35     network 192.168.0.0
36     broadcast 192.168.0.255
37     gateway 192.168.0.1
38     bridge_ports    bond0
39     bridge_stp  off
40     bridge_maxwait  0
41     bridge_fd   0   
42 
43 #auto tap0
44 #iface tap0 inet manual
45 #up ifconfig $IFACE 0.0.0.0 up
46 #down ifconfig $IFACE down
47 #tunctl_user yourusername

第38行 bridge_ports bond0,此处将主机的bonding接口bond0加入网络桥,如果没有网络接口聚合此处一般应为eth0
第47行将youeusername改为你登陆主机的用户名

使用桥接网络,客户机必须使用主机的一个tap设备将客户机的网络接口连接到主机的网络桥,tap设备可以用两种方式来设置

一种是静态方式,直接把tap设备的配置写道/etc/network/interfaces文件中,并将tap接口加入网络桥,将配置文件43-47行前的注释符#去掉,并将第38行改为如下
bridge_ports bond0 tap0
增加更多的tap接口依次类推

另一种为动态方式,网络配置文件中不写任何tap设备的配置,而由KVM的脚本/etc/kvm/kvm-ifup来动态完成tap接口的创建,以后创建客户机是会提到怎么用。

半虚拟化驱动Virtio

Virtio是KVM/Linux的I/O虚拟化框架,以增强KVM的IO效率,是与其他虚拟化平台的半虚拟化(Paravirtualized)类似的东西,主要应用于磁盘设备和网络接口设备。主流的linux发行版已经默认支持Virtio,如果客户机是linux则无需其他设置,直接可以使用Virtio设备,但是如果客户机是windows,则需要在客户机安装Virtio设备驱动,甚至在windows开始安装之前需要提前加载块设备驱动。windows Virtio驱动可从Fedora下载

如何安装客户虚拟机下篇再议。

 
 

Debian Squeeze KVM虚拟机安装笔记(2):客户机安装

KVM主机端设置完毕后,开始安装客户机,这里介绍两个客户机的安装,Debian Squeeze AMD64和Windows 2003 x64

当然主机系统是64位平台,必须的。

准备

因为要使用半虚拟化(Paravirtualized)驱动virtio,但是当前的Debian Stable版本也就是squeeze发行版的kvm并不支持从virtio驱动器启动,所以需要更新一下seabios,从Debian官方sid源下载seabios 0.6.1.2,然后手动安装该包 seabios_0.6.1.2-2_all.deb

$sudo dpkg -i seabios_0.6.1.2-2_all.deb

主机系统只安装了debian基本系统(base system),没有X,因此使用VNC来远程安装客户机,如果使用windows系统,请自行下载TightVNC Viewer。

KVM核心参数

这是只简单介绍几个主要的参数,详细的文档请见man kvm。

-bios file
指定虚拟机使用的BIOS,file指定BIOS文件路径

-smp n[,cores=cores][,threads=threads][,sockets=sockets][,maxcpus=maxcpus]
模拟一个有n个cpu的smp系统,可以简单的指定n为一个数值,或者分别指定socket数,core数/socket,线程数/core

-m megs
指定虚拟机使用的内存数量,可以使用M或G后缀

-rtc [base=utc|localtime|date][,clock=host|vm][,driftfix=none|slew]
指定虚拟机使用的时间,linux客户机使用-rtc base=utc,clock=host,windows客户机使用-rtc base=localtime,clock=host

-net nic,model=virtio,macaddr=52-54-00-12-34-01 -net tap,ifname=tap0
桥接网络,客户机网络接口通过tap接口桥接到主机网络,使用的tap接口名为tap0,由/etc/kvm/kvm-ifup来动态配置tap0接口。model=virtio指定虚拟机网卡使用半虚拟化驱动,如果有多个虚拟客户机同时运行则必须指定macaddr为一个独一无二的值,否则会出现mac地址冲突。如果通过主机的/etc/network/interfaces来静态配置tap接口,则此处应在-net tap接口处附加两个另外的参数script=no,downscript=no

-drive file=debian.img,if=virtio,index=0,media=disk,format=qcow2,cache=writeback
指定客户机使用的硬盘驱动器,if=virtio指定使用半虚拟化驱动,index=0指定该硬盘为接口的第一个驱动器,media=disk指定为硬盘驱动器,如果是光盘则为media=cdrom。旧式指定第一个硬盘驱动器的参数为-hda debian.img,已经不再推荐使用。

-drive file=debian.iso,index=2,media=cdrom或者-hdc debian.iso
指定光盘驱动器,debian.iso为使用的光驱映像文件

-fda file
指定软盘驱动器,file为软磁盘镜像

-no-fd-bootchk
客户机启动时不检查软盘驱动器,加速客户机启动

-boot order=c
指定引导顺序,c为第一个硬盘驱动器,d为第一个光盘驱动器

-vnc :0
将虚拟机的视频输出重定向到vnc端口,通过vnc viewer可以连接到虚拟机的视频输出

-nographic
禁止kvm虚拟机的视频输出

-daemonize
后台运行虚拟机

安装Debian Squeeze AMD64客户机

使用一下脚本开始安装debian客户机

#!/bin/bash

sudo kvm -bios /usr/share/seabios/bios.bin -smp 16 -m 4G -rtc base=utc,clock=host       \
    -net nic,model=virtio,macaddr=52-54-00-12-34-01 -net tap,ifname=tap0                \
    -boot order=c -no-fd-bootchk                                                        \
    -drive file=debian.img,if=virtio,index=0,media=disk,format=qcow2,cache=writeback    \
    -drive file=debian.iso,index=2,media=cdrom                                          \
    -vnc :0

这里指定虚拟机使用的BIOS,这样安装完成后才能从virtio磁盘启动客户机,debian.iso为客户机安装光盘镜像,远程通过vnc viewer连接到主机开始安装客户机,Debian Squeeze内置支持virtio设备支持,因此正常安装即可。

安装完毕开启sshd后,将-vnc :0参数更换为-nographic -daemonize,以后通过ssh登录即可。

安装windows 2003 R2 x64客户机

首先从Fedora下载virtio for windows驱动,使用如下脚本启动虚拟安装
#!/bin/bash

sudo kvm -bios /usr/share/seabios/bios.bin -smp 16 -m 2G -rtc base=localtime,clock=host     \
    -boot order=d                                                                           \
    -net nic,model=virtio,macaddr=52-54-00-12-34-02 -net tap,ifname=tap1                    \
    -drive file=win2k3_dns.qcow2,if=virtio,index=0,media=disk,format=qcow2,cache=writeback  \
    -drive file=windows_2003_r2_x64_cd1.iso,index=2,media=cdrom                             \
    -fda virtio-win-1.1.16.vfd                                                              \
    -vnc :0 

使用vnc viewer连接到主机开始安装,按F6加载virto驱动,否则会找不到硬盘驱动器,系统安装完成后将光驱换上virtio-win-1.1.16.iso安装virtio网卡驱动,打开远程桌面后将-vnc :0替换成-nographic -daemonize,然后用远程桌面管理虚拟机即可。

 

 

=====================================

 

http://forum.ubuntu.org.cn/viewtopic.php?f=65&t=360580

虚拟机及网络终极方案(VBox 与 KVM 齐行)

代码: [ 下载 ] [ 隐藏 ] [ 选择 ] [ 展开 ]
使用 text 语法高亮
# 更新日志:
2012-03-06
        行文排版有所变动。取消 starbr 脚本,直接利用 ifplugd 特性在后台启动网桥,因此也就显得简洁了些。
2012-03-03
        较上次无实质性改变,仅因 ifplugd 可弹出消息而略有变动。
2012-02-27
        此次更新及以前并无记录。
 
格式化 0.001 秒, 使用 GeSHi 1.0.8.4



环境:
Debian 6 squeeze
Ubuntu 兼容,其特别之处文中均有说明

壹:虚拟机安装
一、 VirtualBox

代码: [ 下载 ] [ 隐藏 ] [ 选择 ] [ 展开 ]
使用 bash 语法高亮
# ============================================================================
# 虚拟机(VirtualBox)
# http://www.virtualbox.org/wiki/Linux_Downloads
cd /tmp
wget http://download.virtualbox.org/virtualb ... e_vbox.asc
apt-key add oracle_vbox.asc
rm oracle_vbox.asc
cd -
cat >> /etc/apt/sources.list <<EOF
deb http://download.virtualbox.org/virtualbox/debian squeeze contrib non-free
EOF

aptitude update
aptitude search virtualbox
aptitude install -R dkms virtualbox-4.1

# ----------------------------------------------------------------------------
# 入组
gpasswd -a $XXX vboxusers
 
格式化 0.008 秒, 使用 GeSHi 1.0.8.4


非 Debian squeeze 系统的源列表请参看 VBox 官网说明。必须注意,只要你那系统版本对应的那一行便是,加多了定会造成混乱。不清楚自己所用版本名称的去这里看, Debian Ubuntu
顺便说句,少数情况下, VBox 可能无法使用 USB 设备,对此可用下面 qemu / kvm 那招(给 plugdev 组赋予操作权)解决。

二、 Qemu / KVM

代码: [ 下载 ] [ 隐藏 ] [ 选择 ] [ 展开 ]
使用 bash 语法高亮
# ============================================================================
# 虚拟机(qemu / kvm)
aptitude install -R qemu-system qemu-utils qemu-kvm
rm -f /lib/udev/rules.d/60-qemu-system.rules

# 若主机用 64 位系统,将默认 qemu 设为 qemu-system-x86_64 更妥
update-alternatives --config qemu

# 给 plugdev 组(不推荐 kvm 组)赋予 USB 设备操作权,不与 VBox 冲突,放心使用
vi /etc/udev/rules.d/10-usb-plugdev.rules #{
SUBSYSTEM=="usb_device"GROUP="plugdev"MODE="0664"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device"GROUP="plugdev"MODE="0664"
#}

# ----------------------------------------------------------------------------
# 入组
gpasswd -a $XXX kvm
# 若尚未入 plugdev 组,则再
gpasswd -a $XXX plugdev
 
格式化 0.009 秒, 使用 GeSHi 1.0.8.4


若无需模拟 ARM 等非 x86 架构,只要安装 qemu-kvm 即可。
Debian / Ubuntu 中 qemu-system(含 qemu 命令)与 qemu-kvm(含 kvm 命令)并不冲突。奇特的是, qemu 命令在 -enable-kvm 时只能使用单处理器, kvm 命令能用多核但在未加载 kvm 模块时并不出错而自动转用软模拟从而导致系统缓慢。所以最好两者都装上,然后更具需要用哪个命令。基本上 kvm 命令可看作就是自动带上 -enable-kvm 的 qemu 命令。
若只安装 qemu-system 而又不愿意安装 qemu-kvm,为了能自由切换 VBox 和 kvm,则应当提取 qemu-kvm 包中的 /etc/init.d/qemu-kvm 文件。
qemu-utils 包含的工具 qemu-kvm 中都有,貌似仅命令名不同而已。另, Ubuntu 11.10 并不含该包。
个人认为, qemu-system 应当是 qemu-kvm 的超集且两者互斥更为妥当。需要更多功能的就只装 qemu-system,否则就只装 qemu-kvm。

三、 VBox / KVM 切换

代码: [ 下载 ] [ 隐藏 ] [ 选择 ] [ 展开 ]
使用 bash 语法高亮
# ============================================================================
# VBox / KVM 切换
tar xf "${LOCALPKG}/swapvm.tar.gz" -C /

# 设置特权,方便切换
visudo #{
%kvm localhost/usr/local/bin/swapvm
%vboxusers localhost/usr/local/bin/swapvm
#}

# 若以 KVM 为主 VBox 为辅
insserv -r vboxballoonctrl-service
insserv -r vboxweb-service
insserv -r vboxdrv
# 若以 VBox 为主 KVM 为辅
insserv -r qemu-kvm
 
格式化 0.007 秒, 使用 GeSHi 1.0.8.4


VBox 与 KVM 的模块虽可同时加载,但无法同时使用,后加载的会令先加载的无效(后来居上)。若要同时运行两种虚拟机,必然有一种无法使用处理器的虚拟化技术而用纯软件模拟。所以,用 swapvm 命令切换也只不过是权宜之计。

附件:
 swapvm.tar.gz [391 Bytes] 
还未被下载 


SHA1: 86030614b3b9ae305f4df69861707458fea5a52b


贰:虚拟机网络终极方案
说终极难免有些夸张,但应该可以说是“已经能较好地满足大部分人的需求”了。或许你的需求没这么苛刻,简单的桥接一台虚拟机或用虚拟机自己的 NAT 或 USER 模式即可满足,但也不妨看上一眼。

一、需求
1. 能同时将多台虚拟机置于与宿主机同一网络之中(桥接多台虚拟机),从而使各虚拟机各物理主机都能两两通信。
2. 能将多台虚拟机置于一个内部局域网之中,以隔离更多的物理主机。但保证各虚拟机和宿主机之间可两两通信,同时能上因特网。
3. 统一 VBox、 Qemu 或 KVM 网络。当然, VBox 和 KVM 受限于内部机制而不能同时运行,但和 Qemu 同时运行没有任何问题。
3. 普通账户或某特定组即可操作(无须 root 账户或 sudo)。

二、网络结构

附件:
虚拟网络结构.png 
虚拟网络结构.png [ 75.11 KiB | 被浏览 865 次 ]



三、安装配置
前提:剥夺 network-manager 对 eth0 的控制权,断线重连交由 ifplugd 负责。

1. 安装 ifplugd 网卡监视器:

代码: [ 下载 ] [ 隐藏 ] [ 选择 ] [ 展开 ]
使用 bash 语法高亮
# ============================================================================
# 安装 ifplugd 网卡监视器
aptitude install -R ifplugd
tar xf "${LOCALPKG}/ifplugd-action.tar.gz" -C /
vi /etc/default/ifplugd #{
INTERFACES="eth0"
ARGS="-q -f -u3 -d10 -I"
#}
 
格式化 0.007 秒, 使用 GeSHi 1.0.8.4


ifplugd-action.tar.gz,此处并不附包,其下载及相关信息请看《令 ifplugd 支持网桥和弹出消息》。若链接已死请看我签名,若未直接显示相关信息,请点击【更多在此】!
/etc/default/ifplugd 中的 ARGS 默认或许有 -w,务必要将其去掉,否则在开机时将要花上很长的时间等待获取 IP,如果你用 DHCP 的话。

2. 安装虚拟网络基本工具:

代码: [ 下载 ] [ 隐藏 ] [ 选择 ] [ 展开 ]
使用 bash 语法高亮
# ============================================================================
# 虚拟网络
aptitude install -R bridge-utils vde2
# VBox 需要 libvdeplug.so,否则无法连接 VDE
cd /usr/lib/
ln -s libvdeplug.so.2.1.0 libvdeplug.so
cd -
 
格式化 0.006 秒, 使用 GeSHi 1.0.8.4


此二包或许已安装,但此处仍显式说明以求强调。

3. 配置网络:

代码: [ 下载 ] [ 隐藏 ] [ 选择 ] [ 展开 ]
使用 bash 语法高亮
# ----------------------------------------------------------------------------
# 网络配置
vi /etc/network/interfaces #{
auto lo tap0
#allow-hotplug eth0

iface lo inet loopback
        pre-up iptables-restore </etc/network/iptables.rules || true
        pre-up [ "`runlevel`" = "unknown" ] && echo 'eth0=br0' >/var/run/ifplugd.map || true
        #pre-up runlevel >/root/runlevel

iface eth0 inet dhcp
        pre-up ifdown br0
        post-up sed -i '/^eth0=/d' /var/run/ifplugd.map || true

## NAT
iface tap0 inet static
        address 192.168.10.1
        netmask 255.255.255.0
        vde2-switch -
        vde2-slirp -n 192.168.10.0 -dhcp
        up ifconfig tap0 down
        up ifconfig tap0 hw ether 52:53:00:00:00:00
        up ifconfig tap0 up

## Bridge
iface tap1 inet static
        address 192.168.0.1
        netmask 255.255.255.0
        vde2-switch -
        up ifconfig tap1 down
        up ifconfig tap1 hw ether 52:53:00:00:00:01
        up ifconfig tap1 up
iface br0 inet dhcp
        pre-up ifdown eth0
        pre-up ifup tap1
        pre-up ifconfig tap1 0.0.0.0
        bridge_ports eth0 tap1
        post-up sed -i '/^eth0=/d' /var/run/ifplugd.map || true
        post-up echo 'eth0=br0' >>/var/run/ifplugd.map
#}
 
格式化 0.011 秒, 使用 GeSHi 1.0.8.4


eth0 和 br0 构成互斥项,启动任何一个将自动停止另外一个。 tap1 可随 br0 启动但绝不可随 br0 关闭,因为 tap1 连接着若干虚拟机,不可轻易断开。
tap1 中 address 与 netmask 纯粹摆设,因为那是 static 方式必须的字段。不能用 manual 方式,因为那将导致 vde_switch 并不与之连接。
tap0、 tap1 最后都有三行为其专门特设一物理地址,以便于管理和使用。
无论开机时是要自动启动 eth0 还是启动网桥 br0, auto 与 allow-hotplug 行都不要填写 eth0 及 br0,我们利用 ifplugd 代劳。因为网桥通过 DHCP 获取 IP 太慢了, ifplugd 可在后台工作而不会拖延开机时间。
若希望一开机就能使用网桥,则应启用“iface lo”下面有“eth0=br0”那行,上例便是如此。若希望开机时自动启动 eth0 而不要网桥,则应注释掉该行。注意,该行是一个而不是两个大于号。
若启用了“eth0=br0”行但实际上开机后见到的只是 eth0 而不是 br0,则说明“[ "`runlevel`" = "unknown" ]”那里判断有误,只要临时开启下面一行“pre-up runlevel >/root/runlevel”并重启后查看 /root/runlevel 文件,将其内容替换掉“unknown”再重启即可。

4. 设置特权:

代码: [ 下载 ] [ 隐藏 ] [ 选择 ] [ 展开 ]
使用 bash 语法高亮
# ----------------------------------------------------------------------------
# 设置特权,方便切换
visudo #{
%vde2-net localhost/sbin/ifup br0
%vde2-net localhost/sbin/ifup eth0
%vde2-net localhost/sbin/ifup tap0, /sbin/ifdown tap0
%vde2-net localhost/sbin/ifup tap1, /sbin/ifdown tap1
#}

# ----------------------------------------------------------------------------
# 入组
gpasswd -a $USERNAME vde2-net
 
格式化 0.007 秒, 使用 GeSHi 1.0.8.4


br0 和 eth0 只有 ifup 而没有 ifdown,正如前面所说——互斥。
之所以对 vde2-net 组启用特权在于最小化风险范围,因为要使用 vde 的账户必然是该组成员。

5. 毕:
至此,凡是连接到 /var/run/vde2/tap0.ctl/ 的所有虚拟机都处于一内网之中,宿主机通过 tap0 加入该网络。所以宿主机和各虚拟机两两通信绝无障碍。
slirpvde 进程提供 DHCP 和 NAT 服务,以使该局域网中的机器能访问外网。当然,高级用户也可不用 slirpvde 而配置 iptable。

同理,凡是连接到 /var/run/vde2/tap1.ctl/ 的所有虚拟机都为桥接,与宿主机处于同一网络之中。
此处可连接多台虚拟机,而不再仅限一台,因为我们用了“交换机”,虚拟机接的是交换机而不是宿主机的 tap1。

正常使用虚拟机时并不需要 sudo 等提权手段。

四、何时用桥接
如果你只是想宿主机能访问虚拟机的服务或者各虚拟机之间能相互通信,那请用 NAT。
只有在你确定宿主机之外的其它物理主机需要访问你的虚拟机时才用桥接。
桥接是一种依赖外部网络的接入方式,如果外部网络出现问题(比如宿主掉线),那宿主机和虚拟机也将断掉联系。所以说没事别用桥接。

五、感慨
Debian 的 ifupdown 确实是个灵活统一而又优雅的机制。
其实整个配置并不难,关键在于你想要什么。总归一句“拓扑明而众结解”。

六、附
连接 VDE 示例,请配合相应虚拟机文档共同参考

1. Qemu / KVM:
启动参数加 -net vde,sock=...

代码:
-net nic,model=rtl8139,macaddr=52:53:00:00:08:01 -net vde,sock=/var/run/vde2/tap1.ctl



2. VirtualBox(两种方法):
其一,命令行:

代码: [ 下载 ] [ 隐藏 ] [ 选择 ] [ 展开 ]
使用 bash 语法高亮
# 在关闭相应虚拟机(例如 vm-debian1)的情况下,执行下述命令,一次便可,日后可照常启动虚拟机
VBoxManage modifyvm vm-debian1 --nic1 generic
VBoxManage modifyvm vm-debian1 --nicgenericdrv1 VDE
VBoxManage modifyvm vm-debian1 --nicproperty1 network=/var/run/vde2/tap1.ctl
 
格式化 0.006 秒, 使用 GeSHi 1.0.8.4


其二,图形界面设置:
网络设置页 -> 连接方式 -> Generic Driver -> 界面名称 -> VDE -> 高级 -> Generic Properties(属性) -> 输入“network=/var/run/vde2/tap1.ctl” -> 确定

_________________
(2012-03-07 首发)Debian 源列表说明(第二版)
(2012-03-06 首发)适合 WM 的截图脚本
(2012-03-06 更新)虚拟机及网络终极方案(VBox 与 KVM 齐行)
(2012-03-04 更新)令 ifplugd 支持网桥和弹出消息
▷▷【 更 多 在 此 】◁◁ ◁
如何表示感谢?右边小黄手。未见?新手当努力,发满十贴即见。
 

最后由 自由建客 编辑于 2012-03-08 19:37,总共编辑了 35 次

 

 

 

http://blog.sina.com.cn/s/blog_56fcfe4e0100v7tc.html

Debian Linux系统上的虚拟机KVM(完美安装windows系统)

 (2011-11-13 22:24:30)
  分类: Debian-squeeze
一、KVM基本知识
    关于KVM的基础知识,在这里不想做过多的介绍,那是你自己需要去了解的,这里我只将一些参考文档罗列出来:<<kvm: the Linux Virtual Machine Monitor>>,<<KVM Architecture Overview>>,<<Kernel-based Virtual Machine Technology>>,<<Architecture of the Kernel-based Virtual Machine(KVM)>>,<<Using KVM>>,<<Quick start Guide for installing and running KVM>>

二、桥接基本知识
    KVM中让guest系统同外界连通主要的一种方法。这里需要指明的是这种连接是让guest系统访问外界,也让外界访问guest,它和NAT(network address translate)是不同的。关于桥接的基本知识可以到网上查,其中有一篇有关于桥接常问问题的解答非常好。

三、在Debian Linux squezze上使用KVM
    (1)安装
         #apt-get install qemu-kvm virtinst libvirt-bin
         安装后两个的目的是使用一种统一的方法来管理虚拟机,不仅可用于管理KVM,还可以管理xen,virtualbox,openVZ等,不然的话,只需要安装第一个就可以了,但是你就要用qemu-kvm命令了,而下面的安装方法就不适合你了,但是我想说的是,一种统一的方法的出现是有它的理由的,自己琢磨去。
    (2)将你所需要运行KVM的用户加入组libvirt
         #adduser `id -un` libvirt      (这里将root用户加入libvirt组,如果要让其他用户可以运行KVM,那么用#adduser username libvirt)
    (3)virt-install命令有两个bug,一个是在使用virt-install安装过程中,因为使用的是光驱启动,如果加载了virtio硬盘驱动,那么virtio驱动的硬盘就处于离线状态,故在拷贝完文件后的重启就会遇到问题;第二个是virt-install不识别qcow2文件格式,故使用raw方式来创建硬盘。
    (4)创建硬盘
         #kvm-img create -f raw win2003.img 15G
    (5)安装win2003系统
         (一)#virt-install --connect qemu:///system --arch=x86_64 -n win2003 -r 1024 --vcpus=2 \
               --disk path=/u01/vm/disk-img/win2003.img,cache=writeback,device=disk,bus=virtio \
               --cdrom /u01/iso/win2003.iso \
               --os-type windows --os-variant win2k3 \
               --network bridge=br0,model=virtio --soundhw=ac97 --video=cirrus \
               --disk path=/u01/iso/virtio-win-1.1.16.vfd,device=floppy \
               --accelerate --hvm --vnc 0.0.0.0:1
         说明:win2003.iso这个是window2003的安装光盘,只要你有实际的安装光盘,它的制作就非常简单:#dd if=/dev/sr0 of=/u01/iso/win2003.iso。创建的虚拟机的硬盘的目录也是自己的爱好,上面的目录的构造是我喜欢把iso映像都放在一起,而虚拟机的硬盘映像也都放在一起,以及小驱映像也放在一个统一的目录中方便自己管理,个人可根据自己的习惯来安排。virtio-win-1.1.16.vfd是硬盘的virtio驱动,在安装启动时,按下F6键加载的,virtio-win-1.1.16.vfd和后面要用到的network的驱动程序自己去网上下载(virtio-win-1.1.15.iso),关于--network选项,可以去看关于桥接的内容,如果需要我会在后面的文章中写一下)。
         (二)现在,windows开始安装了,不要管它,另外开一个rxvt终端,输入:
               #virsh -c qemu:///system dumpxml win2003 > /root/win2003.xml
         (三)切换到安装界面,按F3终止windows的安装过程
         (四)修改我们刚才导出的文件win2003.xml,在<boot dev='cdrom'/>的后面加上一行:
               #vi win2003.xml (修改win2003.xml文件,加入:)
               <boot dev='hd'/>
         说明:这个修改就是因为前面所说的那个硬盘bug。
         (五)用我们刚才修改的文件来定义新的win2003虚拟机并启动它
               #virsh -c qemu:///system
               virsh# define win2003.xml
               virsh# start win2003
         (六)再开一个rxvt,输入:
               #virt-viewer -c qemu:///system win2003
         说明:开一个虚拟机的查看窗口,及时按下F6键(上面的输入和切换窗口的动作要快哦:),不然你又要按F3退出安装,重新来过,选择正确的驱动程序,win2003-32位的virtio驱动。
         (七)用这种方法安装不管是win2003,还是xp等系统不会超过20分钟,一次我只用了16分钟就装好了一个xp。
         (八)安装完之后,我们可以启动virt-manager,用来更换光驱内容,安装网络的驱动,当然了,可以用virtsh命令,但是我觉得太麻烦,有些东西还是图形的要方便一些。
posted @ 2012-03-16 15:17  陳聽溪  阅读(739)  评论(0)    收藏  举报