一些关于云电脑与虚拟化东西
前言
好久没有更新了,在进行自我校准。
云计算是什么?
云计算是一种模型,它使得用户能够随时随地、方便地、按需访问共享的可配置计算资源池(例如,网络、服务器、存储、应用程序和服务),这些资源可以快速配置和释放,几乎不需要管理努力或服务提供商的交互。
云特征
-
按需自助服务
- 专注于根据用户请求提供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永远不会改变。这使得从操作系统维护的角度来看更容易,同时也简化了虚拟机从一个硬件迁移到另一个硬件的过程。
如果你在软件开发或测试中,能够复制一个潜在复杂的黄金标准环境以备后用可能是一个非常强大的功能。
相关文章:
一些关于云电脑与虚拟化东西
前言 好久没有更新了,在进行自我校准。 云计算是什么? 云计算是一种模型,它使得用户能够随时随地、方便地、按需访问共享的可配置计算资源池(例如,网络、服务器、存储、应用程序和服务),这些资…...
Java实现图片转pdf
该方法可以选择多个图片是否合并为一个pdf输出,也可以选择图片为横向或者纵向输出,也可以选择pdf页面为A3或者A4 第一步 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version…...
【iOS】使用AFNetworking进行网络请求
文章目录 前言AFNetworkingAFNetworking 的核心组件AKNetworking库的常用方法使用AKNetworking进行网络请求的步骤和代码示例 总结 前言 在暑假写天气预报项目时,我们已经接触到网络请求,当时我们是使用URLSession类,即Foundation框架中用于管…...

ThingsBoard规则链节点:RPC Call Reply节点详解
引言 1. RPC Call Reply 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 设备控制 3.2 状态查询 3.3 命令执行 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台,提供了设备管理…...

【AI换装整合包及教程】OOTDiffusion:以AI技术引领的时尚换装革命
在当今数字化快速发展的时代,人工智能(AI)技术正以前所未有的速度改变着我们的生活。从智能家居到自动驾驶,从在线教育到虚拟现实,AI的应用范围正在不断扩展。而在时尚领域,一款名为OOTDiffusion࿰…...
排序算法详细总结
算法 定义:算法是解决特定问题的明确步骤集合。算法的效率通常用时间复杂度和空间复杂度来衡量。 排序算法 定义:排序算法是计算机科学中用于对元素序列进行排序的一系列算法。排序算法在各种应用中都非常常见,从简单的数据处理到复杂的数…...
uniapp MD5加密
安装: npm install js-md5 -D 引入: import Md5 from js-md5 需求加密一个对象, login_form: {openId: 123456789,phone: ,scenario: 656677,phoneSessionKey: ,openIdSessionKey: ,timeStamp: , }, //10位时间戳(秒)…...

提升视觉回归测试体验:Cypress 插件推荐
项目介绍 在现代前端开发中,视觉回归测试是确保用户界面在不同版本之间保持一致性的关键步骤。然而,传统的视觉回归测试工具往往复杂且难以使用。为了解决这一问题,我们推荐一款专为 Cypress 设计的插件:Cypress Plugin Visual Re…...

fastbootd模式刷android固件的方法
1. fastbootd追根溯源 Google在Android 10上正式引入了动态分区机制来提升OTA的可扩展性。动态分区使能后:andorid系统可以在开机阶段动态地进行分区创建、分区销毁、分区大小调整等操作,下游厂商只需要规划好super分区的总大小,其内部的各个…...

基于C#实现Windows后台窗口操作与图像处理技术分析
在Windows编程中,操作后台窗口是一项复杂而有用的技术。它可以用来自动化用户界面测试、应用程序机器人等场景。本文将深入探讨如何在C#中绑定后台窗口、获取后台窗口界面图片,以及在图片中寻找指定图标并获取坐标。本技术文章结合最先进的资料与实践经验…...

戴尔电脑 Bios 如何进入?Dell Bios 进入 Bios 快捷键是什么?
BIOS(基本输入输出系统)是计算机启动时运行的第一个程序,它负责初始化硬件并加载操作系统。对于戴尔电脑用户来说,有时可能需要进入 BIOS 进行一些特定的设置调整,比如更改启动顺序、调整性能选项或解决硬件兼容性问题…...

数据结构之二叉树——堆 详解(含代码实现)
1.堆 如果有一个关键码的集合 K { , , , … ,},把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中,则称为小堆( 或大堆 ) 。将根节点最大的堆叫做最大堆或大根堆,根节点最小的…...

推荐一款面向增材制造的高效设计平台:nTopology
nTopology是一款面向增材制造的高效设计平台,平台预置了大量增材制造常用的设计工具包,工程师通过调用若干个预置工具包、或自主开发定制的工具包,建立一个工作流,实现复杂几何结构的参数化设计。nTopology集合了的强大几何建模和…...

SQL,力扣题目1767,寻找没有被执行的任务对【递归】
一、力扣链接 LeetCode_1767 二、题目描述 表:Tasks ------------------------- | Column Name | Type | ------------------------- | task_id | int | | subtasks_count | int | ------------------------- task_id 具有唯一值的列。 ta…...
JavaScript数据类型- Symbol 详解
文章目录 前言1.唯一性2. 描述3. 作为对象属性键4. 全局注册6. 不可变性7. 隐式转换 前言 Symbol是ES6新增内容,代表创建后独一无二且不可变的数据类型,它主要是为了解决可能出现的全局变量冲突的问题 在JavaScript发展的过程中,其中的ES6带…...

WordPress网站添加嵌入B站视频,自适应屏幕大小,取消自动播放
结合bv号 改成以下嵌入式代码(自适应屏幕大小,取消自动播放) <iframe style"width: 100%; aspect-ratio: 16/9;" src"//player.bilibili.com/player.html?isOutsidetrue&bvidBV13CSVYREpr&p1&autoplay0" scrolling…...

11.6 校内模拟赛总结
打的很顺的一场 复盘 7:40 开题,看到题目名很interesting T1 看起来很典,中位数显然考虑二分,然后就是最大子段和;T2 构造?一看数据范围这么小,感觉不是很难做;T3 神秘数据结构;T…...
Redis常用的五大数据类型(列表List,集合set)
简介 List 的特点:单键多值。底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。 Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边ÿ…...

Ubuntu 20.04 部署向量数据库 Milvus + Attu
前言 最开始在自己的办公电脑(无显卡的 windows 10 系统) 上使用 Docker Desktop 部署了 Milvus 容器,方便的很, 下载 Attu 也很方便,直接就把这个向量数据库通过 Attu 这个图形化界面跑了起来,使用起来感…...

实现数传数据转网口(以太网)和遥控器SBUS信号转串口的功能
为了帮助你实现数传数据转网口(以太网)和SBUS信号转串口的功能,这里提供一个基本的框架。我们将使用STM32微控制器来完成这些任务。假设你已经具备了STM32的基本开发经验,并且已经安装了相应的开发环境(如STM32CubeIDE…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

【深度学习新浪潮】什么是credit assignment problem?
Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...