为什么要用虚拟机?

1 机器空闲,需要充分利用资源
2 运行的程序有危险性,需要用独立的机器处理,但又没有空闲机器
3 做一些测试性的操作
4 建立脱离机器配置的服务,容易迁移到另外的服务器,备份硬盘即可

有哪些虚拟机软件?

引用
1 老牌子的 VMWare (http://www.vmware.com/)
2 已漸趨成熟的 Xen (http://www.xensource.com/)
3 後起之秀 KVM (Kernel based Virtual Machine, http://kvm.qumranet.com/kvmwiki)
4 酷!炫!有勁的 VirtualBox (http://www.virtualbox.org/)


XEN使用半虛擬化的環境所具備的特色有:

引用
虛擬機器的運作效率與實體機器的效能相當;
最多可支援到具有 32 顆以上 CPU 的主機環境;
支援 x86/32, x86/32 含 PAE 技術, 及 x86/64 的硬體平台環境;
良好的硬體驅動程式支援,幾乎支援所有的 Linux 裝置之驅動程式;


安装XEN

yum -y install kernel-xen
yum -y install xen xen-libs python-virtinst


安装相应的软件后,修改启动文件:
/boot/grub/menu.lst

把xen内核版本的作为默认启动项,比如 title CentOS (2.6.18-164.15.1.el5xen)
重启机器后,“uname -r” 检查是否内核带有xen后缀

安装虚拟机

按鸟哥的文章安装吧,其实没有那么麻烦,本地建立web服务,把centos的dvd光盘mount到某个目录,web可以访问即可。当然了,cd版本的按他的做吧。

路由设置

我们看看默认的iptables设置,去掉注释:

[root@aslibra ~]# iptables-save |grep -v ^#
*nat
:PREROUTING ACCEPT [2163219:107750400]
:POSTROUTING ACCEPT [6604:476359]
:OUTPUT ACCEPT [6604:476359]
-A POSTROUTING -s 192.168.122.0/255.255.255.0 -d ! 192.168.122.0/255.255.255.0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [470097:452540975]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [346597:50757224]
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A FORWARD -d 192.168.122.0/255.255.255.0 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/255.255.255.0 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -m physdev  --physdev-in vif19624.0 -j ACCEPT
COMMIT


主要有两个:
1 本机需要作为forward网关,转发虚拟机的网络请求
2 对虚拟机的网络请求进行路由转换

自行处理的话,主要的脚本有:

#启用转发
echo 1 > /proc/sys/net/ipv4/ip_forward
#路由地址转换
$IPTABLES -t nat -A POSTROUTING -s 192.168.122.0/24 -j MASQUERADE
#端口转发,比如ssh登录
$IPTABLES -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 5022 -j DNAT --to-destination 192.168.122.5:22


默认的路由表要检查一下:

[root@aslibra ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
.... 省略 ... eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth1
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0
.... 省略 ...
default         .... 省略 ...  eth0


检查虚拟机是否设置的ip为virbr0网卡的网段。

一些命令

xm list 列出当前虚拟机
xm shutdown test 关闭test名称的虚拟机
xm shutdown -a 关闭所有虚拟机
xm create -c centos5 开启centos5配置文件里的虚拟机,并且接上当前界面

效率问题?

引用
我记得还是半虚拟化效率高。是这样的,虚拟化,我觉得楼主分的有问题,不考虑模拟器的话,虚拟化分为有硬件支持(主要是CPU)和没有硬件支持的虚拟化,最初标准的x86架构是不支持虚拟化的,VMWare等虚拟机的做法是在虚拟机执行的时候,预先取将要执行的指令,然后把其中的一些特权指令进行替换,所以效率底。而Xen等采用的半虚拟化则是在内核中进行修改,不去直接调用特权指令,所以效率高,我记得有90%的效率?

后来Intel和AMD在X86架构的CPU中各自加入了对虚拟化的支持,分别是VT和SVM。在CPU支持下,CPU就会有两种模式,Root和Non-root。Hypervisor运行在Root而虚拟机运行在Non-Root模式。在这种情况下,虚拟机可以调用特权指令,但是会转为Root模式处理,比以前来说不用软件去替换那么多的指令,所以效率就高一些。现在Xen、VMWare等都支持这种情况。

但是我们还是的注意,这里只是CPU支持了虚拟化,很多其他硬件设备还是不支持硬件虚拟化,所以还是有一部分的硬件需要通过软件进行模拟。所以效率还是不如半虚拟化高。


参考资料:

1 鸟哥 利用 Xen 設計虛擬機器
2 调整 Xen 虚拟硬盘大小
3 关于Xen的完全虚拟化和半虚拟化
4 xen 虚拟机管理


原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
Tags: ,
发表评论
表情
emotemotemotemotemotemotemotemotemotemotemotemotemot
emotemotemotemotemotemotemotemotemotemotemotemot
打开HTML 打开UBB 打开表情 隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写
 

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐