文章目录
- 一、虚拟化
-
- [1.1 什么是虚拟化](#1.1 什么是虚拟化)
- [1.2 虚拟化类型](#1.2 虚拟化类型)
- [二 、存储虚拟化](#二 、存储虚拟化)
-
- [2.1 存储指标](#2.1 存储指标)
- [2.2 存储类型](#2.2 存储类型)
- [2.3 存储协议](#2.3 存储协议)
- [2.4 RAID](#2.4 RAID)
- [三、内存 i/O虚拟化](#三、内存 i/O虚拟化)
-
- [3.1 内存虚拟化](#3.1 内存虚拟化)
- [3.2 I/O 虚拟化](#3.2 I/O 虚拟化)
-
- 基本概念
- 模拟(Emulation)方式
- [半虚拟化(Para - virtualization)方式](#半虚拟化(Para - virtualization)方式)
- [硬件辅助 I/O 虚拟化(Hardware - Assisted I/O Virtualization)方式](#硬件辅助 I/O 虚拟化(Hardware - Assisted I/O Virtualization)方式)
- 四、网络虚拟化
- 五、为什么虚拟化
一、虚拟化
1.1 什么是虚拟化
资源池化
1.2 虚拟化类型
二 、存储虚拟化
2.1 存储指标
IOPS(Input/Output Operations Per Second)
定义 :IOPS 是指每秒进行的输入 /输出操作次数。
它主要用于衡量存储设备(如硬盘、固态硬盘等)在单位时间内能够处理的读写操作的数量。例如,一个存储设备的 IOPS 为 100,表示它每秒可以执行 100 次读取或者写入操作。 影响因素: 存储设备类型:固态硬盘(SSD)通常比机械硬盘(HDD)具有更高的 IOPS。这是因为 SSD 使用闪存芯片存储数据,数据的读写是通过电信号控制闪存芯片内的晶体管来实现的,其读写速度极快;而 HDD 是通过磁头在高速旋转的盘片上进行数据的读写操作,机械结构导致其读写速度相对较慢。
存储设备的内部架构 :对于 SSD,其内部的闪存芯片通道数量、主控芯片性能等因素都会影响 IOPS。更多的闪存芯片通道可以同时进行数据传输,提高IOPS;高性能的主控芯片能够更好地调度和管理数据读写,优化 IOPS。 文件系统和数据块大小:不同的文件系统对 IOPS也有影响。例如,某些文件系统在处理小文件时可能具有较高的 IOPS,而在处理大文件时性能下降。同时,数据块大小也很关键,较小的数据块大小可能会导致更多的IOPS,因为每次读写的数据量小,操作频繁,但这也可能会增加系统开销。 应用场景: 数据库应用:在数据库系统中,高 IOPS是非常重要的。例如,对于一个频繁进行数据插入、更新和查询的在线交易数据库,大量的事务操作需要快速的读写支持。每一笔交易可能涉及多次数据读写,高IOPS 能够确保数据库系统快速响应,减少交易等待时间,提高系统的并发处理能力。 虚拟桌面基础架构(VDI):在 VDI环境中,多个用户通过虚拟桌面访问存储在服务器上的数据。当用户同时启动应用程序、加载文件等操作时,需要高 IOPS 来保证存储系统能够快速地为每个用户提供数据读写服务,避免用户体验的卡顿。
吞吐量(Throughput)
定义:吞吐量是指单位时间内成功地传输数据的数量。它通常以字节 / 秒(Bps)、千字节 / 秒(KBps)、兆字节 / 秒(MBps)或吉字节 / 秒(GBps)等单位来衡量。例如,一个网络连接的吞吐量为 10MBps,表示每秒可以成功传输 10兆字节的数据。
影响因素 :网络带宽:这是影响吞吐量的一个关键因素。网络带宽就像是一条高速公路的宽度,带宽越高,能够同时传输的数据量就越大。例如,一个 100Mbps的网络连接比 10Mbps 的网络连接理论上具有更高的吞吐量。
传输协议和设备性能:不同的传输协议对吞吐量有不同的影响。例如,在网络传输中,TCP/IP协议的窗口大小、拥塞控制机制等都会影响数据传输的效率。同时,网络设备(如路由器、交换机等)的性能也很重要。高性能的设备能够更好地处理和转发数据,减少传输延迟,提高吞吐量。
数据传输的内容和格式:数据的类型(如文本、音频、视频等)和格式也会影响吞吐量。例如,传输未经压缩的高清视频数据需要比传输简单文本文件更高的吞吐量,因为视频数据量更大。
应用场景: 文件传输服务:在云存储服务或者企业内部的文件共享服务中,吞吐量决定了文件传输的速度。例如,当用户从云存储中下载一个大型文件(如
1GB 的高清电影)时,高吞吐量可以使文件在短时间内下载完成,提高用户体验。
数据中心内部的数据传输:在数据中心中,服务器之间需要大量的数据交换。例如,在分布式存储系统中,数据节点之间需要传输数据块进行数据备份、恢复和负载均衡等操作。高吞吐量能够确保这些数据传输过程高效进行,维持数据中心的正常运转。
相互制约的原理基础
从物理层面看 : 存储设备或网络设备都有其物理极限。例如,存储设备的内部总线带宽、网络接口的速率等都是有限的。当追求高 IOPS时,每次读写操作的数据量可能较小,这就像在一个有限带宽的通道里频繁地发送小包裹。如果读写操作过于频繁(高IOPS),可能会因为频繁的请求处理而占用大量的系统资源,导致用于传输大量数据的资源减少,从而限制吞吐量。
反之,当重点关注吞吐量时,每次传输的数据量较大,这可能会导致设备忙于传输这些大数据块,而无法及时响应大量的小读写操作请求,从而降低IOPS。例如,在网络传输中,如果正在传输一个大型文件(以提高吞吐量),此时一些小的数据包(如控制指令等)的处理速度可能会变慢,影响IOPS。
从软件和协议层面看 :操作系统和存储管理软件对设备的调度策略也会影响两者的关系。例如,文件系统的缓存机制,如果为了提高吞吐量而将大量数据缓存在内存中准备传输,可能会占用原本可以用于快速响应小读写操作的缓存空间,从而降低 IOPS。 网络传输协议中的窗口大小和拥塞控制机制也会产生制约。例如,TCP 协议中的拥塞窗口会根据网络状况动态调整每次传输的数据量。如果为了提高吞吐量而增大窗口大小,可能会在网络出现拥塞时,不仅导致吞吐量下降,还会因为需要处理大量的重传等问题而影响IOPS。
不同场景下的制约关系表现 数据库应用场景:对于一个在线事务处理(OLTP)数据库,如银行的交易系统,高 IOPS 至关重要。因为系统需要快速处理大量的小读写操作,如账户余额查询、转账等。如果过度关注吞吐量,例如,采用一些会合并数据块传输的策略来提高数据传输效率,可能会导致单个小读写操作的响应时间变长,降低 IOPS,从而影响系统的交易处理速度和用户体验。
而在数据仓库应用场景下,数据加载和备份等操作更注重吞吐量。例如,在夜间进行数据仓库的数据批量加载时,需要传输大量的数据块。此时,如果存储设备或网络忙于处理大量小读写操作(高 IOPS),可能会导致数据加载速度变慢,吞吐量降低
2.2 存储类型
DAS:Direct-Attached Storage 开放系统的直连式存储。直连式存储依赖服务器主机操作系统进行数据的IO读写和存储维护管理,数据备份和恢复要求占用服务器主机资源(包括CPU、系统IO等),数据流需要回流主机再到服务器连接着的磁带机(库)。数据备份通常占用服务器主机资源20-30%,因此许多企业用户的日常数据备份常常在深夜或业务系统不繁忙时进行,以免影响正常业务系统的运行。直连式存储与服务器主机之间的连接通常采用SCSI连接
NAS:(Network Attached Storage:网络附属存储)NAS被定义为一种特殊的专用数据存储服务器。NAS本身能够支持多种协议(如NFS、CIFS、FTP、HTTP等),而且能够支持各种操作系统。
NAS其实是一个网络上的瘦服务器,对用户提供文件系统访问的能力NAS其实是一个网络上的瘦服务器,对用户提供文件系统访问的能力,管理存储介质和负责数据备份。平常我们在x86的服务器上开启samba服务,然后在windows上映射一个盘符到samba服务器上就可以像使用本地存储一样使用服务器上的存储,这时,这台服务器也可以看做是一台NAS服务器。直接挂载使用的(例如目前常用的NFS, CIFS文件系统) 侠义如共享文件
SAN和NAS两者还是有点难区别。NAS的文件系统在NAS设备这边,而SAN的文件系统还是在访问端。
NAS 可以看成放在网络上的文件夹,而SAN可以看作是网络上的磁盘,还需格式化系统,比如mkfs 个xfs ext4,自由度高。
NAS与SAN的关联
根据上面提到的NAS与SAN的区别,我们可以知道,SAN是对用户提供的是高速以块为单位的存储接口,而NAS为用户提供的是以文件为单位的存储接口。
可以说SAN可以看成是网络上的硬盘,NAS可以看成是网络上的文件系统。NAS拥有网络文件系统的优势,而SAN有底层高速数据块的存储优势,所以可以把两者结合起来使用,所以有了NAS-SAN这样的东西
2.3 存储协议
iSCSI是由IBM发明的基于以太网的存储协议,该协议与SUN的NFS协议都是为了解决存储资源共享问题的解决方案。两者意图一致,只不过两者是不同的实现方式,前者在客户机上呈现的是一个块设备,而后者则是一个目录树。
iSCSI 协议
iSCSI(Internet Small Computer System Interface,发音为/ˈаɪskʌzi/),Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准
概括的说,iSCSI是一种存储设备远程映射技术,它可以将一个远程服务器上的存储设备映射到本地,并呈现为一个块设备(大白话就是磁盘)。从普通用户的角度,映射过来的磁盘与本地安装的磁盘毫无差异。
这种映射方式基于是基于SCSI协议的,SCSI协议是计算机与外围设备(例如硬盘、光盘等)通信的协议。而iSCSI则是通过TCP协议对SCSI进行封装的一种协议,也就是通过以太网传输SCSI协议的内容。
2.4 RAID
RAID 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有"独立磁盘构成的具有冗余能力的阵列"之意。磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上提高传输速率。RAID通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量(Throughput)
(1)通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间,提高了数据存取速度。
(2)通过对一个阵列中的几块磁盘同时读取,减少了磁盘的机械寻道时间,提高数据存取速度。
(3)通过镜像或者存储奇偶校验信息的方式,实现了对数据的冗余保护。
RAID-加粗样式 逻辑卷lun
效率和可靠性
增加校验盘
三、内存 i/O虚拟化
3.1 内存虚拟化
基本概念
内存虚拟化是云计算和虚拟化技术中的一个关键部分。它的目的是在多个虚拟机(VM)之间高效地共享物理内存资源,使得每个虚拟机都认为自己拥有独立的、连续的物理内存空间,而实际上它们是共享主机的物理内存。
地址空间转换原理
物理地址和虚拟地址 :在非虚拟化环境中,应用程序使用的是虚拟地址,通过内存管理单元(MMU)转换为物理地址来访问内存。在虚拟化环境下,情况变得更加复杂。虚拟机中的操作系统(Guest OS)管理着自己的虚拟地址空间(Guest Virtual Address,GVA),它认为自己在直接访问物理内存,但实际上这是一种假象。
影子页表(Shadow Page Table)机制 :早期的内存虚拟化技术使用影子页表来实现地址转换。当 Guest OS 创建一个页表(将 GVA 映射到 Guest Physical Address,GPA)时,VMM(虚拟机监视器)会为其创建一个影子页表,用于将 GVA 直接映射到主机物理地址(Host Physical Address,HPA)。这种方法的缺点是性能开销较大,因为每次 Guest OS 更新页表时,VMM 都需要更新影子页表。
硬件辅助虚拟化(Hardware - Assisted Virtualization):现代处理器提供了硬件支持来简化内存虚拟化。例如,Intel 的 EPT(Extended Page Tables)和 AMD 的 RVI(Rapid Virtualization Indexing)技术。以 EPT 为例,它在硬件层面扩展了页表结构,使得 MMU 可以直接将 GVA 通过 Guest 页表和 EPT 转换为 HPA,减少了 VMM 的干预,大大提高了性能。
内存共享与隔离原理
内存共享: 为了提高内存利用率,内存虚拟化技术允许不同的虚拟机共享相同的物理内存页。例如,多个虚拟机运行相同的操作系统或相同的应用程序,它们的某些内存区域(如操作系统内核代码)是相同的。VMM 可以识别这些相同的内存区域,并将它们映射到相同的物理内存页,从而节省内存资源。
内存隔离: 虽然虚拟机之间共享物理内存,但必须保证它们之间的内存隔离,以防止一个虚拟机访问另一个虚拟机的内存数据。VMM 通过内存权限管理和地址空间划分来实现隔离。例如,通过设置页表项中的权限位,使得虚拟机只能访问自己被授权的内存区域。如果虚拟机试图访问未授权的区域,会触发处理器的异常机制,由 VMM 进行处理。
3.2 I/O 虚拟化
基本概念
I/O 虚拟化是一种在虚拟化环境中管理和共享 I/O 设备(如磁盘、网络接口卡、USB 设备等)的技术。它的目的是让多个虚拟机(VM)能够高效地共享物理 I/O 设备,并且每个虚拟机都感觉自己拥有独立的、专用的 I/O 设备,就像在非虚拟化的物理机环境中一样。
模拟(Emulation)方式
原理:在 I/O 虚拟化的早期阶段,模拟是一种常用的方法。VMM(虚拟机监视器)会在软件层面模拟各种 I/O 设备的功能。例如,对于一个虚拟机中的虚拟磁盘设备,VMM 会模拟磁盘控制器的行为,包括接收来自虚拟机操作系统(Guest OS)的 I/O 请求(如读 / 写操作),然后将这些请求转换为对真实物理磁盘的操作。
示例:假设一个虚拟机中的应用程序想要从虚拟磁盘的某个扇区读取数据。Guest OS 会向虚拟磁盘控制器发送一个读请求,这个请求会被 VMM 截获。VMM 会解析这个请求,将其转换为对物理磁盘的实际读操作,包括定位磁盘磁头、读取数据等过程。读取到的数据再通过 VMM 返回给虚拟机中的应用程序。这种模拟方式的优点是兼容性好,可以支持各种不同类型的 Guest OS 和 I/O 设备,但缺点是性能较低,因为大量的软件模拟操作会产生较高的 CPU 开销。
半虚拟化(Para - virtualization)方式
原理:半虚拟化技术要求 Guest OS 进行一定的修改,以使其能够更好地与 VMM 协作完成 I/O 操作。在这种模式下,Guest OS 知道自己运行在虚拟化环境中,并且会使用专门的 I/O 接口与 VMM 进行通信。例如,Guest OS 会通过特定的 Hypercall(超级调用)来发送 I/O 请求,而不是像在物理机环境中那样直接与 I/O 设备交互。
示例:当虚拟机中的应用程序发起一个 I/O 操作时,Guest OS 会识别这个操作,并通过 Hypercall 将请求发送给 VMM。VMM 收到请求后,直接与物理 I/O 设备进行交互,完成操作后将结果返回给 Guest OS。这种方式相比模拟方式,减少了中间的软件模拟环节,提高了性能,但它需要对 Guest OS 进行修改,限制了其通用性。
硬件辅助 I/O 虚拟化(Hardware - Assisted I/O Virtualization)方式
原理:现代处理器和 I/O 设备提供了硬件支持来实现 I/O 虚拟化。例如,Intel 的 VT - d(Virtualization Technology for Directed I/O)和 AMD 的 IOMMU(Input/Output Memory Management Unit)技术。这些技术通过在硬件层面提供 I/O 设备的隔离和地址转换功能,使得每个虚拟机可以直接访问物理 I/O 设备的一部分资源,同时保证设备之间的隔离和安全性。
示例:以网络接口卡(NIC)为例,通过硬件辅助 I/O 虚拟化,每个虚拟机可以有自己独立的直接内存访问(DMA)区域,并且可以直接向 NIC 发送和接收数据包,而 IOMMU 会负责将虚拟机的 I/O 地址转换为物理 I/O 地址,确保每个虚拟机只能访问自己被授权的 I/O 设备资源,从而提高了 I/O 操作的效率和安全性。
四、网络虚拟化
虚拟化网络是云计算的关键技术之一,它将物理网络资源虚拟化为多个逻辑网络。例如,在一个数据中心里,通过软件定义网络(SDN)技术,可以把物理交换机、路由器等设备提供的网络功能进行抽象,划分出多个虚拟网络,每个虚拟网络可以分配给不同的用户或应用。
这样做的好处是提高网络资源的利用率,就像把一套大房子(物理网络)隔成多个小房间(虚拟网络),每个小房间可以租给不同的人使用,从而实现资源的高效利用
五、为什么虚拟化
为什么
发展趋势:`