如何让Linux更好地运行在Hyper-V上

如何让Linux更好地运行在Hyper-V上,第1张

如果想在Hyper-V中运行Linux,以下三个技巧可帮助你获得更好的性能表现。

1、禁用安全启动

因为Linux发行版本还不支持安全启动(对代码访问存在长期争议),需要禁用该选项。

2、不要使用老旧系统镜像

运行在Hyper-V中Windows

Server

2008

R2的镜像可能无法运行在新版本上。可以选择创建新的系统镜像,或者删除已安装的集成服务3.4版本,然后手动添加Linux集成服务3.5版本。

3、Linux发行版是否支持集成服务

虽然Hyper-V支持几乎所有的基于英特尔处理的Linux发行版,但还是需要选择一个合适的支持集成服务的版本,如果该Linux发行版支持集成服务(IS),性能上可获得很大提升。因为IS的作用是将Hyper-V所需的驱动程序直接绑定到发行版中。其他发行版必须使用“完全模拟”模式,这就需要在软件中模拟硬件功能,可能会导致性能和可管理性降低。当然还有更大的优势,那就是集成服务通过系统中心简化了管理过程,另外,如果有该发行版的支持合同,遇到任何问题都可以向商家寻求帮助。

支持集成服务的发行版包括Red

Hat(5.5及以上版本)、SUSE(11

SP2和SP3)、OpenSUSE

12.3、Ubuntu

12.04及以上版本、Debian

7.0-7.4和Oracle

Linux

6.4及以上版本。注意,对于Red

Hat

5.5-5.8和6.0-6.3,你需要单独下载IS代码可以运行但不是照例包含在内核中。

最后,基本上不需要担心到底哪个发行版本支持IS,因为只有从微软下载IS时才会需要注意版本号。如果你的发行版预安装了IS,基本上就不需要担心了。

Hyper-v是什么:

Hyper-V是微软的一款虚拟化产品,是微软第一个采用类似Vmware和Citrix开源Xen一样的基于hypervisor的技术。

Hyper-V底层的Hypervisor代码量很小,不包含任何第三方的驱动,非常精简,所以安全性更高。Hyper-V采用基于VMbus的高速内存总线架构,来自虚机的硬件请求(显卡、鼠标、磁盘、网络),可以直接经过VSC,通过VMbus总线发送到根分区的VSP,VSP调用对应的设备驱动,直接访问硬件,中间不需要Hypervisor的帮助。这种架构效率很高,不再像以前的Virtual Server,每个硬件请求,都需要经过用户模式、内核模式的多次切换转移。更何况Hyper-V现在可以支持Virtual SMP,Windows Server 2008虚机最多可以支持4个虚拟CPU;而Windows Server 2003最多可以支持2个虚拟CPU。每个虚机最多可以使用64GB内存,而且还可以支持X64 *** 作系统。

完美支持Linux系统

Hyper-V可以很好地支持Linux,可以安装支持Xen的Linux内核,这样Linux就可以知道自己运行在 Hyper-V之上,还可以安装专门为Linux设计的Integrated Components,里面包含磁盘和网络适配器的VMbus驱动,这样Linux虚机也能获得高性能。比如Novell SUSE Linux 10 SP1,其中的网卡驱动,其总线类型就是VMbus。

Hyper-V可以采用半虚拟化(Para-virtualization)和全虚拟化(Full-virtualization)两种模拟方式创建虚拟机。半虚拟化方式要求虚拟机与物理主机的 *** 作系统(通常是版本相同的Windows)相同,以使虚拟机达到高的性能;全虚拟化方式要求CPU支持全虚拟化功能(如Inter-VT或AMD-V),以便能够创建使用不同的 *** 作系统(如Linux和Mac OS)的虚拟机。

如何选择LIS

很多相关工程师都知道,如果选择在 Hyper-V 中运行Linux guest VM,要获得最好的使用体验,必需针对你所使用的 Linux 发行版和使用场景选择 Linux Integration Services(LIS,Linux集成服务)。要想在 Hyper-V 中获得「最佳」Linux 使用体验会比较有趣。

Linux发行版内置的LIS

首先各大 Linux 发行厂商,例如 Red Hat、SUSE、Oracle、Canonical 和 Debian 社区等是 Linux Integration Services(LIS)最为直接的交付方式。微软和 Linux 社区开发人员会将大的 LIS 更新提交到 Linux 内核邮件列表,并从 Linux 社区收集代码审查和反馈意见。当反馈过程完成后,更改便会被纳入上游由 Linus Torvalds 和 Linux 社区「维护者」负责的 Linux 内核。当验收合格后,Linux 发行厂商会将 Linux 内核移植到自己的发行版本当中,并由该发行商将 LIS 作为其产品的一部分进行构建和测试。测试完成后,微软将得到产品的早期版本并将自己的测试结果返回给发行商。目前 Red Hat、SUSE、Canonical和 Oracle 等公司都与微软保持着这样的合作流程,所涉及的产品包括 RHEL、CentOS、SLES、Oracle Linux 和 Ubuntu。当然,Debian 社区也与微软保持同样的合作。

这条 LIS 发行通道被微软称为「内置」,即你从 Linux 发行商那里获取到产品时就已经内置了 LIS。例如,当你从 CentOS 7.0 升级到 7.1 后就会获得 CentOS 7.1更新的 LIS。需要注意的是,微软并没对内置式 LIS 指定版本号,用户什么时候能获得 LIS 更新完全取决于发行厂商何时从上游拉取并更新 Linux 内核。此种「内置」方式唯一不足之处就是用户可能无法及时获取到最新 LIS 更新及新特性,但 Linux 厂商与微软之间的联合测试能够保尽可能证 Linux 系统在 Hyper-V 环境下的使用稳定。对内置 LIS 的技术支持完全取决于最终用户与 Linux 发行商之间的支持协议和条款,微软的直接客户可以按 Hyper-V 的支持协议条款获取到微软官方的技术支持。在以上两种情况下,LIS 代码级 Bug 会由微软与Linux 发行商配合搞定,并通过 Linux 发行商的更新代码或补丁方式进行修复。

微软LIS独立安装包

Linux Integration Services 另一条交付通道便是微软为最终用户直接提供的 LIS 安装包,该种方式想必很多微软方向的工程师都不陌生,此种方式适用于 RHEL、CentOS 等采用 Red Hat 内核和兼容 Oracle Linux 的发行版。随着 Azure 的不断更新以及对 Windows Server 2016 新版 Hyper-V 的支持,独立 LIS 也保持了一定的更新频度和速度。独立 LIS 安装包的出现让用户可以及时更新,不必等待 Linux 厂商的官方更新便可获得 LIS 功能与性能提升。微软独立安装包目前最新为 LIS4.1 和 LIS4.0 版本,大家可以自行下载安装。

需要重点注意的是,使用独立LIS 版本必需要有特定版本的Linux 内核与之匹配。例如在使用LIS 独立包的情况下,系统由CentOS 7.0 更新到 7.1 后 LIS 包并不会更新,需要单独对 LIS 进行升级。如果你只更新 Linux 内核或大版本而不升级 LIS,可能造成 Linux 内核中的二进度不匹配,严重可能导致系统无法启动。微软会按Hyper-V 支持条款对使用独立 LIS 包的 Linux 用户提供官方技术支持,如果你使用老版本,微软会在技术支持时要求升级到最新LIS 版本观察问题是否存在。由于LIS 主要是运行于 Linux 内核级的驱动,所以微软只提供版本更新,不太可能提供修复补丁。

下面就 Hyper-V LinuxVM 该如何选择 Linux Integration Services 列出一个表格,仅供大家参考:

注意:

1.某些Linux发行版自身已经安装有LIS。对于这些发行版,大家只需要启用即可在Hyper-V中发挥其全部功能特性。

2.请在已经安装了LIS驱动程序与服务的Linux发行版中启用集成服务

安装LIS集成服务 1. 需要LIS的iso

2.利用Hyper-V管理器将LIS ISO导入虚拟机系统

3. 将LinuxIC-4.1.2-2.iso文件指向Linux虚拟机系统

4.执行以下命令以启动该ISO文件:

5.以root权限登录并对相关目录作出变更,具体以需要安装的发行版本决定

6.运行LIS ISO所提供的脚本以安装LIS

5. 重新启动Linux虚拟机,这样LIS组件就会完成初始化并成功注册。

重新启动之后,利用“lsmod”或者“Modinfo”命令检查LIS驱动程序与服务的当前状态。

启用集成服务的步骤

1. 第一步是利用以下命令编辑/etc/initramfs-tools文件夹下的“modules”文件:

2. 在vi编辑器中,找到该文件的最后一行并使用(I)插入命令加入以下命令行:

3. 接下来按下Esc键并利用“:x”命令保存文件。

4. 然后通过以下命令对“modules”文件重新进行初始化:

5. 最后,通过在Shell中执行以下命令重新启动虚拟机系统:

6. 客户虚拟机重新启动完成之后,LIS驱动程序与服务都将在系统中得到注册。重新启动之后,大家可以通过以下命令确认LIS驱动程序与服务是否已经安装完毕:

Lsmod

通过这项命令应该能够看到LIS驱动程序与服务被包含在列表当中,需要在其中找到hid_hyperv,hv_netvsc, hv_utils, hv_storvc以及hv_vmbus,有它们在LIS才能被正确启用。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/6252571.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-19
下一篇 2023-03-19

发表评论

登录后才能评论

评论列表(0条)

保存