一. 概念介绍:
(1)全虚拟化(Full Virtulization)
简介:主要是在客户操作系统和硬件之间捕捉和处理那些对虚拟化敏感的特权指令,使客户操作系统无需修改就能运行, 速度会根据不同的实现而不同,但大致能满足用户的需求。这种方式是业界现今最成熟和最常见的,而且属于 Hosted 模式和 Hypervisor 模式的都有,知名的产品有IBM CP/CMS,VirtualBox,KVM,VMware Workstation和VMware ESX(它在其4.0版,被改名为VMware vSphere)。
其中,Hypervisors 通过一个仿真硬件层为其上的每个Guest操作系统(虚拟机)仿真出一个具有常用硬件设备的标准服务器,当一个运行的Guest系统试图用特权指令控制硬 件时,hypervisor会将真实的硬件隐藏起来,并仿真一个硬件设备给Guest系统,从而使得Guest系统无需修改代码就可以安全地访问硬件。
(全虚拟化都需要CPU的特殊支持(比如Intel VT 以及AMD-V)?如果没有CPU特殊支持就不能通过全虚拟化模拟OS?)
优点:Guest OS无需修改,速度和功能都非常不错,更重要的是使用非常简单,不论是 VMware 的产品,还是 VirtualBox。
缺点:基于Hosted模式的全虚拟产品性能方面不是特别优异,特别是I/O方面。
(2)半虚拟化(Parairtulization)
简介:它与完全虚拟化有一些类似,它也利用Hypervisor来实现对底层硬件的共享访问,但是由于在Hypervisor 上面运行的Guest OS已经集成与半虚拟化有关的代码,使得Guest OS能够非常好地配合Hyperivosr来实现虚拟化。通过这种方法将无需重新编译或捕获特权指令,使其性能非常接近物理机,其最经典的产品就是Xen,而且因为微软的Hyper-V所采用技术和Xen类似,所以也可以把Hyper-V归属于半虚拟化。
Guest 系统在访问真实硬件时是重用当前系统的驱动,而不是通过仿真的硬件实现的。Guest系统和hypervisor交互是通过一个高效、底层的的 API(hypercall API)来实现的,这使得hypervisor和Guest系统可以共同最优化地使用底层的硬件和I/O,从而可获得极高的运行性能。
优点:这种模式和全虚拟化相比,架构更精简,而且在整体速度上有一定的优势。
缺点:需要对Guest OS进行修改,所以在用户体验方面比较麻烦。
二. VMware Workstation:
vmware是全虚拟化的,它的安装使用都非常简单便捷。
(在vmware上安装的系统都是全虚拟化的?全虚拟化可以模拟windows,半虚拟化暂时不能够模拟windows?如果cpu没有特殊支持,vmware能正常使用么?查资料有的说可以正常使用,但是宿主系统如果32位,就不能模拟64位系统。。。?)
ubuntu 14.04 下安装vmware workstation 10.0版本,命令行下执行:
cd xxxxxxx //进入到安装文件所在路径
sudo chmod +x Vmware-Workstation-FXXXXXXXXX.bundl //替换成自己的文件名
sudo ./VMware-Workstation-FXXXXXXXXX.bundle //替换成自己的文件名
vmware安装完成后,双击运行,然后在虚拟机内安装操作系统基本就是在图形界面下操作,非常方便,也非常便捷。
(1)安装windows xp 系统
通过新建虚拟机,按照流程一步一步完成windows xp的安装,期间不需要配置相关环境参数。傻瓜式完成安装后,开启虚拟系统,会自动完成VMware Tools的安装,通过该工具,可以实现宿主OS与虚拟OS之间剪切,复制等文件操作。
虚拟OS可以直接自动连接网络(与宿主OS共享网络),在虚拟OS中软件的安装使用就跟在物理机中使用方式相同,但运行速度稍显缓慢一些,但整体速度,效率还可以接受。
(2)安装ubuntu系统
ubuntu系统的安装与windows系统的安装类似,图形化界面下直接安装完成,不需要进行任何配置,VMware Tools也会自动安装,实现宿主系统与虚拟系统之间的文件传输。
虚拟系统中的软件使用也跟物理机的系统类似,PC与用户交互体验比较好。
三. KVM:
KVM是基于硬件的完全虚拟化,其虚拟化需要硬件支持(如Intel VT技术或者AMD-V技术)。
首先检查自己的机器是否支持VT,
ubuntu 14.04下安装KVM,命令行执行:
egrep -o ‘(vmx|svm)’ /proc/cpuinfo
显示支持,下面进行安装:
sudo apt-get install qemu-kvm libvirt-bin virt-manager bridge-utils
安装自动进行,安装完成后可以验证是否正确安装,服务是否可用。
lsmod | grep kvm
sudo virsh -c qemu:///system list
环境安装完成后,开始创建虚拟机。
(1) 安装windows xp 系统:
虚拟系统的安装,没有图形化界面,需要命令行进行安装,过程比较繁琐。
首先在根目录下创建一个文件夹作为虚拟机文件夹,里面创建一个文件夹存放系统映像文件(根目录下文件的操作需要管理员权限,所以在命令行下sudo操作),并在其中创建winxp.img文件作为虚拟硬盘文件,大小10G容量,动态扩充。
sudo qemu-img create -f qcow2 winxp.img 10G
然后创建启动虚拟机,内存分配512M。
sudo qemu-system-x86_64 -hda winxp.img -cdrom xx.iso -boot d -m 512 -no-acpi -soundhw all
此时会弹出系统安装界面,按照引导一步步即可安装完成。
以后启动时,可以直接命令行:
sudo qemu-system-x86_64 -hda winxp.img
此时将会启动虚拟系统,不过安装过程繁琐,最重要是缓慢费时。。。
开启虚拟系统之后,就可以在虚拟系统中正常安装软件了。不过,kvm 虚拟出的windows xp 系统使用非常慢,效率很低,比vmware要慢很多。
而且因为缺少Tools所以不能直接跟宿主系统之间进行文件的相关操作。
虚拟系统的联网也存在问题,不能与宿主系统共享网络。
(2)安装ubuntu系统:
ubuntu系统的安装跟windows安装方法相同,命令行操作,然后根据引导一步一步即可安装完成。
首先创建虚拟磁盘
sudo qemu-img create -f qcow2 ubuntu.img 10G
然后安装系统
sudo kvm -m 740 -cdrom xxxxx.iso ubuntu.img
这样系统就自动安装完成。这个过程比安装windows要快很多。
开启系统
sudo kvm -m 740 -smp 1 -hda ubuntu.img
安装完成后使用起来也比windows效率高,运行速度快一些,不过还是比不上在vmware里面的速度,与宿主系统共享网络。虚拟系统里软件的安装使用就跟物理系统相同。
文件传输问题
四. XEN:
XEN既支持全虚拟化,也支持半虚拟化 。最初,xen只支持半虚拟化,用户需要修改系统内核,而xen在半虚拟化形式下可以获得极高的运行效率,极低的效能损失。
后来,Intel对Xen贡献修改以支持其VT-X Vanderpool架构扩展。如果主系统支持Vanderpool或者Pacifica扩展(Intel和AMD对本地支持虚拟化的扩展),这项技术将 允许未修改的客户作业系统运行在Xen虚拟机中。这意味着可以在没有进行任何协议不允许的修改的情况下对Windows进行虚拟。
xen的安装:
ubuntu14.04按照上面这种方式安装,虚拟机的确安装成功了,但是宿主系统再进入就无法联网,显卡也不正常工作,然后系统总是一进入就处于无响应状态。暂时没有找出原因,只得重装系统。。。
windows系统下通过vmware安装ubuntu12.04,然后在虚拟系统中安装xen,发现根本进不到xen的内核中,只好重新装物理系统再行尝试。
ubuntu12.04下安装xen:
安装编译 Xen 和 Linux xen kernel 所需要的软件包:
sudo apt-get install build-essential binutils python-dev libncurses5-dev libcurl4-openssl-dev xorg-dev uuid-dev bridge-utils bison flex udev gettext bin86 bcc iasl libgcrypt11-dev libssl-dev pciutils libglib2.0-dev gcc-multilib texinfo zlib1g-dev
sudo apt-get install gcc g++ make patch libssl-dev bzip2 gettext \zlib1g-dev python libncurses5-dev libjpeg62-dev libx11-dev \libgcrypt11-dev pkg-config bridge-utils bcc bin86 libpci-dev \libsdl-dev python-dev texinfo libc6-dev uuid-dev bison flex fakeroot \build-essential crash kexec-tools makedumpfile libncurses5 \libncurses5-dev iasl gawk
以上软件包有些是重复的,没关系,重复了它自己会跳过不安装。安装软件包之前注意要选好源,163和cn.archive都是可以的。
安装xen vmm
32位和64位系统的区别也很重要。64位按下面步骤很简单,32位就不同,因为xen需要开启pae,默认是没有开启的,所以32位ubuntu首先得执行下面这个命令:
sudo apt-get install linux-image-server
sudo apt-get install xen-hypervisor-4.1-i386 xen-utils-4.1 xenwatch xen-tools xen-utils-common xenstore-utils
这里xen-hypervisor-4.1要分32位、64位,64位系统用xen-hypervisor-4.1-amd64,32位用xen-hypervisor-4.1-i386.
安装libvirt和Virtual Manager
sudo apt-get install virtinst python-libvirt virt-viewer virt-manager
重启机器,选择有xen的内核启动,进入系统之后,再检查一下 Xen 是否已经成功安装:
sudo xm list
出现上面的信息,则代表安装成功。
修改配置文件
sudo gedit /etc/xen/xend-config.sxp
将/etc/xen/xend-config.sxp文件中的“#(xend-unix-server no)”注释去掉 即把“#”去掉,并把“no”改成“yes”,保存即可。
然后重启xend服务:sudo service xend restart
sudo gedit ~/.bashrc
在打开的.bashrc文件中添加下面这句话:export VIRSH_DEFAULT_CONNECT_URI=”xen:///”
cp -r /usr/share/qemu-linaro/ /usr/share/qemu
这样创建过程基本没有问题了.
通过libvirt查看xen的版本信息,确认libvirt和xen都已经安装成功
sodu -s
virsh version
xen安装完成,下面就可以安装虚拟系统了。
(1)安装winxp系统
把window xp的iso镜像拷贝到根目录的其中一个文件夹下,例如/usr , /opt等(不要拷到home里面)。
在命令行键入sudo virt-manager用root权限打开虚拟机管理器,接下来就会出现图形化安装界面,按照向导来一步一步安装,非常简单就可以安装完成。
安装完成后虚拟系统内部软件安装使用就跟实际物理系统相同,与宿主系统共享网络,使用性能速度高于KVM,但跟vmware相比没有很大的差异。
(2)安装ubuntu系统
半虚拟化的安装方式?现在这种方式应该是全虚拟化的安装方式吧?
ubuntu系统的安装流程跟xp相同,进入后就根据ubuntu系统的安装引导一步步完成安装即可。性能也是高于kvm,等同于vmware。
虚拟系统的使用跟实际物理系统的使用相同。
文件传输问题。