我这里的环境和下面转载的文章中的环境有所不一样:
我的host主机是centos6,原本计划也是安装的ubuntu服务器版的。结果弄了近一天,查了无数资料,不得不面对一个显示,钠就是ubuntu11.04 server版的对RAID5的支持太差了,或者说基本不支持。只好又老老实实的装成了centos6 64bit
guest准备弄2003
最近远程管理着一台HP DL系列的服务器,硬件支持虚拟化,所以准备用kvm将其榨干,虚拟出多台服务器。
HOST操作系统:ubuntu server 10.04.2 64bit
客户机操作系统:1.win2003 sp2 32bit
2.debian 6.0.1a 32bit
预期:
1.职能划分 HOST操作系统专职伺候GUEST操作系统,具体的应用放在GUEST操作系统中。
2.网络预期 HOST操作系统和各个GUEST操作系统采用桥接方式,静态分配IP,处在同一网段。为了方便叙述,假定HOST的IP为10.3.1.35,两个GUEST的IP分别为10.3.1.36和10.3.1.37.
3.数据共享 实现HOST和GUEST之间的数据共享。
4.管理 方便管理,最好有远程管理工具。
步骤:
1.前期准备条件:
最小化安装ubuntu server 10.04.2 64bit(已经自带部分KVM),软件安装请参考本站置顶贴(http://forum.ubuntu.org.cn/viewtopic.php?f=65&t=154792),由于整个过程是不断摸索,所以有些软件安装的具体过程没有留下记录。
但必须安装kvm,qemu-kvm,libvirt-bin
安装完了后,要将自己的用户名加入到libvirtd组中
$USER是你自己的用户名
为了方便管理guest,ubuntu server最好装一下acpid
-.-!为什么没用apt-get 呢。。。
2.配置桥接
这一部分最迷惑人,最开始参考的是置顶贴,但其中的一句话理解错误“根据你的情况加入以下内容:”导致第一次配网络与服务器失去连接,到机房重启才继续进行,注意,这里的“加入”应该为“更改为”,可参考此贴http://hi.baidu.com/huakaiweizhi/blog/item/b53b16ced4ead72cb700c844.html
具体步骤:
a.修改interfaces
本人原始配置
dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 10.1.0.40
dns-search ubuntu
修改之后的配置
The primary network interface
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 10.3.1.35
netmask 255.255.255.192
network 10.3.1.68
broadcast 10.3.1.127
gateway 10.3.1.129
dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 10.1.0.40
dns-search ubuntu
bridge_ports eth0
bridge_stp off
bridge_maxwait 5
bridge_fd 0
b.重启网络,使配置生效
注意:对于远程操作者而言,这一步一定要谨慎操作,避免与服务器失去联系。
c.重启后,用ifconfig检查
正常的话,eth0应该不再有IP,虚拟的桥接网卡br0应该接管了eth0的配置,并将数据转到eth0
我的显示:
eth0 Link encap:以太网 硬件地址 00:1b:78:9b:c1:5e
inet6 地址: fe80::21b:78ff:fe9b:c15e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:12338743 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:11084473 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:8041899891 (8.0 GB) 发送字节:5870981468 (5.8 GB)
中断:16 Memory:f8000000-f8012800
lo Link encap:本地环回
inet 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 跃点数:1
接收数据包:194873 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:194873 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:0
接收字节:123538384 (123.5 MB) 发送字节:123538384 (123.5 MB)
至此,桥接网络成功
3.安装GUEST(以win2003为例)
准备工作:将win2003的安装镜像放到服务器目录中,假定放在/home/darkofday/win2003.iso;假定安装好的虚拟磁盘位于/home/kvm/win2003/win2003.img
a.服务器端操作启动安装
远程到服务器,用virt-install启动安装:
这一步(如果用kvm命令,也有可能出现)如果出现如下错误提示:
执行如下命令可修复
说明:
是将画面连接到qemu:///system服务,以便在远程计算机上用virt-viewer控制安装过程。
这个是给GUEST取一个名字,很有用,以便virt-viewer连接,同时方便用virsh管理
指定将安装好的虚拟磁盘置于/home/kvm/win2003/win2003.img,大小90G;这个地方不需要事先创建虚拟磁盘,与qemu-kvm不同,如果没有事先创建,该命令会自动创建。
将guest的网络桥接到br0,网卡选rtl8139,当然也可以选择其它型号的虚拟网卡,具体可参考man virt-install
b.在自己的电脑(desktop)上远程控制安装过程
执行上述命令后,服务器端就已经启动安装过程了,此时,你需要一台电脑(linux操作系统,带桌面的,可以用自己的笔记本)来控制安装过程。您需要先在desktop上安装virt-viewer:
然后,启用root窗口
远程连接到服务器安装过程
在这个过程中,需要输入两次服务器端的root密码,如果服务器端没有设置root密码,可以用如下命令设置
安装好win2003后,就可以设置网络了,设置好网络后,guest就可以与外界自由联通了,这时也可以不通过virt-viewer,而直接通过远程桌面连接管理win2003了。(本人在此处走了弯路,由于用了一个有问题的win2003安装镜像,装好后,不管如何设置,找了N多资料,网络死活不通,想死的心都有了,一两天后才意识到可能是镜像的问题,换了个镜像文件,立马好了,尼玛啊~~~)
本段参考资料:http://www.howtoforge.com/installing-kvm-guests-with-virt-install-on-ubuntu-8.10-server
4.服务器端管理guest
服务器端用virsh管理guest,有人可能想要一个和vmware-server类似的web管理界面,其实有的,甚至有基于kvm,做的和vmware-esx类似的虚拟机操作系统,还有分布式管理的,但管理一台服务器的话,还是virsh省心,可以参考:http://www.linux-kvm.org/page/Management_Tools
执行以下命令,就可以进入virsh
virsh的具体命令可以参考其帮助,也可以参考网上的,不过最常用的也就这么几个:
简易帮助文档
列出通过virt-install 安装的,正在运行的guest。
列出所有guest
启动一个guest,比如win2003
关闭一个guest,比如win2003
彻底关闭一个guest,包括释放其占用的资源,不影响虚拟磁盘本身,还可以通过start命令启动guest。
5.服务器host和guest之间共享数据
如果guest是linux,可以通过设置NFS来实现;如果guest是windows,也可以安装NFS服务来实现,不过要麻烦的多。我现在主要是guest中需要获取host中存放的软件,是通过virsh附加device实现将数据单向传送到win2003中的,觉得通过virsh也可以实现双向,但还没有摸透。先说说单向的吧。
首先,我实现的是把服务器上的镜像文件(iso或其它可以mount的文件),通过给win2003附加cdrom的方式单向共享。如果文件不是iso格式,可以通过mkisofs来制作,很简单。先安装mkisofs
然后将/home/darkofday/share/sql2005x86.rar(也可以是文件夹)文件制作成/home/darkofday/sql2005.iso
ISO文件制作好了。然后进入virsh
给win2003附加cdrom(注意,win2003必须是开机状态才能附加,不然会报错)
附加成功。
Comments powered by Disqus.