前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新手必读:Linux虚拟化实现

新手必读:Linux虚拟化实现

作者头像
希里安
发布2024-02-22 08:59:34
5930
发布2024-02-22 08:59:34
举报
文章被收录于专栏:希里安

文章开头必须介绍下这位github开源大佬,是腾讯的一位前辈,仓库地址:https://github.com/yifengyou,里面有他学习的各种资料,包含linux内核态、用户态、虚拟化、云原生、编程语言等分类,很震撼。大家可以看下贡献图,感受下压迫感,这位大佬大年三十都还在学习!

浅谈虚拟化

1. 全虚拟化:

全虚拟化利用虚拟机监视器(VMM)或者称为 hypervisor 的软件层来模拟底层硬件。Hypervisor 位于宿主硬件和虚拟机之间,负责协调虚拟机对硬件的访问请求。

  • 硬件辅助的全虚拟化:现代 CPU 提供了虚拟化扩展(Intel VT-x 或 AMD-V),这些技术提供了执行控制功能,允许 hypervisor 有效地管理和隔离在虚拟环境中运行的指令,而不需要软件模拟。
  • 二进制翻译:对于缺乏硬件辅助的系统,hypervisor 需要使用二进制翻译(binary translation)来处理宿主机CPU不直接支持的虚拟化指令。这种方法通过在运行时将虚拟化指令转换为宿主机指令来实现。

2. 半虚拟化:

半虚拟化需要客户操作系统知道它们在虚拟环境中运行,并且要进行相应的修改来与 hypervisor 交流。这意味着客户操作系统中的关键元素,如内存管理和 I/O 设备操作,需要针对虚拟化环境进行优化。

  • 超调用(hypercalls):在半虚拟化中,修改后的操作系统通过超调用接口与 hypervisor 通信。这类似于应用程序使用系统调用与操作系统通信。

3. 操作系统级虚拟化(容器化):

容器化是一种轻量级的虚拟化形式,其中虚拟化发生在操作系统层面。容器内的应用程序使用宿主机的操作系统内核,但运行在隔离的用户空间内。

  • Linux Containers (LXC):LXC 是实现操作系统级虚拟化的一种技术,它利用了 Linux 内核的特性,如 cgroups 和 namespace,来实现资源管理和隔离。
    • Namespaces:这是 Linux 内核提供的一种功能,用于隔离和管理系统资源。Namespaces 将系统资源划分为不同的独立的区域(例如 PID(进程ID)namespaces、network namespaces、mount namespaces 等),每个容器都在自己的 namespace 中运行,不会看到或影响其他容器的资源。
    • Control Groups (cgroups):cgroups 是 Linux 内核的另一个特性,它用于限制、记录和隔离进程组使用的物理资源(如 CPU、内存、磁盘 I/O、网络等)。通过 cgroups,系统管理员可以精确控制每个容器可以使用多少资源,保证资源分配的公平性和效率。
  • Docker:Docker 使用 LXC 作为其最初的容器执行环境,后来发展出了自己的容器运行时,即 Docker Engine。Docker 容器通过 Dockerfile 配置,并可以通过 Docker Hub 分享。

KVM

KVM(Kernel-based Virtual Machine)是一种虚拟化解决方案,可以在Linux系统上运行多个隔离的虚拟机。每个虚拟机都有私有的虚拟化硬件:CPU、内存、磁盘等,使得它们可以运行各自的操作系统。

KVM是一种基于硬件的虚拟化技术,它利用了现代处理器中的虚拟化扩展(如Intel的VT-x技术或者AMD的AMD-V技术),从而提供了高效的虚拟机性能。KVM本身是Linux内核的一部分,这意味着它能够利用Linux内核的所有功能和优化。

KVM是开源的,成为了许多虚拟化平台和云计算解决方案的基础,例如OpenStack和Proxmox VE。用户可以通过诸如libvirt这样的工具和API来管理KVM虚拟机,也可以使用图形界面前端如Virt-Manager来进行虚拟机的创建、监控和管理。

KVM与VMware以及OpenStack的主要区别在于它们的定位、使用的技术和功能。

KVM与VMware的区别:

  1. 开源与专有:KVM(Kernel-based Virtual Machine)是一个开源的虚拟化基础设施,可以集成到Linux内核中,而VMware提供的是专有的虚拟化解决方案,其主要产品例如VMware vSphere/ESXi是闭源的。
  2. 成本:KVM作为开源软件,通常没有直接的费用,但可能需要投入时间进行配置和管理。VMware的产品通常需要购买许可证,尤其是对于企业级功能。
  3. 管理工具:VMware提供了一整套成熟的管理工具,如vCenter,可以提供集中管理和丰富的功能。KVM通常需要依赖其他开源项目如libvirt进行管理,或者通过第三方工具如Virt-Manager、Proxmox VE等。
  4. 性能和特性:VMware以其良好的性能和高级特性(如vMotion、Storage DRS等)而著称。KVM作为Linux的一部分,性能也非常优秀,但某些高级特性可能需要额外的工具和配置来实现。

KVM与OpenStack的区别:

  1. 虚拟化层与云平台:KVM是虚拟化层,提供硬件的虚拟化能力;而OpenStack是一套开源的云计算管理平台,可以用来构建和管理公有云和私有云环境。
  2. 作用范围:KVM关注于将物理服务器虚拟化为多个虚拟机。OpenStack则涵盖了更多的云服务组件,如计算(Nova)、存储(Cinder/Swift)和网络(Neutron)等多个模块,它可以使用KVM作为其底层计算节点的虚拟化技术。
  3. 使用场景:KVM通常适用于需要虚拟化服务器的场景,而OpenStack适用于需要构建和管理整个云计算环境的场景。
  4. 集成层次:OpenStack设计为可以与多种虚拟化技术整合,不仅限于KVM。它还可以与VMware、Xen和Hyper-V等虚拟化解决方案一起工作。

总的来说,KVM主要是虚拟化技术,VMware是提供更广泛虚拟化解决方案的商业公司,而OpenStack是以KVM为其中一个选项的云平台管理框架。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 希里安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 浅谈虚拟化
    • 1. 全虚拟化:
      • 2. 半虚拟化:
        • 3. 操作系统级虚拟化(容器化):
        • KVM
        • KVM与VMware的区别:
        • KVM与OpenStack的区别:
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档