KVM以及virsh比较详细的说明·[转]

作者: csbde 分类: 未分类 发布时间: 2011-09-08 16:02

我这里的环境和下面转载的文章中的环境有所不一样: 我的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

代码:
sudo apt-get install kvm libvirt-bin python-virtinst bridge-utils
安装完了后,要将自己的用户名加入到libvirtd组中
代码:
sudo adduser $USER libvirtd
$USER是你自己的用户名 为了方便管理guest,ubuntu server最好装一下acpid
代码:
sudo aptitude install acpid
-.-!为什么没用apt-get 呢。。。 2.配置桥接 这一部分最迷惑人,最开始参考的是置顶贴,但其中的一句话理解错误“根据你的情况加入以下内容:”导致第一次配网络与服务器失去连接,到机房重启才继续进行,注意,这里的“加入”应该为“更改为”,可参考此贴http://hi.baidu.com/huakaiweizhi/blog/item/b53b16ced4ead72cb700c844.html 具体步骤: a.修改interfaces
代码:
sudo vim /etc/network/interfaces
本人原始配置
代码:
auto eth0 iface eth0 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
修改之后的配置
代码:
auto lo iface lo inet loopback # 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.重启网络,使配置生效
代码:
sudo /etc/init.d/networking restart
注意:对于远程操作者而言,这一步一定要谨慎操作,避免与服务器失去联系。 c.重启后,用ifconfig检查
代码:
ifconfig
正常的话,eth0应该不再有IP,虚拟的桥接网卡br0应该接管了eth0的配置,并将数据转到eth0 我的显示:
代码:
br0       Link encap:以太网  硬件地址 00:1b:78:9b:c1:5e inet 地址:10.3.1.35  广播:10.3.1.127  掩码:255.255.255.192 inet6 地址: fe80::21b:78ff:fe9b:c15e/64 Scope:Link UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1 接收数据包:9989322 错误:0 丢弃:0 过载:0 帧数:0 发送数据包:11703348 错误:0 丢弃:0 过载:0 载波:0 碰撞:0 发送队列长度:0 接收字节:5763086071 (5.7 GB)  发送字节:7809744229 (7.8 GB) 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启动安装:
代码:
sudo virt-install --connect qemu:///system -n win2003 -r 1024 --vcpus=2 --disk path=/home/kvm/win2003/win2003.img,cache=writeback,size=90 -c /home/darkofday/win2003.iso --vnc --noautoconsole --os-type windows --accelerate --network=bridge:br0,model=rtl8139 --hvm --os-variant=win2k3
这一步(如果用kvm命令,也有可能出现)如果出现如下错误提示:
代码:
pci_add_option_rom: failed to find romfile "pxe-rtl8139.bin" inet_parse: ipv4 parse error (100)
执行如下命令可修复
代码:
sudo apt-get install kvm-pxe
说明:
代码:
--connect qemu:///system
是将画面连接到qemu:///system服务,以便在远程计算机上用virt-viewer控制安装过程。
代码:
-n win2003
这个是给GUEST取一个名字,很有用,以便virt-viewer连接,同时方便用virsh管理
代码:
--disk path=/home/kvm/win2003/win2003.img,cache=writeback,size=90
指定将安装好的虚拟磁盘置于/home/kvm/win2003/win2003.img,大小90G;这个地方不需要事先创建虚拟磁盘,与qemu-kvm不同,如果没有事先创建,该命令会自动创建。
代码:
--network=bridge:br0,model=rtl8139
将guest的网络桥接到br0,网卡选rtl8139,当然也可以选择其它型号的虚拟网卡,具体可参考man virt-install b.在自己的电脑(desktop)上远程控制安装过程 执行上述命令后,服务器端就已经启动安装过程了,此时,你需要一台电脑(linux操作系统,带桌面的,可以用自己的笔记本)来控制安装过程。您需要先在desktop上安装virt-viewer:
代码:
sudo apt-get install virt-viewer
然后,启用root窗口
代码:
su
远程连接到服务器安装过程
代码:
virt-viewer --connect qemu+ssh://[email protected]/system win2003
在这个过程中,需要输入两次服务器端的root密码,如果服务器端没有设置root密码,可以用如下命令设置
代码:
sudo passwd 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
virsh的具体命令可以参考其帮助,也可以参考网上的,不过最常用的也就这么几个:
代码:
help
简易帮助文档
代码:
list
列出通过virt-install 安装的,正在运行的guest。
代码:
list --all
列出所有guest
代码:
start win2003
启动一个guest,比如win2003
代码:
shutdown win2003
关闭一个guest,比如win2003
代码:
destroy 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
代码:
sudo apt-get install mkisofs
然后将/home/darkofday/share/sql2005x86.rar(也可以是文件夹)文件制作成/home/darkofday/sql2005.iso
代码:
mkisofs -r -o /home/darkofday/sql2005.iso /home/darkofday/share/sql2005x86.rar
ISO文件制作好了。然后进入virsh
代码:
virsh
给win2003附加cdrom(注意,win2003必须是开机状态才能附加,不然会报错)
代码:
attach-disk win2003 /home/darkofday/sql2005.iso hdc --mode readonly --driver file --type cdrom
附加成功。]]>

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注