Hyper-V VS VirtualBox Windows基础虚拟化架构拼

Hyper-V VS VirtualBox Windows基础虚拟化架构拼

随着云和容器技术的流行,不可否认现在的基础架构正在趋向虚拟化。基于不同平台市面上有很多的虚拟化架构: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时使用增强会话模式。

虚拟机器执行状态储存和迁移

执行状态储存:CheckpointsSnapshots

Hyper-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 Display

Hyper-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 Manager

Hyper-V Manager是 Hyper-V提供的 GUI虚拟机器管理工具,可帮助我们管理Hyper-V 虚拟机器机丛集。使用它执行虚拟机器的建立,汇入,配置,启动,停止和删除等操作。可以只用于管理虚拟机器基础装置,比如虚拟交换机,虚拟硬盘,建立Checkpoints,使用VMConnect连线到客户操作系统界面等。也可以通过远端管理Hyper-V丛集。

phpVirtualBox

phpVirtualBox是一个开源工具的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要做到同样功能则比较费劲。

猜你喜欢