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. ... ed_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的性能稳定性变差。 本文版权归传智播客云计算大数据学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客云计算大数据学院
首发:http://www.itcast.cn/javayun
|