云计算大数据:Xen、KVM、VMware、hyper-v等虚拟化技术的比较
1、Xen、KVM、VMware、hyper-v等虚拟化技术的比较,xen和kvm,是开源免费的虚拟化软件。
vmware是付费的虚拟化软件。
hyper-v比较特别,是微软windows 2008 R2附带的虚拟化组件,如果你买了足够的授权,hyper-v(包括hyper-v 2008 core)都可以免费使用。
如果是vmware或hyper-v虚拟windows系统,不管是虚拟化软件本身,还是其中的子系统,都要支付许可费用。
如果是vmware或hyper-v虚拟linux,虚拟化软件本身要支付许可费用,子系统可以用linux来节省成本。
如果是xen或kvm虚拟windows,其中的子系统要支付许可费用。
如果是xen或kvm虚拟linux,那么虚拟化软件本身和其中的子系统无需产生任何费用。
从性能上来讲,虚拟windows,如果都能得到厂商的支持,那么,性能优化可以不用担心。这几款软件全都能达到主系统至少80%以上的性能(磁盘,CPU,网络,内存),这时建议使用hyper-v来虚拟windows,微软自身的产品,虚拟windows是绝对有优势的。
如果是虚拟linux,建议首先使用xen,支持linux的半虚拟化,可以直接使用主系统的cpu和磁盘及网络资源,达到较少的虚拟化调度操作,可以达到非常高的性能,但xen操作复杂,维护成本较高。其次我们推荐kvm来虚拟linux,linux本身支持kvm的virtio技术,可以达到少量的虚拟化调度操作,得到较高的系统性能。
不推荐使用hyper-v来虚拟linux,太多的不兼容性导致linux基本无法在hyper-v上跑。
如果以上产品我们不打算买厂商支持,其中vmware和hyper-v,是不建议使用的,主要是授权问题。
这时就剩下kvm和xen了,如果虚拟windows,建议使用kvm,我们可以从redhat那里免费拿到针对windows优化过的磁盘和网络的驱动程序,可以达到较高的性能(几乎与hyper-v性能持平)。而xen的windows优化驱动不是那么容易就能拿到的(由于redhat以后不支持xen了,看看novell是否放水了,呵呵,就开放程度上来讲,redhat要好于novell)。
综上所述, 在有授权的情况下,虚拟windows,建议使用hyper-v 在有授权的情况下,虚拟linux,建议使用xen,如考虑到需要降低管理维护和学习成本,建议使用kvm。
在没有授权的情况下,虚拟windows,建议使用KVM
2、KVM基本介绍
在2010年4月发布的RHEL6.0版本中,去掉了XEN,这也许是第一个不包含Xen Hypervisor的知名linux发行版。KVM是指基于Linux内核的虚拟机(Kernel-base Virtual Machine),增加到Linux内核是Linux发展的一个重要里程碑,这也是第一个整合到Linux主线内核的虚拟化技术。在KVM模型中,每一个虚拟机都是一个由Linux调度程序管理的标准进程,你可以在用户空间启动客户机操作系统,一个普通的Linux进程有两种运行模式:内核和用户,KVM增加了第三种模式:客户模式(有自己的内核和用户模式)。
1 KVM虚拟机的管理工具
准确的来说,KVM仅仅是Linux内核的一个模块,管理和创建完整的KVM虚拟机,需要更多的辅助工具。
QEMU-KVM:在Linux系统中,首先我们可以用modprobe命令加载KVM模块,如果用RPM安装KVM软件包,系统会在启动时自动加载模块,QEMU是一个强大的虚拟软件,它可以虚拟不同的构架。
Virt-manager:尽管QEMU-KVM工具可以创建和管理KVM虚拟机,RedHat为KVM开发了更多的辅助工具,比如 libvirt libguestfs等,原因是QEMU工具效率不高,不易于使用。
2 安装配置KVM相关软件
2.1系统要求:
处理器需求:需要一台可以运行最新linux内核的Intel处理器(含VT虚拟化技术)或AMD处理器(含SVM安全虚拟机技术的AMD处理器,也叫AMD-V)
[root@vfeelit ~]# cat /etc/redhat-release
CentOS release 6.4 (Final)
2.2检查CPU:
[root@vfeelit ~]# egrep ‘vmx|svm’ /proc/cpuinfo
如果输出的结果包含VMX,它是Intel处理器虚拟机技术标志:如果包含SVM,它是AMD处理器虚拟机技术的标志,如果你什么都没有得到,那应你的系统并没有支持虚拟化的处理,不能使用KVM,另处linux发行版本必须在64bit环境中才能使用KVM。
3 更新系统
yum update
yum upgrade
4 安装KVM
[root@vfeelit ~]#yum -y install kvm python-virtinst libvirt bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v
[root@vfeelit ~]#vi /etc/sysconfig/selinux
SELINUX=disabled
[root@vfeelit ~]#reboot
5 重启后确认libvirtd是否正常启动
[root@vfeelit ~]# /etc/init.d/libvirtd restart
正在关闭 libvirtd 守护进程: [确定]
启动 libvirtd 守护进程:2013-05-19 03:12:52.694+0000: 3070: info : libvirt version: 0.10.2, package: 18.el6_4.5 (CentOS BuildSystem , 2013-05-16-14:53:18, c6b7.bsys.dev.centos.org)
2013-05-19 03:12:52.694+0000: 3070: warning : virGetHostname:2265 : getaddrinfo failed for 'vfeelit': 未知的名称或服务
[确定]
6 检查KVM是否加载成功
显示结果如下表示kvm模块已经加载,如果没有输出信息,则表示没有加载成功:
[root@vfeelit ~]# lsmod | grep kvm
kvm_intel 53484 0
kvm 316506 1 kvm_intel
7 检查KVM是否成功安装
[root@vfeelit ~]# virsh list --all ##--all关闭的也会显示
Id 名称 状态
----------------------------------------------------
8 各版本查询
[root@vfeelit ~]# kvm --version
bash: kvm: command not found
[root@vfeelit ~]# virt-install --version
0.600.0
[root@vfeelit ~]# virsh --version
0.10.2
9 修改qemu.conf配置
[root@vfeelit ~]# vi /etc/libvirt/qemu.conf
vnc_listen = "0.0.0.0"修改vnc监听端口
二 配置网络桥接
参考:http://www.techotopia.com/index.php/Creating_an_RHEL_6_KVM_Networked_Bridge_Interface
1 安装tunctl:
yum install -y tunctl
2 禁用网络管理器:
chkconfig NetworkManager off ##和桥接有冲突,要关闭
service NetworkManager stop
3 修改eth0为物理网口,br0为桥接网口配置文件:
[root@vfeelit network-scripts]# cat ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPV6INIT=no
ONBOOT=yes
IPADDR=192.168.1.66
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DELAY=0
[root@vfeelit network-scripts]# cat ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
BRIDGE=br0
BOOTPROTO=none
IPV6INIT=no
ONBOOT=yes
附加说明:这里配置成桥接方式,实际上本机的数据包发送是通过br0发送的,br0的TYPE是Bridge,其它的信息跟配置一个物理网卡一样,本机的eth0通过桥接到br0(通过BRIDGE指定)进行通信,它根本不需要配置IP信息,实际上数据发送还是通过本机的物理网卡。
4 最后重启网络
[root@vfeelit network-scripts]# service network restart
5 查看桥接网络
[root@vfeelit ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0021cc6b6f2c no eth0
virbr0 8000.525400ac7ebe yes virbr0-nic
接口eth0通过br0进行桥接。birbr0-nic通过virbr0进行桥接,这个是默认的设置,当使用NAT时使用。
三 使用virt-install 工具安装guest 系统
[root@vfeelit /]# virt-install --name=centos64 --ram 1024 --vcpus=2 --disk path=/var/lib/libvirt/images/centos64.img,size=10 --accelerate --cdrom /mnt/CentOS64.iso --graphics vnc,password=123456,port=5920 --network bridge=br0 --force --autostart
使用virt-install 工具,工具自动创建磁盘,默认是raw格式。
[root@vfeelit]# qemu-img info centos.img
image: centos.img
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 1.4G
1 可以通过virt-viewer查看安装状态:
[root@vfeelit virtual]# virt-viewer name
2 使用virt-install 工具安装虚拟机后,在目录/etc/libvirt/qemu/下生成xml 配置文件。
[root@vfeelit ~]# cd /etc/libvirt/qemu
[root@vfeelit ~]# cat centos64.xml
虚拟机类型
centos 虚拟机名称
54da30ed-150d-514e-9803-4dc01bd50488 uuid唯一标示
1048576 指定虚拟机内存大小,给出了单位
2 虚拟机占用虚拟cpu个数,这里指物理cpu的核心数量
hvm 指定虚拟系统架构
启动类型,从硬盘启动
/usr/libexec/qemu-kvm 驱动程序,同上,使用的是qemu-kvm
指定磁盘类型
指定磁盘格式,这里是raw,也支持qcow2.
img文件路径
磁盘文件标示,驱动类型
自动生成,可以手动指定。
桥接到哪一个接口
3 使用virsh工具管理生成的虚拟机
[root@vfeelit ~]# virsh start centos64 启动虚拟机 reboot start shutdown
[root@vfeelit ~]# virsh list 列出当前运行的虚拟机
Id Name State
----------------------------------------------------
1 centos64 running
[root@vfeelit ~]# ll /var/lib/libvirt/qemu
total 12
srwxr-xr-x 1 root root 0 Aug 22 09:53 centos.monitor ##这里的文件,是libvirtd在重启后,虚拟机也随着自动重启。
动态查询kvm资源占用情况,每一台VM,对应一个qemu-kvm进程
[root@vfeelit ~]# top -d 1 | grep kvm
4 截取的kvm进程信息
[root@vfeelit ~]# ps -aux | grep kvm
其他问题
1、图形化配置:从菜单中启动,或者运行virt-manager进入图形管理界面,比较简单,不过img的位置需要注意一下,kvm安装后会有一个默认位置,不注意的话容易占满空间。或者直接硬盘分区时单独给/var分一个区。
2、虚拟机重新配置:
虚拟机的配置文件保存在/etc/libvirt/qemu目录下,扩展名是xml。修改相应的文件即可重新配置虚拟机。
3、虚拟机备份及恢复:
备份:拷贝/etc/libvirt/qemu目录下的xml配置文件,以及xml中设置的img文件。
恢复:进入virsh,执行define 目录下的xml文件路径
virsh # define /etc/libvirt/qemu/winxp.xml
4、开机自动启动虚拟机:
[root@vfeelit qemu]# virsh autostart Winxp
5、克隆KVM虚拟机:
[root@vfeelit ~]# virt-clone -o Winxp -n winxpclong -f /var/lib/libvirt/images/winxpclong.img
(-o 原始客体的名称,-n新客户端的名称,-f作为新客户端磁盘映像的新文件)
6、虚拟机意外关机报下述错误:
[root@vfeelit qemu]# virsh start winxp
错误:开始域 winxp 失败
错误:Unable to read from monitor: Connection reset by peer
解决方法:virsh managedsave-remove winxp
Virsh语法参考:
Autostart 自动开始一个域
Create 从一个 XML 文件创建一个域
Define 从一个 XML 文件定义(但不开始)一个域
edit 编辑某个域的 XML 配置
shutdown 关闭一个域
start 开始一个(以前定义的)非活跃的域
reboot 重新启动一个域
suspend 挂起一个域
resume 重新恢复一个域
vncdisplay vnc 显示
使用save来备份当前虚拟机的状态:
[root@vfeelit images]# virsh save –bypass-cache RedHat /var/lib/libvirt/images/test.img –running
上面这个命令将RedHat的当前状态保存到/opt/vm2_save文件中。–running参数表示下次restore回来的时候能够自动启动RedHat。
这个命令会导致RedHat被关闭。
现在还原:必须先关闭虚拟机
[root@vfeelit images]# virsh shutdown RedHat
[root@vfeelit images]# virsh restore /var/lib/libvirt/images/test.img –bypass-cache –running (还原时不要指定虚拟机名称)
3、KVM自动部署及基本操作
随着 IT 产业的不断发展, IT 技术的不断革新,近几年虚拟化、云计算技术火热,那我们今天来研究一下虚拟化技术,到底什么是虚拟化技术呢?我们为什么要使用虚拟化呢?
虚拟化 是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。
虚拟化技术 可以扩大硬件的容量,简化 软件 的重新配置过程。 CPU 的 虚拟化技术 可以单 CPU 模拟多 CPU 并行,允许一个平台同时运行多个操作系统,并且 应用程序 都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
目前主流的虚拟化技术主要有: KVM 、 Xen 、 VMware 、 VirtualBox ,虚拟化技术也越来越广泛的应用在企业中,今天我们来研究和复习一下 KVM 虚拟化集群的搭建。
1、系统版本:
CentOS 6.4 x86_64
2、处理器需求:
需要一台可以运行最新 linux 内核的 Intel 处理器(含 VT 虚拟化技术)或 AMD 处理器(含 SVM 安全虚拟机技术的 AMD 处理器,也叫 AMD-V )
[root@kvm~]# cat /etc/redhat-release
CentOSrelease 6.4 (Final)
3、CPU 支持需求 :
[root@localhost~]# egrep 'vmx|svm' /proc/cpuinfo
如果输出的结果包含 VMX ,它是 Intel 处理器虚拟机技术标志:如果包含 SVM ,它是 AMD 处理器虚拟机技术的标志,如果你什么都没有得到,那应你的系统并没有支持虚拟化的处理,不能使用 KVM ,另处 linux 发行版本必须在 64bit 环境中才能使用 KVM 。
4、KVM正式安装:
这里直接使用脚本,比较方便快捷,了解更多可以参官方网站。(仅供参考,后期不断优化)
#!/bin/sh
#Auto Make KVM Virtualization
#Author wugk 2013-12-06
#Defined Path
DAY_DIR=/data/backup/`date +%Y%m%d`
cat <
++++++++++++++++Welcome To Use Auto Install KVM Scripts ++++++++++++++++++
+++++++++++++++++++++++++This KVM Install Virtual ++++++++++++++++++++++++
+++++++++++++++++++++++++2013-12-06 Author wugk ++++++++++++++++++++++++++
EOF
KVM_SOFT=(
kvm python-virtinst libvirt bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v libguestfs-tools
)
NETWORK=(
HWADDR=`ifconfig eth0 |egrep "HWaddr|Bcast" |tr "\n" " "|awk '{print $5,$7,$NF}'|sed -e 's/addr://g' -e 's/Mask://g'|awk '{print
$1}'`
IPADDR=`ifconfig eth0 |egrep "HWaddr|Bcast" |tr "\n" " "|awk '{print $5,$7,$NF}'|sed -e 's/addr://g' -e 's/Mask://g'|awk '{print
$2}'`
NETMASK=`ifconfig eth0 |egrep "HWaddr|Bcast" |tr "\n" " "|awk '{print $5,$7,$NF}'|sed -e 's/addr://g' -e 's/Mask://g'|awk '{print
$3}'`
GATEWAY=`route -n|grep "UG"|awk '{print $2}'`
)
#Check whether the system supports virtualization
egrep 'vmx|svm' /proc/cpuinfo >>/dev/null
if
[ "$?" -eq "0" ];then
echo 'Congratulations, your system success supports virtualization !'
else
echo -e 'OH,your system does not support virtualization !\nPlease modify the BIOS virtualization options (Virtualization
Technology)'
exit 0
fi
if
[ -e /usr/bin/virsh ];then
echo "Virtualization is already installed ,Please exit ...." ;exit 0
fi
yum -y install ${KVM_SOFT[@]}
/sbin/modprobe kvm
lsmod | grep kvm >>/dev/null
if
[ "$?" -eq "0" ];then
echo 'KVM installation is successful !'
else
echo 'KVM installation is falis,Please check ......'
exit 1
fi
cd /etc/sysconfig/network-scripts/
mkdir -p $DAY_DIR
if [ ! -e $DAY_DIR/ifcfg-eth0 ];then
cp ifcfg-eth* $DAY_DIR/
fi
if
[ -e /etc/sysconfig/network-scripts/ifcfg-br0 ];then
echo "The ifcfg-br0 already exist ,Please wait exit ......"
exit 2
else
cat >ifcfg-eth0 <
DEVICE=eth0
BOOTPROTO=none
${NETWORK[0]}
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Ethernet
BRIDGE="br0"
${NETWORK[1]}
${NETWORK[2]}
${NETWORK[3]}
USERCTL=no
EOF
cat >ifcfg-br0 <
DEVICE="br0"
BOOTPROTO=none
${NETWORK[0]}
IPV6INIT=no
NM_CONTROLLED=no
ONBOOT=yes
TYPE="Bridge"
${NETWORK[1]}
${NETWORK[2]}
${NETWORK[3]}
USERCTL=no
EOF
fi
echo 'Your can restart Ethernet Service: /etc/init.d/network restart !'
echo '---------------------------------------------------------'
sleep 1
echo 'Your can restart KVM Service : /etc/init.d/libvirtd restart !'
echo
echo -e "You can create a KVM virtual machine: \nvirt-install --name=centos01 --ram 512 --vcpus=1 --disk
path=/data/kvm/centos01.img,size=7,bus=virtio --accelerate --cdrom /data/iso/centos58.iso --vnc --vncport=5910 --vnclisten=0.0.0.0 --
network bridge=br0,model=virtio --noautoconsole"
自此KVM简单安装到此结束,安装完毕,怎样来创建一个虚拟机并且安装呢,首先我们把需要安装的系统ISO镜像上传到/data/iso目录,然后新建/data/kvm虚拟机安装目录,然后启动如下脚本:
virt-install --name=centos01 --ram 512 --vcpus=1 --disk path=/data/kvm/centos01.img,size=7,bus=virtio --accelerate --cdrom /data/iso/centos58.iso --vnc --vncport=5910 --vnclisten=0.0.0.0 --network bridge=br0,model=virtio
然后在客户端(PC机)使用VNC客户端连接KVM服务端5910端口,进行安装系统即可。
当安装完一台后,如何快速启动第二台呢,这里只需要复制我们刚安装的第一台的两个文件(/data/kvm/centos01.img /etc/libvirt/qemu/centos01.xml),然后做相应修改即可。
204720916.png
还可以使用命令克隆:
nohup virt-clone -o centos01 -n centos02 -f /data/kvm/centos02.img &
这样就配置完毕,怎样重启两台虚拟机呢?命令如下:
(参数主要有reboot、start、shutdown)
virsh reboot centos01 (重启)
virsh reboot centos02 (重启)
virsh start centos01 (启动)
virsh start centos02 (启动)
当我们启动新克隆的两台虚拟机,我们会发现网卡无法启动,原因是因为克隆改变新虚拟机的MAC地址,故eth0无法启动,新的虚拟机后网卡变成了eth1,那我们怎样修改为eth0呢,使用如下脚本,执行,然后重启网卡(或者重启系统)即可。
#!/bin/sh
#Auto Set Centos6.x eth1 MAC to eth0
NET=/etc/udev/rules.d/70-persistent-net.rules
ETH0=/etc/sysconfig/network-scripts/ifcfg-eth0
sed -i '/eth0/s/SUBSYSTEM/#SUBSYSTEM/g' $NET
HWADDR=`grep eth1 $NET|awk '{print $4}'|awk -F'==' '{print $2}'|sed 's/\,//g'`
sed -i "s/HWADDR.*/HWADDR=$HWADDR/g" $ETH0
sed -i -e '/^SUBSYSTEM/s/eth1/eth0/' -e '/#SUBSYSTEM/s/eth0/eth1/' -e 's/#SUBSYSTEM/SUBSYSTEM/' $NET
#This script applies only two NIC configuration
COUNT=`grep "SUBSYSTEM" $NET|awk '{print $NF}'|sed 's/[^0-9]//g'|awk 'NR==2'`
if
[ $COUNT == 0 ];then
echo 'The IP MAC Change Successfully !'
else
echo "The IP MAC Change Fails,Please rerun the Shell Scripts"
fi
KVM简单操作就先介绍到这里,更多功能和维护在后期会更新。
本文参考如下文章,非常感谢:
http://koumm.blog.51cto.com/703525/1290191
http://g.51cto.com/netengineer/216414
4、KVM常见问题
1.error:no hypervisor options were found ofr this connection
this usually means that qemu or kvm is not installed on your machine,or the kvm kernel modules are not loaded.
解决方法:开启bios虚拟化并加载modprobe kvm以及kvm_intel.
2.Unable to migrate guest: unsupported configuration: Domain requires KVM, but it is not available. Check that virtualization is enabled in the host BIOS, and host configuration is setup to load the kvm modules.
解决方法:方法同上.
3.Unable to migrate guest: Unable to allow access for disk path /img/musf-clone1-2-clone.img: No such file or directory
解决方法:迁移与被迁移主机的共享目录一定要一样.即server1目录为/img server2目录也要为/img.
4.Unable to migrate guest: unable to connect to server at 'kvm3:49153': Connection refused
解决方法:1.开启防火墙上端口或关闭防火墙.
2.在virt-manager的迁移中添加迁移端口.
5.Unable to migrate guest: Timed out during operation: cannot acquire state change lock
解决方法:...求科普..而且是大部分虚拟机都可以迁移就一个不成..找不到北ing...
1.虚拟机起不来的情况下.使用kill -9 `ps -ef|grep 'libvirtd --daemon'|grep -v grep |awk '{print $2}'`杀死libvirt --daemon进程并重启libvirtd --daemon
6.error: Unable to initialize network sockets. Check /var/log/messages or run without --daemon for more info.
事件还原:使用virtual host模式安装完centos,并且yum安装好vdsm之后,开启vdsm不能,开启libvirtd不能。显示该错误如上。
解决方法:进入/etc/libvirt/libvirtd.conf修改listen_tls为0即可.
7.Host 25 installation failed. SSH command failed while executing at host 'root@192.168.20.25', refer to logs for further information。
事件还原:安装vdsm之后从ovirt管理界面加入当前vdsm主机时出现错误。原因之一为vdsm-cli未安装。安装即可。
8.在ovirt-engine中添加data/nfs作为存储域时并不能成功。
解决方法:1.可以试试查看一下将要共享的文件夹权限是否是vdsm:kvm。若不是使用chown -R命令即可。
authentication name
9.vdsm在加入ovirt时会使用sasl再次加密libvirt,所以使用virt-manager连接libvirt时需要输入 authentication name & passowrd。
解决方法:使用saslpassword2 -a命令创建另一组认证名和密码用于virt-manager对libvirt的访问即可。
命令格式: saslpasswd2 -a libvirt 用户名
10.部分主机创建虚拟机成功,开启虚拟机时出现error...
VM CentOS6.3T is down. Exit message: internal error Process exited while reading console log output: bind(unix:/var/lib/libvirt/qemu/channels/CentOS6.3T.com.redhat.rhevm.vdsm): Permission denied chardev: opening backend "socket" failed
由于../channels这个文件夹的权限是vdsm qemu。root用户可能不能读取并创建其中的文件。我采用的方法是手动在qemu.conf中注释掉.user = root 以及 group = root并重启libvirtd。
之后出现错误:VM CentOS6.3T is down. Exit message: internal error client socket is closed.
还有VM test is down. Exit message: cannot open file '/rhev/data-center/78e07dee-36bc-439b-b71e-72cfd87a2bb3/f84e3679-281e-41d4-9ea9-b8221085fa7b/images/2e93290e-f1b5-42b2-bdf6-fad695de2ccb/ef334a97-e01b-4d7c-afb0-814ffbe537f0': Permission denied.
这两个错误都是由于libvirt设置问题才报错的.
我直接覆盖了libvirtd.conf qemu.conf以及vdsm.conf文件.最近权限问题整的我焦头烂额啊.以后再找具体错误.
1.系统(处理器)需求?
你将需要一台运行最新Linux内核的Intel处理器(含VT虚拟化技术)或AMD处理器(含SVM安全虚拟机技术的AMD处理器, 也叫AMD-V)。
2.什么是Intel VT/AMD-V?
Intel VT和AMD’s AMD-V是一套与支持该技术的虚拟机监视器相结合的硬件增强特性(指令集扩展)。kvm可在原始硬件速度下通过运行完全隔离的虚拟机来执行任务。
3.如何确认处理器含有Intel VT或AMD-V技术?
在最新的Linux内核下运行: egrep ‘^flags.*(vmx|svm)’ /proc/CPUinfo
如有显示,您的处理器具有VT功能。你也可以通过厂商网站查询处理器型号的名称(在/proc/cpuinfo)。
注:一些厂商禁止了机器BIOS中的VT选项, 这种方式下VT不能被重新打开。
./proc/cpuinfo仅从Linux 2.6.15(Intel)和Linux 2.6.16(AMD)开始显示虚拟化方面的信息. 请使用uname -r命令查询您的内核版本。
如有疑问, 请联系硬件厂商。
4.kvm支持哪些用户空间工具?
kvm使用稍改动的qemu程序来创建虚拟机. 一旦运行后, 虚拟机是一个标准的进程. 你可以使用top(1),kill(1),taskset(1)和类似的工具来管理虚拟机。
5.kvm支持哪些虚拟磁盘格式?
kvm从qemu继承了丰富的磁盘格式, 包括裸映象(raw images), 原始qemu格式(qcow), VMware格式和更多。
6.kvm和Xen有何区别?
Xen是一个外部的hypervisor程序(虚拟机管理程序);它能够控制虚拟机和给多个客户机分配资源. 另一方面, kvm是linux的一部分, 可使用通常的linux调度器和内存管理. 这意味着kvm更小更易使用。
另一方面, Xen同时支持全虚拟化和半虚拟化(修改过的客户机能有更好的性能). kvm当前不支持半虚拟化。
7.kvm和VMware有何区别?
VMware是一个专利产品. kvm是一个遵守GPL的自由(开源)软件。
8.kvm和QEMU有何区别?
Qemu使用模拟器; kvm使用处理器扩展实现虚拟化。
Array.kvm有Windows上的版本吗?
当前没有。
10.kvm支持哪些内核版本?
kvm可以运行在最新的内核版本下(2.6.16或更高, 最好是用最新的内核)
11.我需要多什么RAM(内存)才能运行kvm?
你需要足够的内存在主机上运行单个或多个虚拟机. 建议主机内存至少1GB。
12.KVM上的虚拟机支持哪些操作系统?
我们已经测试了Linux(32/64位)和Windows(32位), 其它也许能够运行或不能运行。不支持64位的Windows操作系统, 该问题会在qemu-0.83发布和整合后修复。
Intel处理器上几个Linux发行版在启动时候会挂起。工作区需要取消grub中的splashscreen选项。
13.KVM支持动态迁移功能吗(在不离线的情况下把虚拟机从一个主机移到另一个主机上)?
现在kvm支持非动态迁移,当内存数据需转移的时候,系统需要停止。动态迁移功能正在开发当中。
14.kvm能够在64为主机上运行32位的客户机吗? 什么是PAE?
kvm支持在64位主机上运行32位客户机, 也可以是任何PAE或非PAE客户机和主机组合。但不支持在32位主机上运行64位客户机。
15.如果我对一个VM进程使用kill -Array将会发生什么?
从客户机的角度来看,就如你猛地把电源线从主机上拔出一样。从主机的角度来看,进程被杀掉,进程占用的所有资源被施放。
16.kvm支持SMP主机吗?
支持。
17.如何安装windows客户机?
当前Windows客户机安装存在一点问题,问题在APIC的实现上。现在APIC由qemu来模拟, 而qemu还没有完全整合到kvm虚拟cpu中。我们正加紧在kvm中实现APIC功能。
到现在, 启动qemu请使用-no-acpi参数,如果你的客户机需使用APIC HAL,建议参考下面步骤:
1. 关闭kvm运行客户机(-no-kvm)
My Computer -> PropertIEs -> Hardware -> Device Manager -> [Whatever under Computer] -> Properties -> Update Driver -> Not at this time -> Next -> Install from a list -> Next -> Don’t search -> Next -> Standard PC -> Next.
“Standard PC”是无acpi支持的HAL.
18.Qumranet提供哪些产品?
umranet是一家由Qequoia Capital和Norwest Venture Partners (NVP)投资的初创公司,当前公司处于准备运营当中(正在加紧开发公司的产品)。(T002)
5、KVM使用经验
虚拟化技术已经成为未来计算机技术的一个重要的发展方向。linux在虚拟化方面已经有了很多中解决方案: VMware、 VirtualBox、Xen和KVM。KVM是一个全虚拟化的解决方案。可以在x86架构的计算机上实现虚拟化功能。但KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行。Xen也是Linux下的一个虚拟化解决方案,也将很快被编入内核中。Xen的实现方法是,运行支持Xen功能的kernel……
一.KVM简介
虚拟化技术已经成为未来计算机技术的一个重要的发展方向.linux在虚拟化方面已经有了很多中解决方案,:VMware,VirtualBox,Xen和KVM。
KVM是一个全虚拟化的解决方案。可以在x86架构的计算机上实现虚拟化功能。但KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。
Xen与KVM的比较
Xen也是Linux下的一个虚拟化解决方案,也将很快被编入内核中。Xen的实现方法是,运行支持Xen功能的kernel,这个kernel是工作在Xen的控制之下,叫做Domain0,使用这个kernel启动机器后,你可以在这个机器上使用qemu软件,虚拟出多个系统。Xen的缺点是,如果你需要更新Xen的版本,你需要重新编译整个内核,而且,稍有设置不慎,系统就无法启动。
相比较,KVM就简化的多了。它不需要重新编译内核,也不需要对当前kernel做任何修改,它只是几个可以动态加载的.ko模块。它结构更加精简,代码量更小,所以,出错的可能性更小。并且在某些方面,性能比Xen更胜一筹。
二.KVM的使用
现在以Turbolinux 11版本为基础,介绍KVM的使用方法。
在安装之前,你需要先确认,你的CPU是否支持虚拟化技术,执行:
# egrep '^flags.*(vmx|svm)' /proc/cpuinfo
如果有输出返回,则表示,你的CPU支持虚拟化技术。
1.KVM的安装
从官方网站下载KVM源码包:http://kvm.qumranet.com/
我们使用KVM-33版本
# tar zxf kvm-33.tar.gz
# cd kvm-33
# ./configure --prefix=/usr/local/kvm-33
# make
# make install
make install后,kvm的模块会安装到/lib/modules/$KernelVersion/extra/目录下.其他相关文件会安装到/usr/local/kvm-33/目录下。
将kvm相关目录连接到系统目录中
# ln -s /usr/local/kvm-33/bin/* /usr/bin/
# ln -s /usr/local/kvm-33/lib/* /usr/lib/
(若为x86_64系统,则执行: ln -s /usr/local/kvm-33/lib64/* /usr/lib64/)
# ln -s /usr/local/kvm-33/include/kvmctl.h /usr/include/
# ln -s /usr/local/kvm-33/include/linux/* /usr/include/linux/
# ln -s /usr/local/kvm-33/share/qemu /usr/share/
2.KVM的使用
a.你需要先建立一个映像文件,作为虚拟系统的硬盘
# mkdir /images
# cd /images
# /usr/bin/qemu-img -f qcow gtes11.img 20G
b.创建网络配置脚本
# echo '/sbin/ifconfig $1 10.0.1.1 netmask 255.255.255.0' > /etc/qemu-ifup
c.加载KVM模块
Intel CPU使用:
# modprobe kvm-intel
AMD CPU使用:
# modprobe kvm-amd
d.安装虚拟系统
# /usr/bin/qemu-i386 -m 512 -k en-us -M pc -hda /images/gtes11.img -cdrom /iso/zuma-SP3-rc3-6-
disc1-20061031.iso -net nic,vlan=1,model=rtl8139,macaddr=00:00:00:00:99:01 -net tap,vlan=1,ifname=tap0,
script=/etc/qemu-ifup -vnc localhost:1 -boot d
在另一个终端执行:
# vncviewer localhost:1
参数分析:
我们为虚拟系统分配512MB内存.使用gtes11.img作为它的第一块硬盘,使用Turbolinux10.5的disc1作为它的光盘。
并从光盘引导.它有一块rtl8139的网卡,MAC地址为:00:00:00:00:99:01,并把这个网卡与主机的tap0接口连接。
tap0接口使用/etc/qemu-ifup脚本进行初始化.虚拟系统的输出作为一个vnc服务器,绑定在主机的localhost:1上。
注:
1.若为x86_64系统,则使用/usr/bin/qemu-system-x86_64 代替qemu-i386
2.在64位系统上,可以安装32位和64位的虚拟系统.但在32位系统上,只能安装32位的虚拟系统。
qemu参数介绍:
-da 映像文件: 使用映像文件作为虚拟系统的第一块硬盘.同样还可以使用hdb,hdc,hdd指定第2,3,4块硬盘。
-drom 光盘映像文件: 使用光盘映像文件作为虚拟系统的光盘。
-oot [a|c|d|n]: 设置虚拟系统的引导顺序,a为软驱,c为硬盘,d为光驱,n为网络。
- 内存大小: 设置虚拟系统使用的内存大小,单位为MB。
- 语言: 设置虚拟系统键盘类型。
-et nic[,vlan=n][,macaddr=addr][,model=type]
建立一个虚拟网卡,并把它连接到VLAN的n端口上。
-net tap[,vlan=n][,fd=h][,ifname=name][,script=file]
把主机的TAP网络接口连接到VLAN的n端口上,并使用script指定的脚本进行初始化。
6、VNC Viewer 连接成功后闪退的解决方法
2013年12月3日Linux技术VNCVNC ViewerVNC闪退1 Comment
VNC是个不错的工具,今天掏出VNC Viewer来连接一台N久没登陆的服务器看看,输入密码连上后直接闪退,可能是ColourLevel的问题。
依次点Option-->Advanced-->Expert找到ColourLevel,默认值是pal8,修改为rgb222或full。
重新连接,没有问题了。
yum grouplist 检查已安装的组
yum groupinstall "X Window System"
yum groupinstall "GNOME Desktop Environment"
startX
7、CentOS用yum安装X Window
安装CentOS 5.6系统的时候我没有先装任何组件,现在用X Window,需要再安装X Window,就可以启动图形界面了,但是默认的图形界面是很简陋的界面,可以根据需要再安装GNOME或KDE桌面环境
安装X图形界面
#可查询哪些组件是否已经安装(可用来对照组件名称)
yum grouplist
#安装X图形界面系统
yum list 列出所有可安装的软件包 可以通过 yum grouplist 来查看可能批量安装哪些列表 比如 #yum groupinstall "DNS Name Server" //安装 bind 及 bind-chroot 套件
yum groupinstall "X Window System" -y
#安装GNOME桌面环境
yum groupinstall "GNOME Desktop Environment" -y
#安装KDE桌面环境
yum groupinstall "KDE (K Desktop Environment)"
卸载
卸载GNOME桌面环境
yum groupremove GNOME Desktop Environment'
卸载KDE桌面环境
yum groupremove 'K Desktop Environment'
启动X图形界面的方法
1、startx
2、设置开机自动启动,修改/etc/inittab
id:3:initdefault: ------> id:5:initdefault:
3、init 5
默认桌面环境选择
一、设置GNOME或者KDE为默认的启动桌面环境
方法1:修改/etc/sysconfig/desktop,根据需要将“DESKTOP”后面的参数设置为KDE或GNOME。
方法2:在当前用户目录下建立“.xinitrc”这个文件,文件的内容就一行startkde或gnome-session。
二、GNOME和KDE的切换
1、如果需要切换到GNOME:
#switchdesk gnome
2、如果需要切换到KDE:
#switchdesk kde
2、如果需要切换到KDE:
#startkde
图形界面与字符界面的切换
在Linux中是有多控制台的,其中前6个是字符界面,第七个是图形界面。
如果你需要切换到字符界面,可以使用CTRL+ALT+Fn来实现,其中Fn是F1-F6中的任何一个,
当然如果你是在字符界面之间互相切换就没必要CTRL了,直接ALT Fn
8、安装VNC
yum -y install vnc *vnc-server*
vim /etc/sysconfig/vncservers
vncpasswd
/etc/init.d/vncserver start
9、vCPU数量配置
vCPU,顾名思义,是虚拟CPU。 创建虚拟机时,需要配置vCPU资源。 因此vCPU是虚拟机的部件。 因此脱离VM,谈论vCPU是没有意义的。
虚拟化管理系统如何调度vCPU,取决于系统内的虚拟机数目以及虚拟机配置的vCPU的情况。
大致的情况如下:
1、当系统内VM所需的vCPU总数少于物理CPU的核数(包括超线程Core)时,虚拟化管理系统为vCPU分配的资源不超过一个物理CPU核。 vCPU与物理核的分配关系可以是绑定的,也可能是动态的。
比如服务器有20个核心,你创建了2个VM,每个VM 4个vCPU,那么这两个VM最多能够使用服务器的8个核心。
2、当系统内的VM所需要的vCPU核大于物理CPU核数时,虚拟化管理系统首先按照时间片轮流调度一遍,然后如果还有剩余的CPU资源,则给所需要的vCPU。 比如系统配置了40个vCPU,只有20个物理核。那么平均每个vCPU获取一个核心50%的资源。由于一些VM忙,一些VM空闲,虚拟化系统会在一个调度周期内,划分出若干时间片,轮流给每个vCPU使用。忙的vCPU可以使用完整个时间片,而闲的vCPU用不完整个时间片,会提前释放资源。这样在一个调度周期内,对每个vCPU都调度一遍后还有空闲的时间,调度器会把用这剩余的资源去调度忙的vCPU。 这样兼顾公平和效率。 这中调度算法具体下来,大致是如下效果:系统有1个CPU 2.0 Ghz,两个VM,分配1个vCPU。 如果VM1 和 VM2都忙,那么各自相当于拥有一个1.0 Ghz的CPU。 如果VM1很忙,VM1只需要 500Mhz的处理能力,那么在VM1看来,相当于暂时获得了 1.5Ghz的处理器。
3、通过对Xen的测试,系统所有虚拟机的vCPU的总数目小于和等于CPU核数时,VM的性能是比较稳定的。 VM的vCPU基本上绑定到了一个CPU核。 当vCPU数目大于物理核数时,VM的性能稳定性变差。
云计算大数据:Xen、KVM、VMware、hyper-v等虚拟化技术的比较的更多相关文章
- 如何成为云计算大数据Spark高手
Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台,它立足于内存计算,性能超过Hadoop百倍,从多迭代批量处理出发,兼收并蓄数据仓库.流处理和图计算等多种计算范式,是罕见的全能选手. ...
- 【互动问答分享】第6期决胜云计算大数据时代Spark亚太研究院公益大讲堂
“决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第6期互动问答分享] Q1:spark streaming 可以不同数据流 join吗? Spark Streaming不同的数据流 ...
- 王家林 Spark公开课大讲坛第一期:Spark把云计算大数据速度提高100倍以上
王家林 Spark公开课大讲坛第一期:Spark把云计算大数据速度提高100倍以上 http://edu.51cto.com/lesson/id-30815.html Spark实战高手之路 系列书籍 ...
- 【互动问答分享】第15期决胜云计算大数据时代Spark亚太研究院公益大讲堂
"决胜云计算大数据时代" Spark亚太研究院100期公益大讲堂 [第15期互动问答分享] Q1:AppClient和worker.master之间的关系是什么? AppClien ...
- 【互动问答分享】第13期决胜云计算大数据时代Spark亚太研究院公益大讲堂
“决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第13期互动问答分享] Q1:tachyon+spark框架现在有很多大公司在使用吧? Yahoo!已经在长期大规模使用: 国内也有 ...
- 【互动问答分享】第10期决胜云计算大数据时代Spark亚太研究院公益大讲堂
“决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第10期互动问答分享] Q1:Spark on Yarn的运行方式是什么? Spark on Yarn的运行方式有两种:Client ...
- 【互动问答分享】第8期决胜云计算大数据时代Spark亚太研究院公益大讲堂
“决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第8期互动问答分享] Q1:spark线上用什么版本好? 建议从最低使用的Spark 1.0.0版本,Spark在1.0.0开始核心 ...
- 【互动问答分享】第7期决胜云计算大数据时代Spark亚太研究院公益大讲堂
“决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 [第7期互动问答分享] Q1:Spark中的RDD到底是什么? RDD是Spark的核心抽象,可以把RDD看做“分布式函数编程语言”. ...
- 云计算&大数据相关知识
1.极客学院云计算&大数据总链接:http://wiki.jikexueyuan.com/list/cloud/ 一.NSQ相关参考资料: 1.极客学院NSQ指南:http://wiki.ji ...
随机推荐
- 用C语言实现Ping程序功能
本文转载自:http://www.ibm.com/developerworks/cn/linux/network/ping/ ping命令是用来查看网络上另一个主机系统的网络连接是否正常的一个工具.p ...
- java工具类(二)之java正则表达式表单验证
java正则表达式表单验证类工具类(验证邮箱.手机号码.qq号码等) 这篇文章主要介绍了java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等方法,需要的朋友可以参考下. jav ...
- saiku查询结果返回地址(saiku交互过程)
提交mdx语句,执行后, 查询结果的获得,访问这个地址: http://99.999.99.99:8080/saiku/rest/saiku/anonymousUser/query/4FF7D01E- ...
- Oracle EBS 重新编译无效对象 invalid object
1. 查看数据库中的无效对象 check oracle object SQL> select count(*) from dba_objects where status= ...
- 手持机设备公司(WINCE/ANDROID/LINUX)
1.深圳扬创科技有限公司网址: http://www.yctek.com/ 2.无锡盈达聚力科技有限公司 点击打开链接 3.上海鲲博通信技术有限公司(主要为用WINCE开发导航产品) 点击打开链接 4 ...
- 如何写好一个UITableView(完整版)
本文是直播分享的简单文字整理,直播共分为上.下两部分.第一部分:优酷 Or YouTube,第二部分:优酷 Demo 地址:KtTableView 如果你觉得UITableViewDelegate和U ...
- 详解Linux2.6内核中基于platform机制的驱动模型 (经典)
[摘要]本文以Linux 2.6.25 内核为例,分析了基于platform总线的驱动模型.首先介绍了Platform总线的基本概念,接着介绍了platform device和platform dri ...
- Ubuntu14.04安装androidStudio错误解除
错误1 ubuntu androidStudio :app:mergeDebugResources FAILED 办法: sudo dpkg --add-architecture i386 sudo ...
- 设置UIButton中的文字和图片,设置UILabel的文在显示不同颜色
UIButton: UIEdgeInsets 在UIButton中有三个对EdgeInsets的设置:ContentEdgeInsets.titleEdgeInsets.imageEdgeInsets ...
- [Zabbix3.0] 添加MySQL监控
zabbix3.0 server已经自带MySQL的模板了,只要修改agent端,然在web端给主机添加模板就好了. Agent端操作 /etc/zabbix/zabbix_agentd.d/user ...