更新时间:2017-12-18 来源:黑马程序员 浏览量:
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的性能稳定性变差。
本文版权归黑马程序员云计算大数据学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:黑马程序员云计算大数据培训学院