一些关于云电脑与虚拟化东西

前言

好久没有更新了,在进行自我校准。

云计算是什么?

云计算是一种模型,它使得用户能够随时随地、方便地、按需访问共享的可配置计算资源池(例如,网络、服务器、存储、应用程序和服务),这些资源可以快速配置和释放,几乎不需要管理努力或服务提供商的交互。

云特征

  • 按需自助服务

    • 专注于根据用户请求提供IT服务
    • 不需要与云提供商进行人工交互
    • 云计算提供了一种交付计算服务的方式,使得用户设备之外的底层技术几乎不可见
  • 广泛的网络访问

    • 专注于随时随地通过用户选择的设备提供IT服务
  • 资源池化

    • 将计算资源整合到池中以提高利用率
  • 快速弹性

    • 根据底层工作负载的要求和使用特征动态分配和收缩资源
  • 可度量服务

    • 专注于提供可以计量使用量并按需收费的IT服务(如果需要)通过包括订阅、使用定价在内的定价模型 - 服务水平协议(SLA)

云服务模型

  • 软件即服务(SaaS)
  • 平台即服务(PaaS)
  • 基础设施即服务(IaaS)

云部署模型

  • 公有云
  • 私有云
  • 混合云
  • 社区云

虚拟化的历史

虚拟化有多久了?

半个世纪!

当时最成功的计算机S/360大型机系统没有在CPU级别提供虚拟内存和特权分离。当时的主流计算模型是非交互式的、批量作业。

虚拟化的概念直到六十年代末才在CP-40项目中被研究和尝试,该项目最终导致了第一个真正的完整虚拟化支持,出现在1966年的IBM S/370-67中。

时间共享系统开发的主要驱动因素是,批量处理中等待I/O是低效的,程序必须在程序员可以获得失败之前排队等待。

有趣的是,正是时间共享概念的兴起催生了计算机安全问题。

尽管时间共享技术在当时的政治斗争中输给了批处理架构。

在个人电脑世界中,时间共享功能的动力并不显著,因为个人电脑的CPU足够便宜,可以分配给一个人使用。

许多公司推出了提供虚拟化功能的桌面产品。但它们并不十分实用(由于复杂性和低性能)。

然而,互联网的兴起带来了大量服务器农场的出现,运行着像网站这样的应用程序。这些应用程序的负载模式显然与大型机和终端一样是突发性的。
因此,在同一个系统上并行运行许多不同的应用程序再次变得有意义。

大约在2005年,个人电脑CPU供应商引入了支持虚拟化的新CPU指令——英特尔VT-x和AMD-V CPU。

到这一刻,实际的虚拟化已成为可能。

虚拟化到底是什么?

现在,有些人在谈到虚拟化的术语时可能会感到有点困惑。让我们弄清楚是什么:

多线程:执行环境允许每个进程并行运行多个代码流。

多任务:操作系统让每个任务(进程)感觉它是唯一在系统上运行的,并且可以完全访问系统资源(内存,I/O)。对于虚拟机工作的关键硬件组件是MMU。

有趣的事实:在批处理时代,多任务的替代方案是多编程——当任务在I/O上被阻塞时,从CPU上卸下的动态任务队列。

虚拟化:每个操作系统实例都感觉它是在CPU/系统上唯一运行的操作系统,并且可以完全访问系统资源(例如,每个操作系统都认为它有自己的CPU、内存、I/O)。

容器:给一组任务、应用程序的印象,它是在操作系统内唯一运行的。然而,容器共享同一个操作系统内核实例。

与虚拟化主题不直接相关,但并行性可能出现的另一个地方是CPU。随着制造工艺的进步,我们现在有了内置在单个芯片中的多个CPU(多核CPU)。

另一种技巧是虚拟化CPU本身——超线程技术在单个物理CPU之上呈现多个虚拟CPU。

2005年之前虚拟化是如何工作的?

实际上,基于各种技巧,使用英特尔80386+ CPU可以实现虚拟化。比如将管理程序放在环0,虚拟机放在环1,应用程序放在环2。
尽管这从实现角度来看很复杂,有显著的限制,并且运行缓慢。

随着2005年(个人电脑CPU)更好的CPU支持虚拟机管理的出现,虚拟化变得实用。

这已经是云了吗?

一旦虚拟化就位,它如何成为云?

为了提供云服务,我们需要:

  • 管理程序来控制虚拟机的生命周期
  • 更高层次的虚拟化管理基础设施和额外的服务

那么为什么这个东西被称为“管理程序”呢?如果这个术语没有已经被操作系统(监督资源和任务)占用的话,它可能是“监督器”。因此,管理程序监督租户操作系统。

管理程序

管理程序是一个创建和运行虚拟机的软件。

运行一个或多个虚拟机的管理程序的计算机被称为宿主机,每个虚拟机被称为客户机。

存在两种类型的管理程序:

  • 第1类或裸机或本地
  • 第2类或托管管理程序

本地管理程序

这些管理程序直接在宿主的硬件上运行,以控制硬件和管理客户操作系统。

IBM在1960年代开发的第一批管理程序是本地管理程序。现代本地管理程序包括:Xen、Oracle VM Server、Microsoft Hyper-V和VMware ESX/ESXi。

托管管理程序

这些管理程序像其他计算机程序一样在传统的操作系统上运行。客户操作系统作为宿主上的一个进程运行。第2类管理程序将客户操作系统从宿主操作系统中抽象出来,反之亦然。

现代托管管理程序包括:

  • VMware
  • VirtualBox
  • Parallels Desktop
  • QEMU

这两种类型之间的区别并不一定清晰。

Linux的KVM和FreeBSD的bhyve是内核模块,有效地将宿主操作系统转换为第1类管理程序。

同时,由于Linux和FreeBSD仍然是通用操作系统,有其他应用程序竞争虚拟机资源,KVM和bhyve也可以被归类为第2类管理程序。

本地与托管混淆

为了增加更多的混淆,管理程序进一步细分为所谓的全虚拟化和准虚拟化能力。

后者涉及修改客户操作系统以显式调用管理程序的服务,而不是让管理程序模拟硬件接口到客户操作系统。在硬件对虚拟化的支持没有完全实现的时候,准虚拟化更有意义。

为什么它被称为管理程序?

“管理程序”这个术语指的是当你有一个监督操作系统内核的监督器时的情况。从历史上看,操作系统内核也被称为监督器(控制用户应用程序)。因此 - 管理程序。

虚拟化管理

到目前为止,我们已经有了在宿主系统上调用虚拟机的方法。问题是:

  • 除了启动虚拟机,用户可能需要部署操作系统、配置网络、存储等
  • 周围有许多不同的管理程序,用户希望有一个单一的用户界面来管理它们

libvirt项目解决了后一个问题 - 系统提供了一个守护进程来管理客户机,用户面向的CLI工具来控制libvirtd守护进程,以及API让其他程序管理客户机。

oVirt软件在数据中心层面解决了这个问题。它提供了数据中心通常存在的一系列虚拟服务,如:

  • [虚拟]机器是计算节点的基础
  • 存储节点
  • 网络

用户面向的GUI模拟了一个虚拟数据中心,用户可以点击构建他们的计算基础设施。

OpenStack项目提供了与oVirt类似的服务,但在更大的规模、灵活性和可扩展性上。有了OpenStack,人们可以在全球范围内启动成千上万的虚拟机。

OpenStack被设计为一个开放式的网络服务集合,它们相互交互以实现虚拟机生命周期的工作流程。

我们将在本课程中深入研究OpenStack。

云特性

虚拟机可以创建不同的(在它们的“硬件”能力部分)以反映操作系统/应用程序对硬件的要求。

非常容易展开一台新机器并安装操作系统。这可以完全远程完成,无需人工干预。

此外,虚拟机可以被复制(或克隆),从而创建从它们的能力角度以及运行其中的操作系统和应用程序来看完全相同的虚拟计算机。

一旦你的虚拟机处于静止状态,你可以轻松地完全备份它。它可能只是一个应用程序备份,也可以包括整个内存和整个虚拟机的状态。这可以用于运行中的虚拟机的实时迁移。

这为在运行时扩展/缩减计算资源、将虚拟机跨数据中心或地理位置移动奠定了基础。

在虚拟机内运行的操作系统通常看不到宿主计算机的真实硬件。相反,它被呈现一些通用的虚拟硬件,这些硬件映射到真实硬件,因此虚拟硬件的API永远不会改变。这使得从操作系统维护的角度来看更容易,同时也简化了虚拟机从一个硬件迁移到另一个硬件的过程。

如果你在软件开发或测试中,能够复制一个潜在复杂的黄金标准环境以备后用可能是一个非常强大的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/58975.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器数据恢复—RAID5阵列中部分成员盘重组RAID5阵列后如何恢复原raid5阵列数据?

服务器数据恢复环境: 一台服务器挂接一台存储,该存储中有一组由5块硬盘组建的RAID5阵列。 服务器故障: 存储raid5阵列中有一块硬盘掉线。由于RAID5的特性,阵列并没有出现问题。工作一段时间后,服务器出现故障&#xff…

new/delete和malloc()/free()的区别及其使用

C系列----new/delete和malloc()/free()的区别 这篇文章我将深读刨析一下这二者的区别及其在使用过程中应该注意的事项 文章目录 C系列----new/delete和malloc()/free()的区别前言一、new/delete和malloc/free在操作自定义类型时的区别1.1、在属性和使用上的区别1.2、返回类型的…

我主编的电子技术实验手册(22)——RC并联电路

本专栏是笔者主编教材(图0所示)的电子版,依托简易的元器件和仪表安排了30多个实验,主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】,精心设计的【实验步骤】,全面丰富的【思考习…

word mathml 创建粗体字母快捷键

在 mathml 中达到latex中 \mathbf{A} 的效果 由于word本身不支持这个命令,所以打算用快捷键实现 快捷键的功能是加粗光标前一个字目 1. Alt F8 打开宏,如果打不开可以尝试 Alt Fn F8 2. 输入 BoldPreviousCharacter 新建宏: Sub Bold…

开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序中积分使用价值的拓展策略

摘要:本文围绕开源 AI 智能名片 2 1 链动模式 S2B2C 商城小程序,深入探讨其积分使用价值的丰富策略。详细分析积分兑换礼品、会员升级、积分抵现等方式在该特定商城小程序环境下的应用特点、存在问题及对用户和商城的影响,旨在为商城的优化运…

Win10 连接到 Ubuntu 黑屏无法连接 使用Rustdesk显示 No Displays 没有显示器

Win10 连接到 Ubuntu 黑屏无法连接 使用Rustdesk显示 No Displays 没有显示器 解决办法安装虚拟显示器 安装xorg虚拟显示器 $ sudo apt install xserver-xorg-video-dummy # 提示错误依赖使用下面这个试试 $ sudo apt-get install xserver-xorg-video-dummy --fix-missing配…

苍穹外卖 查询订单明细

OrderController /*** 查询订单详情** param id* return*/GetMapping("/orderDetail/{id}")ApiOperation("查询订单详情")public Result<OrderVO> selectDetails(PathVariable Long id) {OrderVO orderVO orderService.selectDetails(id);return R…

Hadoop-002-部署并配置HDFS集群

集群规划 Hadoop HDFS的角色包含 NameNode(主节点管理者)、DataNode(从节点工作者)、SeconddaryNameNode(从节点辅助) 节点CPU内存hadoop-11C4Ghadoop-21C2Ghadoop-31C2G 一、下载上传Hadoop包 注意: 登录hadoop-1节点root用户执行 1、官网下载安装包后上传 到hadoop-1服务…

C/C++中的基本数据类型

在C语言中&#xff0c;支持下面这些基本数据类型&#xff1a; 数据类型占用字节取值范围备注short2-32768 ~ 32767短整型int4-2147483648 ~ 2147483647整型long4 / 8-2147483648 ~ 2147483647-9223372036854775808 ~ 9223372036854775807长整型&#xff1a;在windows中或32位l…

BOOST库配置到VS2022详细操作步骤和可能出现的错误解决方法

文章目录 BOOST库配置上述的细节操作出现的错误错误1错误2 其余内容 BOOST库配置 配置过程见BOOST库配置到VS2022&#xff08;保姆级教程&#xff09;主要借鉴 C/C Windows环境下 boost 安装使用教程【学习笔记】 Boost库各个版本下载地址 上述的细节操作 第一点 我的操作步…

css实现边框双色凹凸半圆

整体效果如下图&#xff1a; 结构代码&#xff1a; <div classline-outside-wrap><div classwrap><img src../img/avatar2x.png/><div classcontent-wrap></div></div></div> 内凹框实现&#xff1a; .content-wrap{width:100%;he…

字符串统计(Python)

接收键盘任意录入&#xff0c;分别统计大小写字母、数字及其它字符数量&#xff0c;打印输出。 (笔记模板由python脚本于2024年11月02日 08:23:31创建&#xff0c;本篇笔记适合熟悉python字符串并懂得基本编程技法的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xf…

[代码随想录打卡]Day2:209.长度最小的子数组 59.螺旋矩阵II 区间和 开发商购买土地 总结

双指针&#xff1a;快慢指针、对撞指针、滑动窗口。相关博客&#xff1a;双指针算法详解&#xff08;快慢指针、对撞指针、滑动窗口&#xff09; 209.长度最小的子数组 题目&#xff1a;给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于…

Vue3的router和Vuex的学习笔记整理

一、路由的基本搭建 1、安装 npm install vue-router --registryhttps://registry.npmmirror.com 2、配置路由模块 第一步&#xff1a;src/router/index.js创建文件 第二步&#xff1a;在src/view下面创建两个vue文件&#xff0c;一个叫Home.vue和About.vue 第三步&#x…

探索React源码:React Diff

本篇文章我们来了解一下Diff算法的实现过程。 相关概念 React中的各种节点 假设当前存在一个DOM节点&#xff0c;触发了一次更新&#xff0c;那么在协调的过程中&#xff0c;会有四种节点和该节点相关联&#xff1a; 该DOM节点本身。 workInProgress fiber&#xff0c;更新过程…

安装fpm,解决*.deb=> *.rpm

要从生成 .deb 包转换为 .rpm 包&#xff0c;可以按照以下步骤修改打包脚本 1. 使用 fpm 工具 fpm 是一个强大的跨平台打包工具&#xff0c;可以将 .deb 包重新打包成 .rpm&#xff0c;也可以直接从源文件打包成 .rpm。 安装 fpm sudo apt-get install ruby-dev sudo gem in…

【stm32】RTC时钟的介绍与使用

RTC时钟的介绍与使用 一、时间戳1、Unix时间戳2、UTC/GMT3、时间戳转换 二、BKP简介及代码编写1、BKP简介2、BKP基本结构3、BKP库函数介绍&#xff1a;4、程序编写&#xff1a; 三、RTC简介及代码编写1、RTC简介2、RTC框图2、RTC基本结构3、RTC相关库函数介绍&#xff1a;4、程…

深入理解Transformer中的位置编码

1 位置编码的作用 由于注意力的作用机制&#xff0c;不论输入序列的顺序如何&#xff0c;输出结果都是一样的。 也就是丢失了位置信息。 但是对于语言模型&#xff0c; 我们都知道顺序是很重要的&#xff0c; 所以需要对输入序列额外注入位置信息。 2 位置编码方式 Transfor…

C#-数组:一维数组、二维数组、交错数组

数组&#xff1a;声明初始化过后&#xff0c;就不能在原有的基础上进行 添加 或者 删除 了 一&#xff1a;一维数组 一般将一维数组简称为数组 1.1 数组的声明 int[] arr1; 没有分配房间。初始化后就分配房间了int[] arr2 new int[5]; 存在默认值&#xff0c;为0int[] arr3…

ADB指定进程名称kill进程

adb shell ps | grep <process_name> | awk {print $2} | xargs adb shell killadb shell ps&#xff1a;列出所有正在运行的进程。grep <process_name>&#xff1a;筛选出包含指定进程名称的行。awk ‘{print $2}’&#xff1a;提取输出中的第二列&#xff08;通常…