云计算与大数据课程笔记(九)之虚拟化技术(下)

内存复用技术

内存复用技术是操作系统中用来高效管理和优化内存资源的一组策略。这些技术旨在提高内存利用率,减少物理内存的需求,并确保系统运行时的高性能。

1. 内存共享

内存共享技术允许多个进程访问同一块内存区域,这有助于减少相同数据的多份拷贝,从而节省内存资源。内存共享可以进一步分为两种情况:

  • 只读共享:多个进程可以共享同一段内存,但这段内存是只读的。如果任何进程试图修改这些内存,操作系统将阻止这种操作。这常用于存储程序代码或常量数据,因为这些数据在运行时不需要修改。
  • 写时复制(Copy-On-Write, COW):这是一种优化策略,当多个进程共享同一块内存时,它们看似拥有自己的内存副本,但实际上是共享同一份数据。只有当某个进程尝试写入这块内存时,操作系统才会为该进程创建这块内存的真正副本。这样,只有在必要时才进行数据复制,可以有效节省内存资源。

2. 内存置换

内存置换技术涉及将长时间未被访问的内存数据转移到辅助存储(通常是硬盘)中,这个过程也称为“交换”或“换出”。当这些数据再次被访问时,操作系统将它们从硬盘“换入”到物理内存中。这样可以确保物理内存中始终保留更频繁访问的数据,从而提高系统的性能。

  • 交换空间:操作系统通常在硬盘上保留一个专门的区域作为交换空间(Swap Space),用于存放被换出的内存数据。

3. 内存气泡(负载均衡)

内存气泡或负载均衡技术并不是一个广为人知的术语,是指在分布式系统或多处理器系统中,通过动态地重新分配内存使用和进程执行来优化资源利用和系统性能的策略。这包括将内存密集型的进程移动到内存使用较少的节点上,或者根据当前的负载情况调整内存资源分配,以达到整个系统的负载均衡。

  • 动态资源管理:这种策略通常需要操作系统或专门的管理软件能够监控系统的资源使用情况,并根据预定的策略动态地调整资源分配。

这些内存复用技术通过不同的方式提高了内存资源的使用效率,从而优化了系统的性能和响应速度。每种技术都有其适用场景和优势,操作系统会根据具体的需求和条件选择最合适的策略。


VMWare-ESX-Server

VMware ESX Server(现在通常称为VMware vSphere ESXi)是VMware提供的企业级服务器虚拟化产品。它是一种类型1 Hypervisor【见笔记(上)】,也被称为裸机Hypervisor,因为它直接安装在物理服务器的硬件上,不需要宿主操作系统(host OS)。

ESXi(Server的后期版本)的工作原理和特点

  • 直接运行于硬件之上:与需要在宿主操作系统之上运行的类型2 Hypervisor(如VMware Workstation或Oracle VirtualBox)不同,ESXi安装在物理硬件上,提供了对该硬件的直接控制。这减少了额外的软件层,从而提高了性能和效率

  • 优化的内核:ESXi使用一个特别为虚拟化优化的内核,称为VMkernel。VMkernel直接管理硬件资源并调度虚拟机的运行。这个内核经过精简和优化,只包含支持虚拟化所需的最小功能集合

  • 不依赖Linux内核:尽管早期版本的ESX Server(非ESXi)使用了Linux内核作为其管理操作系统(称为服务控制台),但VMware在ESXi中放弃了这一架构,转而使用自己的VMkernel。因此,ESXi不依赖于Linux内核,而是一个独立的、为虚拟化环境定制的系统。

  • 无需宿主操作系统:正因为ESXi直接在物理硬件上运行,它不需要传统意义上的宿主操作系统。虚拟机在Hypervisor之上运行,而Hypervisor直接管理物理服务器的资源。

ESXi的优势

  • 性能和稳定性:由于减少了不必要的中间层,ESXi能够提供更好的性能和稳定性。这对于企业级环境中运行关键任务的虚拟机来说尤其重要。

  • 安全性:精简的系统减少了潜在的安全漏洞,使ESXi成为一个安全的虚拟化解决方案。

  • 易于管理:通过VMware vCenter Server,管理员可以方便地管理多台ESXi服务器和上面运行的虚拟机,包括部署、监控和维护等任务。

VMware ESXi代表了类型1 Hypervisor的一种实现,它通过直接在物理硬件上运行一个为虚拟化优化的内核,提供了高效、安全和易于管理的虚拟化环境。与传统的需要在宿主操作系统之上运行的虚拟化解决方案相比,ESXi通过其裸机架构提供了性能和资源利用率的显著提升。


Xen KVM

Xen和KVM(Kernel-based Virtual Machine)都是广泛使用的开源虚拟化技术,但它们并不特定于某个国家或地区。这两种技术在全球范围内都有广泛的应用,包括在很多国产服务器和云计算平台中。下面是对Xen和KVM的简要介绍:

Xen

Xen是一种类型1的Hypervisor,它直接运行在物理硬件上。Xen项目最初是由剑桥大学的研究人员于2003年开始的,后来得到了业界的广泛支持和发展。

  • 架构:Xen允许多个操作系统实例同时安全地在单个物理系统上运行。它通过虚拟化技术,将物理服务器划分为多个虚拟机,每个虚拟机都运行自己的操作系统。
  • 使用场景:Xen广泛应用于云计算环境中,特别是那些需要高度隔离和安全性的场景。它支持多种客户操作系统,包括Linux、Windows等。
  • 管理:Xen的管理通过Xen Project Hypervisor和第三方工具如Xen Orchestra、CloudStack和OpenStack进行。

KVM

KVM是一种基于Linux内核的虚拟化技术,它将Linux内核转变为一个Hypervisor。KVM最初由Qumranet开发,该公司后来在2008年被Red Hat收购。

  • 类型:KVM是一种类型2的Hypervisor,但它表现得像是类型1的Hypervisor。这是因为它是集成到Linux内核中的,提供了类似于类型1 Hypervisor的性能和效率。
  • 特点:KVM利用了Linux内核的现有功能,如调度和内存管理,使其能够提供高效的虚拟化解决方案。它支持Linux和Windows等多种客户操作系统。
  • 管理:KVM可以通过各种管理工具进行管理,包括命令行界面(如virsh)和图形界面(如virt-manager),以及其他云管理平台如OpenStack。

虽然Xen和KVM都非常强大,它们在设计和实现上有所不同。Xen作为一种传统的类型1 Hypervisor,提供了强大的隔离和安全性。而KVM作为Linux内核的一部分,能够直接利用Linux的特性,如调度和内存管理,提供高效的虚拟化解决方案。两者都被广泛应用于构建公有云、私有云和混合云环境。


OpenStack:管理虚拟机的操作系统平台

OpenStack是一个开源的云计算管理平台。OpenStack提供的功能远远超出了虚拟机管理。它是一个提供基础设施即服务(IaaS)的云平台,允许用户通过Web界面或API来部署和管理虚拟机以及一系列其他云资源,如网络、存储、身份服务等。可以不需要手动在电脑上部署了,直接在云端部署虚拟机等资源。

OpenStack的关键组件

OpenStack由多个相互协作的组件构成,每个组件提供云环境中的一个特定功能。以下是一些核心组件:

  • Nova(计算服务):管理云环境中的虚拟机实例。它是OpenStack的核心组件之一,负责虚拟机的创建、调度和终止。
  • Neutron(网络服务):提供了云环境中的网络连接功能,包括私有网络、子网、路由器等。
  • Cinder(块存储服务):为虚拟机提供持久性块存储设备。
  • Glance(镜像服务):负责虚拟机镜像的管理,包括存储、注册和检索镜像。
  • Keystone(身份服务):为OpenStack服务提供认证和授权。
  • Horizon(仪表板):提供一个基于Web的用户界面,用于管理和配置云资源。

OpenStack的功能和优势

  • 灵活性和可扩展性:OpenStack支持广泛的硬件架构,可以根据需要轻松扩展,满足企业不断增长的需求。
  • 开源:作为一个开源项目,OpenStack有一个活跃的社区支持,提供了丰富的资源和文档,以及定期的更新和改进。
  • 自助服务:用户可以通过Web界面或API自助配置和管理虚拟机和其他云资源,提高了运营效率。
  • 多租户支持:通过身份服务(Keystone),OpenStack提供了隔离的环境,使得多个用户或组织可以在同一云平台上安全地操作。

总的来说,OpenStack提供了一个强大且灵活的框架,用于构建和管理私有云、公有云和混合云环境。它通过一系列相互集成的服务,支持复杂的云计算场景,包括虚拟机管理、网络配置、存储分配和更多。


OpenStack和Kubernetes(k8s)

OpenStack和Kubernetes(k8s)都是管理云资源的开源平台,但它们服务于不同的目标和场景。尽管它们在云计算领域内有一些相互交叉的功能,但主要关注点和架构设计存在明显差异。

OpenStack

  • 目标:OpenStack旨在提供基础设施即服务(IaaS)。它允许用户通过Web界面或API部署和管理虚拟机以及其他云资源,如网络、存储等。
  • 用途OpenStack更多被用于构建和管理私有云和公有云环境,提供了虚拟化的计算资源,网络配置和存储资源
  • 组件:由多个协同工作的组件构成,每个组件负责不同的云计算服务,如计算(Nova)、网络(Neutron)、存储(Cinder)等。

Kubernetes (k8s)

  • 目标:Kubernetes专注于容器编排,是一个容器即服务(CaaS)和平台即服务(PaaS)的解决方案。它帮助用户在集群中自动部署、扩展和管理容器化应用。
  • 用途:Kubernetes用于自动化容器操作,包括负载均衡、故障恢复、自动扩展等。它支持云环境和本地环境,使得应用部署更加灵活和高效。
  • 组件:Kubernetes的架构包括一个控制平面(管理集群状态)和工作节点(运行容器化应用),以及用于资源定义和管理的一套API。

相关性和集成

虽然OpenStack和Kubernetes在云计算领域有不同的关注点,但它们可以集成在一起,提供更加强大和灵活的云解决方案:

  • 在OpenStack上运行Kubernetes:可以在OpenStack环境中部署Kubernetes集群,利用OpenStack提供的虚拟机、网络和存储资源来运行和管理容器化应用。这种方式结合了两者的优势,即OpenStack的资源管理能力和Kubernetes的容器编排功能。
  • 互补使用:对于需要同时管理虚拟机和容器化应用的组织,将OpenStack和Kubernetes结合使用可以提供一个统一的平台,满足不同类型应用的部署和管理需求。

总的来说,OpenStack和Kubernetes虽然服务于不同的目标,但它们在现代云计算和DevOps实践中可以互为补充,提供一个综合的、跨平台的云管理解决方案。

上一篇:【译】新的 MSBuild 编辑体验


下一篇:竞赛升温,量子革命待发