带你读《弹性计算—无处不在的算力》第三章:计算产品和技术3.2虚拟机云服务器(san三)

简介: 《弹性计算—无处不在的算力》第三章:计算产品和技术3.2虚拟机云服务器(三)

3.2.5 Guest OS

Guest OS 作为运行在虚拟机云服务器之上的系统软件,是虚拟机云服务器服务的重要组成部分。由于虚拟机云服务器交付给用户的是“VM 服务”,因此,作为对接用户的“最后一公里”的产品,一个优秀的 Guest OS,是保障云服务提供商交付的“VM 服务”三大核心竞争优势的重要组成部分。

成本效率优势

提供免费使用的 Guest OS 是云上主流用户的诉求。目前云上使用最多的系统之一是由CentOS 开源社区提供的免费的Linux 发行版。很多云服务提供商都推出了自有操作系统版本,例如,AWS、阿里云都推出了免费的商业 Linux 发行版,并且有长期稳定版 LTS Long Term Stable) 的维护承诺,以确保云上的用户有比社区免费版本更好的用户体验,保护用户的投资。

Guest OS 必须具有成本优势,而且不能成为提升VM 交付效率的瓶颈。Guest OS 的效率不仅仅体现在资源交付上,例如,VM 快速启动、秒级交付,在一些容器实例上,通过一些优化技术,甚至可以达到百毫秒级交付;还体现在支持用户业务的生态环境上,操作系统的基础运行环境可以和用户业务无缝集成,保持良好的兼容性,形成端到端的解决方案。


稳定性优势

  1. Guest OS 的稳定性不仅体现在可靠性、可用性、可服务性上;更体现在系统安全可靠上。没有 Guest OS 的稳定性,用户就无法得到最终的稳定性,这样虚拟机云服务器的 SLA 就会变得没有价值。

性能有时

软硬件一体化、硬件卸载技术,降低虚拟化开销,使得虚拟机的性能逼近物理机的性能,是虚拟机技术发展的主要趋势。好的性能不单单要靠高性能的虚拟机,也要靠高性能的 Guest OS。云服务提供商之间的性能竞争正在成为全栈的竞争,而保持Guest OS 高性能是其中重要的一环。

所有云服务提供商的虚拟机云服务器都提供多种 Guest OS 供用户选择,其中, Windows Linux 毫无争议地成为两大主流。根据 IDC 数据,在桌面操作系统市场, Windows 操作系统依旧占据霸主地位;然而,在云计算领域,Linux 操作系统占据统治地位,已经是一个事实标准。即使是在微软的 Azure 上,Windows 的份额也有比较显著的下滑。2018 年,微软表示,在Azure 云上的 VM 中,Linux 操作系统份额已经超过 Windows,并且很多微软 Azure 的云服务产品,例如 SDN,已经运行在 Linux 操作系统上。因此,本节重点介绍基于 Linux 开源社区的 Guest OS 技术发展。

基础架构

一个完整的 Linux 发行版可以被划分成三大部分,以 Aliyun Linux 为例,如图3-14 所示。

Kernel 即内核,是操作系统的核心组件,管理软硬件资源,向上通过系统调用,提供面向应用软件操作系统的基本服务,通过进程管理及调度器、内存管理、存储栈、网络栈等子系统来支撑一个操作系统的基础功能。

Base OS 是操作系统发行版的基础运行环境,取决于操作系统的应用场景,可由数百到数千个软件包组成,为核心应用软件场景提供基础环境,包括容器、语言运行时、开发工具、包管理、镜像管理、系统核心服务等操作系统所需的基础公共功能。

Application 即应用软件,根据操作系统的应用场景,必然存在一个或者多个核心应用运行在操作系统上,为实际业务提供服务。应用生态的软件包可以是操作系统默认搭载的软件包,也可以是单独发行的第三方软件包;可以是开源软件包,也可以是商业软件包。经过Linux 发行版和开源社区的多年发展,在服务器操作系统领域,形成了强大的应用生态环境。

image.png

3-14 Aliyun Linux 发行版

成本效率优化

1)保障兼容性、简化生态环境,解决方案一键部署。

操作系统的生态环境非常复杂,而且存在非常大的用户黏性,是操作系统厂商的核心竞争力。整个操作系统的生态环境可以被粗略分为硬件平台驱动生态和应用软件生态。

在云场景下,虚拟机云服务器的虚拟硬件规格更加整齐简单,VM 及相关驱动模块也在海量的部署环境中得到了打磨与验证,因此,传统 IT 基础设施因硬件兼容性问题带来的部署和维护成本问题能够在云上得以根本解决。

应用软件生态是 Guest OS 需要解决的首要问题。由于问题的复杂性及一些历史原因,很难形成统一的云服务器应用软件的标准和规范。即使是 Linux 发行版,操作系统应用软件生态也因为发行版基础运行环境的差异,产生了不同程度的碎片化的事实标准。例如,在软件包管理方式上,存在 RPM DEB 两种事实标准,基础运行环境所包含的应用软件的语言运行环境( Runtime) 也会因发行版不同而有所差异,造成 预期外的软件兼容性问题。为解决以上问题,云服务提供商一般采用以下三种做法。

虚拟机云服务器支持多版本、多厂商的 Guest OS,以满足不同用户和业务的兼容性需求。

提供自研的 Guest OS 发行版,提供更佳的硬件兼容性体验,并确保应用软件兼容性符合某种事实标准。例如,Amazon Linux 2Aliyun Linux 2,都兼容 CentOS 应用生态。

发展云市场及应用软件商店,通过虚拟机一体机( VM Appliance)、容器镜像、 应用商店的模式,使得云上常见的解决方案可以被一键部署,实现传统服务器 OS 不能达到的部署效率,同时解决了兼容性问题。

2)提升资源弹性和资源利用率。

云的核心竞争力就是通过资源弹性来获得资源利用率的提升。对于经常需要短时间扩缩容的应用场景,虚拟机云服务器分钟级的弹性部署能力是非常核心的能力,其中,除虚拟机云服务器的资源交付外,Guest OS 的资源交付能力也是重要的一环,因此 Guest OS 的启动性能成为一个重要的能力。

为提升 Guest OS 的启动性能,一系列优化技术得以应用。

虚拟机机器模型和固件( Firmware) 及内核启动过程的简化。这里涌现出了大 量的开源项目,如Clear ContainerClear LinuxQemu LiteNemuQboot, 以及 AWS Firecracker 等。通过优化,这些项目将虚拟机和 Guest OS 的启动性能显著提升,在一些场景下,可以达到秒级甚至毫秒级。

内核启动过程的优化。在操作系统启动过程中,内核负责系统资源的枚举和初始化。这些枚举和初始化工作可能会有很大的开销。例如,大规格的虚拟机内存初始化占据了大量的时间。因此,推迟内存初始化的技术在大规格实例上有显著的启动性能优势。

系统服务的启动优化。通过使用 systemd 服务的并发启动能力,关闭不需要的系统服务,可以实现系统服务的启动优化,systemd 也提供了服务启动的性能分析工具,可以非常方便地找到启动的瓶颈。


除通过资源弹性供给提升资源利用率外,在虚拟机内部,Guest OS 还可以通过容器调度技术,增加应用的部署密度,从而提升虚拟机的资源利用率。

容器调度技术一般通过分时复用和资源互补型业务混部(Co-Location)来提升利用率,这就对 Guest OS 的服务能力了提出新的要求。

系统资源的量化和监控


操作系统内核拥有系统资源实时占用和消耗的数据统计能力,而且长期依赖 Linux 已经形成了一套事实标准,以满足运维需求。然而,随着云原生业务的发展, 应用容器化部署已经成为常态,因此更细粒度的、以容器为单位的系统资源统计和量化的能力在一定程度上不能满足容器调度系统对资源调度的需求。



随着 Linux 内核社区的发展,基于 cgroup 的监控特性也在不断完善。例如, Facebook Linux 内核社区提交的 PSI 特性,可以量化和归一化统计 CPU、内存、I/O 等方面的容器压力情况。然而,这些特性离云原生规模化运维系统的需求有很大距离。Aliyun Linux 基于多年容器调度混部的运维经验,提供了更丰富的容器场景的数据化特性,成为一个对容器化运维场景更友好的操作系统。

   资源隔离能力随着服务器硬件能力的提升,单系统 CPU 和内存的密度越来越大,硬件利用率提升逐渐变得重要起来。容器化和混部技术在提高系统资源利用率、应用部署密度的同时,带来了更激烈的资源竞争问题。

Linux 内核主要使用 cgroup 机制来应对资源竞争问题,提供了共享内核、共享资源场景下的资源隔离解决方案。资源隔离能力是资源利用率和系统性能之间取舍折中的产物。如果没有对高资源利用率的追求,那么当前 Linux 操作系统的资源隔离能力可以满足基本需求。但在高利用率场景下,对于进一步提升资源隔离能力以保障系统 QoSLinux cgroup 机制还存在很大的不足,主要问题如下。

     在CPU QoS 方面,尽管 cgroup 支持 QuotaShare QoS 机制,但在高资源利用率下,核心的问题还是对硬件资源的竞争,以及内核 CFS 调度算法如何同时满足延迟敏感任务和批处理计算任务的需求。内核社区实现了 Intel 提出的 CATMBA CPU Cache,内存带宽能隔离机制,谷歌和阿里云还实现了各自定制的调度器算法,以解决高利用率下调度延迟的问题。目前,此方向的技术演进非常快,而且更多的试错还在进行中,并未形成更通用的解决方案。

在内存领域,cgroup 机制仅仅实现了按照 cgroup 记账,以及 cgroup 内存资源的使用上限,在 page cache 层面,buddy 子系统、高利用率高压力的并发竞争,还有很多未解决的问题。目前谷歌和阿里都各自实现了有 QoS 差别的主动内存回收算法,以及 per cgroup 的内存回收策略,一定程度上可以缓解内存压力。但是,软件层面的严重共享的底层设计,让内存 QoS 难以得到很好的保障。

     在存储领域,长期以来,Linux 内核缺乏一个可用于生产环境且具备 QoS 能力的文件系统,只有块设备层实现了基于 cgroup QoS 机制,支持按照带宽、延迟来配置共享磁盘 QoS 策略。在传统物理机环境下,因为磁盘空间和资源有限,在容器共享文件系统时,QoS 的保障问题没有很好的解决方案。在虚拟化云服务器上,由于云盘的使用,避免文件系统共享或者磁盘共享比较容易做到,所以问题迎刃而解。

在网络领域,Linux 网络栈 QoS 是基于 TC 模块实现的,并且早于 cgroup 的发展,技术也比较成熟。在容器调度的高利用率的情况下,网络 QoS 的问题通常与其他资源竞争问题交织在一起,例如,CPU 和内存压力经常带来网络延迟的抖动。因此,更好的网络 QoS 方案是全栈和系统化的定制。


安全性和稳定性增强

1)安全性

由于云基础设施带来的硬件和软件场景的简化,与面向通用场景的操作系统不同,云服务提供商的 Guest OS 可以通过对云场景无关代码的裁剪,减少系统的受攻击面来提升系统的安全性。

Guest OS 的生命周期内,厂商也要负责及时提供 CVE 安全预警、修复更新等服务,以确保系统的安全性。

此外,系统的安全性还有赖于正确的系统安全配置,以及系统安全最佳实践的正确应用。例如,AWS 和阿里云都支持 CIS 认证的加固镜像部署,并且提供了符合 CIS 安全规范的配置检测工具,以帮助操作系统管理员确保系统安全得到了正确的配置。

最后,保障云系统安全可信也是一个重要的技术方向。可信Guest OS TPM 虚拟化技术为基础,通过将信任链从云平台物理机层面传递到Guest OS 的方式,使用远程证明和本地证明手段检测出系统的关键组件是否遭到了篡改和破坏,同时提供可靠的敏感数据安全防护机制。例如,Aliyun Linux 2 通过实现可信计算模块,满足了等保四级合规的要求,并可以辅助有等保四合规需求的租户通过相关的合规审查。

2RAS

1)可靠性( Reliability

主流 Linux 操作系统都提供了错误报告机制,以确保在软硬件故障发生时可以正确地被检测到,并且及时报告,操作系统的错误处理程序会正确地处理错误,以防止出现数据损坏( Data Corruption)。

Linux 发行版在软件层面的错误处理能力大同小异,目前还存在以下问题。

用户往往会忽视通过升级内核提升系统的可靠性。例如,软件缺陷没有及时被修复导致故障,或者对新硬件支持不够,内核不能很好地处理新的硬件型号的 RAS 特性。

云服务提供商的服务器或者虚拟化层不支持 RAS 特性,导致 Guest OS RAS 特性无法发挥作用。

在物理服务器内存容量越来越大,大规格虚拟机内存容量越来越大的情况下, Guest OS RAS 能力将会逐渐成为企业级应用的一大痛点。在物理服务器 RAS 特性使能的前提下,通过虚拟化能力的透传,让 Guest OS 可以端到端地处理硬件错误, 必然是一个技术趋势。

2)可用性( Availability

Guest OS 可用性的核心是减少系统的非计划停机时间( Unplanned Down Time)。 系统可以在操作系统的软件层之上,使用高可用方案保障业务的连续性,减少系统不可用时间对业务可用性的影响。然而,Guest OS 对故障检测和 Failover 过程更友好的支持,可以大大提升云上 Scale Out 系统的运维效率。

系统不可用可能有很多原因,从错误现象上分为以下三类。

宕机(Panic):内核检测到软件或硬件错误,进入 kernel panic 流程,然后重启恢复服务。这时,系统的恢复时间和 panic 流程里 crashdump 的性能、启动性能都有关系。

夯机(Hang): 内核全局夯死。这时软件可以通过网络心跳,或者设置内核看门狗(Hard/Soft Lockup Watchdog)等手段检测到夯机。此时可以触发应用层的 failover,并触发 kernel panic 来保障夯机原因得到诊断。

任务夯(Task Hang):关键进程在内核卡死或者卡顿超时。这时软件可以通过内核看门狗(Hang Task Detector)检测到任务夯,此时可以触发应用层的 failover,并触发 kernel panic 来保障任务夯原因得到诊断。


3)可服务性( Supportability

Guest OS 可服务性的主要目的是提升 Guest OS 维护的效率,降低 Guest OS 维护的成本。无论用户使用的是 Scale Up 架构,还是 Scale Out 架构,在操作系统发生故障时,都可能产生故障修复或者至少是根本原因分析的诉求,这方面的能力甚至会直接影响到用户和服务商根据 SLA 定责的公平性和效率。

如前所述,当系统不可用时,不论是宕机、夯机、关键任务夯都可能会触发 kernel panic 来辅助故障修复和诊断分析,而在这个过程中,如何比较可靠地产生 kernel core dump( 内核核心转储)文件,成为焦点问题。这里主要的问题有以下几种。

需要人工干预。夯机自动检测设置较复杂且有很多原因会导致失败,因此需要人工干预。例如,AWS 通过支持用户主动触发 kernel core dump 帮助诊断系统问题。

需要避免内存浪费。Linux 内核 kernel dump 机制可能造成预留内存浪费问题, 因此需要支持其他 kernel dump 机制。例如,允许将 kernel core 直接保存到用户指定的对象存储空间中。

需要提升 kernel dump 性能。kernel dump 会导致系统冻结,造成短时间内系统不可用,需要提升 dump 性能,缩短系统不可用的时间。

除可用性故障外,还有很多 Guest OS 故障与服务质量相关。比较常见的性能抖动问题、系统资源竞争问题都需要更高效率的故障诊断和界定工具来帮助确定原因。例如,当应用对文件的 buffer I/O 的写出现抖动时,究竟是 Guest OS 的内存压力问题, 还是文件I/O 系统的锁问题,抑或是底层云盘块存储的问题呢?

现代内核支持动态追踪技术的 Linux 发行版,可以方便安全地使用 eBPF 追踪技术快速定位上述问题。例如, Aliyun Linux 2 的发行版集成了基于 eBPF 的诊断工具包,这些工具包也是阿里云内部规模化运维诊断系统问题多年的经验积累。

性能优化

1)全栈优化

由于 Guest OS 运行在虚拟机上,所以虚拟化的性能开销是虚拟机性能的一大制约,常见优化如下。

通过优化 Guest OS 内部的时钟、外设中断、特殊指令提升性能。


这里以Aliyun Linux 2 的优化案例为例。

网络协议栈使用BBR流控协议,而BBR频繁使用时钟中断导致大量的VM_ Exit

HLT 指令引发不必要的 VM_Exit,使用 halt polling 优化性能。

避免监控工具和脚本触发MSR寄存器读写,高频IPI中断,导致大量VM_Exit

通过 PV 半虚拟化方式实现 Guest OS Host OS 协同优化。

多线程 TLB IPI 经常引发频繁 VM_Exit 导致的性能问题,通过云平台和 Guest OS 协同,引入 PV IPI 机制,极大降低了 IPI 导致的性能开销。

正处于活跃开发状态的 Virtiofs 也提供了一个高性能的虚拟机之间共享文件的机制。对购买虚拟机搭建自有 PaaS 容器平台的用户而言,这是一个不错的应用场景。


2)解决方案优化

在云上构建贴近用户的端到端解决方案,通过 Guest OS 及云全栈优化构建最优解决方案,是未来企业级用户上云的重要诉求。

云服务提供商的 Guest OS 通过发展 ISV 和解决方案合作伙伴,帮助第三方软件按最优的性能服务于用户。用户可以在云市场部署和运行经过验证的、成熟的解决方案。

例如,OceanBase 数据库在阿里云使用了 204 台安装有 Aliyun Linux 2 i2 规格族的 ECS 实例,第一次基于云的架构实现了性能最好的 OLTP 类型的数据库解决方案,并通过了 TPCC 测试。

一旦云服务提供商 Guest OS 与其他云产品形成可复制的解决方案,云服务提供商就可以通过 Linux 发行版的形式集成部署解决方案,或者在云市场使用虚拟机镜像的分发的形式,形成可一键部署的解决方案,提升用户体验和方案部署效率。

总之,随着操作系统开源技术的演进,云上 Guest OS 必然会形成以 Linux 开源社区为事实标准的生态环境。通过服务器硬件、虚拟化基础设施、Guest OS 的协同配合, 云基础设施计算资源的交付成本效率、稳定性、性能都会得到持续的改进和升级。




相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
监控 中间件 Java
后端技术:构建高效、稳定的服务器端应用
【10月更文挑战第5天】后端技术:构建高效、稳定的服务器端应用
116 0
|
3月前
|
监控 关系型数据库 Serverless
探索后端技术:构建高效、可靠的服务器端应用
本文将深入探讨后端开发的核心概念和关键技术,从服务器架构到数据库管理,再到安全防护,为读者提供全面的后端技术指南。无论是初学者还是经验丰富的开发者,都能从中汲取灵感,提升自己的技术水平。
|
1天前
|
存储 运维 安全
阿里云弹性裸金属服务器是什么?产品规格及适用场景介绍
阿里云服务器ECS包括众多产品,其中弹性裸金属服务器(ECS Bare Metal Server)是一种可弹性伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点。分钟级的交付周期将提供给您实时的业务响应能力,助力您的核心业务飞速成长。本文为大家详细介绍弹性裸金属服务器的特点、优势以及与云服务器的对比等内容。
|
2天前
|
存储 弹性计算 人工智能
弹性计算第九代企业级ECS实例新品发布
阿里云第九代企业级实例基于全新CIPU 2.0架构,搭载最新英特尔和AMD处理器,大幅提升性能、安全性和稳定性。G9i实例采用英特尔新一代处理器,内存带宽和L3缓存显著提升,标配AMX加速器;G9A实例则搭载AMD先进处理器,提供更高的性价比和端到端加密能力。九代产品在算力、IO能力和安全性上全面升级,尤其适用于搜推、大数据处理等场景,助力客户实现更高业务价值。
|
22天前
|
弹性计算 运维 Serverless
产品测评 | ECS的健康保障新助手——云服务诊断
本文评测了阿里云的云服务诊断工具,该工具旨在帮助运维工程师和开发者快速定位和解决云资源问题。工具提供了“健康状态”和“诊断”两大核心功能,能够实时监控云资源状态,排查如网站无法访问、ECS故障等多种问题,并给出修复建议。该工具显著提升了排障效率,但在文档清晰度、功能描述准确性及部分功能实现上仍有改进空间。总体而言,该工具值得推荐给其他用户或团队使用。
|
2月前
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
62 6
|
2月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
56 3
|
3月前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
157 32
|
2月前
|
存储 弹性计算 数据库
阿里云服务器ECS产品试用、ECS试用攻略、试用宝典及试用产品续用相关活动介绍
阿里云服务器ECS产品免费试用是阿里云为新手用户提供的免费体验的权益,旨在为新手开发者提供 0 成本高质量的上云体验服务,打造开放,敏捷的开发者环境。阿里云为广大用户提供基础版、企业版试用产品服务(二选一),帮您0门槛轻松体验1个月,基础版最高可试用4核 (vCPU) 8 GiB配置,企业版最高可最高可试用8核 (vCPU) 16 GiB。本文为大家介绍云服务器ECS产品试用、试用宝典、ECS试用攻略及试用产品续用相关活动,以供参考。
|
3月前
|
网络安全 虚拟化 Docker
SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
结合上述方法,您可以对当前环境进行较为准确的判断。重要的是理解每种环境的特征,并通过系统的响应进行综合分析。如果在Docker容器内,通常会有明显的环境标志和受限的资源视图;而在云主机或虚拟机上,虽然它们也可能是虚拟化的,但通常提供更接近物理机的体验,且可通过硬件标识来识别虚拟化平台。物理机则直接反映硬件真实信息,较少有虚拟化痕迹。通过这些线索,您应该能够定位到您所处的环境类型。
74 2