随着云和容器技能的盛行,不可否认现在的根本架构正在趋向虚拟化。基于不同平台市情上有很多的虚拟化架构:Xen,Vmware,KVM,VirtualBox各领风骚,各具特色,本文虫虫来讲讲Windows系统下常用的两种虚拟化办理方案VirtualBox和Hyper-V,把稳本文不谈论Vmware,如果你是Vmware的拥趸请不要介意。
不同的Hypervisor类型Hypervisor虚拟机监视器用来管理虚机机和虚拟化根本设备的分外软件,通过Hypervisor可以在宿主机上虚拟化出虚拟机和根本架构设备出来。Hypervisor分为两种类型:
Hyper-V属于Type 1虚拟机管理程序,也称为裸机型虚拟机管理程序,可直接在打算机硬件上运行。当宿主机启动时,Hyper-V管理程序将从BIOS或UEFI获取掌握权,启动Hyper-V管理操作系统包括Hyper-V Server,Windows或Windows Server。根据不同需求和设置,虚拟机VMs支持手动或者自动启动。VMware vSphere、思杰 XenServer也属于该类。

VirtualBox属于Type 2的虚拟机管理程序,也叫托管型虚拟机管理程序。Type 2管理程序是在宿主机操作系统上运行,为安装在宿主机上的运用程序。当物理打算机启动时,宿主机操作系统加载得到掌握权。由用户启动虚拟机管理程序运用程序(比如VirtualBox),再启动虚拟机VMs,创建VMs托管进程。KVM和Vmware WorkStaion也属于该类。
宿主机启动后,Hyper-V作为做事会一贯保持运行,VirtualBox可由用户按需启动和关闭。
硬件虚拟化和软件虚拟化Hyper-V支持硬件虚拟化。硬件虚拟化是一种利用虚拟机管理程序在软件和物理硬件之间创建抽象层以打算机虚拟技能。利用分外软件仿照打算机正常功能所需的所有设备。
VirtualBox支持硬件和软件虚拟化。软件虚拟化只支持x86体系构造的32位客户机操作系统。64位客户系统,仅在硬件虚拟化中利用。软件虚拟化支持,可以极大的扩展VirtualBox可以不支持硬件虚拟化的老打算机上。
虚拟磁盘Hyper-V虚拟机的虚拟磁盘格式为VHD或VHDX文件。VHD是Hyper-V旧的虚拟磁盘格式。从Windows Server 2012开始,Hyper-V,虚拟磁盘格式更新为VHDX格式了。
VirtualBox支持更多格式的虚拟磁盘包括VDI,VMDK,VHD和DD:
VDI是VirtualBox自用格式
MDK是VMware虚拟磁盘格式
VHD是Hyper-V格式(VirtualBox暂不支持VHDX)
HDD是Parallels Desktop格式
Hyper-V和VirtualBox中都支持固定大小的磁盘和动态分配的磁盘形式。固定虚拟磁盘创建更耗时,占用的实体机磁盘空间更多,但是其性能更好。动态虚拟磁盘支持即时创建,磁盘空间按照实际利用增长,但其性能不如固定虚拟磁盘。
跨平台性Hypervisor运行环境微软自家的软件Hyper-V和大多数微软运用一样,只支持Windows系列操作系统上运行。 Hyper-V开始在Windows 8中内置,支持Windows,Windows Server 2008到以及更新版本的做事器平台。
Virtual Box是一个跨平台软件,可以支持市情所有主流的操作系统包括Windows,Linux,Mac OS和Solaris等。
如果紧张在Windows上跑虚拟架构,则可以优先利用Hyper-V。包括windows for Docker现在也是默认利用Hyper-V的。如果你是多平台环境,比如用Mac book,也用windows,那么利用跨平台的VirtualBox具有得天独厚的上风。
虚拟机OS支持客户机OS是在虚拟机上VMs运行的操作系统。关于虚拟机上两者都支持多平台的客户虚机机OS。 Hyper-V支持Windows,Linux和FreeBSD操作系统。
VirtualBox支持的OS类型则更多: Windows,Linux,FreeBSD,Solaris,Mac OS等。
Integration Services和Guest Additions
Hyper-V Integration Services由基本驱动程序和实用工具组成,可以用来提高整体性能及主和客机操作OS间的交互。Integration Services安装客户机OS上。在Windows系统上,可以通过将虚拟光盘映像(ISO文件)附加到VM(包括安装程序)或通过Windows Update来安装。对Linux系统,主流的发行版内核都已内置对Integration Services支持。
类似的VirtualBox Guest Additions也包含驱动程序基本和系统运用工具,用来可优化来客户机OS,提高其性能和可用性。安装Guest Additions后,可以支持拖放,剪贴板共享,屏幕自动调度大小以及无缝模式。安装过程和Hyper-V Integration Services类似,将ISO光盘映像与安装程序附加到VM,然后在GUI或命令行安装Guest Additions。
虚拟机网络流量剖析Port Mirroring是Hyper-V的网络流量剖析工具。此功能可以让我们将所有吸收和发送的数据包的副本从一个端口发送到另一个端口,然后再进一步剖析,相称于一个旁路网络包剖析工具。我们可以创建一个虚拟机,其虚拟网络适配器连接到相应的虚拟交流机端口,在该虚拟机上安装数据包剖析软件,通过他对全体集群多台虚拟机的网络数据包进行剖析。
VirtualBox则自带网络跟踪功能,可以利用该功能启用网络数据包日志记录,然后通过日志剖析网络行为。因此,VirtualBox利用内置功能将所有捕获的虚拟机网络接口流量写到PCAP文件中。之后就可以利用包剖析工具(比如Wireshark)进行剖析中。可以在须要时候利用命令行界面启动网络跟踪记录日志。
共享文件夹,文件拖放共享文件夹对付不同机器之间的文件交流很有用。可以利用该方法实现宿主机和虚拟机之间的文件共享。
Hyper-V本身不支持文件夹共享,可以通过Windows GUI或PowerShell在宿主机共享文件夹,并为虚拟机用户指或授予访问权限访问。还可以利用Copy-VMFile PowerShell工具在宿主机和虚拟机之间进行文件复制。
VirtualBox内置文件夹共享功能,可以在VirtualBox用户界面轻松启用。利用共享文件夹在VirtualBox主机和客户机之间传输文件非常方便。可以通过打开\公众VM Setting\"大众,然后选择\"大众Shared Folders。添加共享标签页:设置文件夹路径,输入将在客户机中要显示文件夹的名称。
把稳,必须在客户机操作系统上安装VirtualBox Guest Additions才可以利用该功能。
文件拖放是,可以实现将文件或文件夹等工具从屏幕的一个部分移动到另一个部分。在虚拟化环境的中,通过拖放可以将文件或文件夹在宿主机和客户机之间拖动传输。 Hyper-V和VirtualBox产品都支持拖放功能,但是都须要在客户机上安装对应的Hyper-V Integration做事和VirtualBox Guest Additions。登录Hyper-V VM时利用增强会话模式。
虚拟机运行状态保存和迁移运行状态保存:Checkpoints和SnapshotsHyper-V Checkpoints可以支持对虚拟机当前运行状态的保存,然后停掉虚拟机,并在后面须要时候规复到该运行状态。新版本的Hyper-V中有两种类型的Checkpoints:标准Checkpoints和生产Checkpoints。与标准Checkpoints不同,生产Checkpoints支持对Windows的虚拟机利用VSS卷影复制服务,支持对Linux的虚拟机利用文件系统冻结来冻结虚拟机以防止对虚拟磁盘实行写入操作。利用冻结可以避免由于标准Checkpoints保存时候导致的数据丢失问题造成数据不一致。创建Checkpoints时,会为虚拟机的每个VHD(或VHDX)虚拟磁盘创建差异虚拟磁盘(AVHD或AVHDX)。创建Checkpoints后,所有变动都会写入差异磁盘。差异虚拟磁盘与父虚拟磁盘一起存储在同一目录中。
VirtualBox Snapshots相称于Hyper-V Checkpoints。可以利用Snapshots保存当前虚拟机运行状态,并在须要时还原。 VDI是VirtualBox中利用的虚拟磁盘文件格式。创建快照时,会将新的差异虚拟磁盘创建为新的VDI文件。
虚拟机迁移: Live Migration和Teleporting
Hyper-V Live Migration可以实现将运行中的VM从一台Hyper-V宿主机无缝迁移到另一台宿主机,迁移过程不会导致永劫光做事中断。该功能可以用于故障转移群集的转移和业务切换,从而供应虚拟架构的高可用性。建议为Hyper-V故障转移群集利用专用迁移网络,VM文件(如虚拟磁盘)必须位于共享存储上。
VirtualBox Teleporting也是一种虚拟机迁移功能和解决方案。通过Teleporting从网络中将虚拟机从一台VirtualBox宿主机移动到另一台VirtualBox宿主机,而不会影响虚机的运行,迁移哀求两台宿主机利用同样的共享存储,宿主机可以是不同的操作系统。比如,可以将运行在Linux宿主机上的Windows虚拟机迁移到Solaris宿主机上。
远程管理工具VMConnect和 Remote DisplayHyper-V VMConnect是用来远程访问虚拟机的GUI或掌握台界面的工具。可以利用VMConnect来管理虚机,通过VMConnect的WMI(Windows Management Instrumentation)做事。可以实现键盘和鼠标与虚拟机OS的交互,支持链接本地虚拟机也可以连接远程的虚拟机。安装Hyper-V角色时,默认情形已经启用了VMConnect。如果未安装,可以通过\"大众添加功能引导\"大众中添加\"大众Hyper-V工具\"大众功能。 VMConnect 利用Microsoft远程桌面协议(RDP)进行连接和通讯。
VMConnect增强会话模式还许可将本地设备和资源重定向给虚拟机。支持对剪贴板,磁盘驱动器,USB闪存驱动器,音频,打印机和显示器进行重定向。
VirtualBox包含管理虚拟机的工具Remote Display,可以利用本地打算机上的VirtualBox GUI管理在本地打算机上运行的虚拟机。 VirtualBox Remote Desktop Extension(VRDE)是一样平常性的扩展接口,可为第三方开拓的扩展包供应最大的灵巧性。 VRDE可兼容Microsoft RDP。 VirtualBox Remote Display Protoco(VRDP)在VRDE扩展包供应,它向后兼容RDP,可以利用它,通过标准RDP客户端来远程掌握虚拟机。
Hyper-V ManagerHyper-V Manager是 Hyper-V供应的 GUI虚拟机管理工具,可帮助我们管理Hyper-V 虚拟机机集群。利用它实行虚拟机的创建,导入,配置,启动,停滞和删除等操作。可以只用于管理虚拟机根本设备,比如虚拟交流机,虚拟硬盘,创建Checkpoints,利用VMConnect连接到客户操作系统界面等。也可以通过远程管理Hyper-V集群。
phpVirtualBoxphpVirtualBox是一个开源工具的VirtualBox Web管理工具,该工具用PHP编写,通过他可以管理远程VirtualBox实例。phpVirtualBox供应了一个与VirtualBox GUI界面相同的界面,可以在浏览器中远程管理VirtualBox集群,如果不须要对客户机界面操作,则完备可以用他实现VirtualBox的管理。
PowerShell
Hyper-V可以通过PowerShell来管理,利用PowerShell可以编程自定义Hyper-V及其主机配置和管,对大型Hyper-V集群来说,这尤为方便。
VBoxManage
VBoxManage是VirtualBox的命令行界面(CLI),通过VBoxManage可以实现VirtualBox GUI中的所有可用的功能以及更多非GUI的功能,支持多平台、自编程,自动化批量实行能的功能。
结论Hyper-V和VirtualBox非常好的虚拟化的办理方案,孰好孰坏,根据环境和需求可能不定论。Hyper-V是 type 1虚拟机管理程序,而VirtualBox 是type2型虚拟机管理程序。 Hyper-V只支持于Windows系统上,而VirtualBox支持跨平台。Hyper-V支持群集功能,例如故障转移群集和负载平衡。对付已经利用Windows根本环境,Hyper-V虚拟化办理方案是个不错的选择。Oracle VirtualBox开源免费的,具有最大宿主机和客户机OS支持的虚拟化架构,更适宜于多平台环境。Hyper-V可以作为windows系统做事运行,开机就可以自动启动虚拟机,而VirtualBox要做到同样功能则比较费劲。