存储虚拟化概述

目录

1. 存储体系架构

2. 存储设备层虚拟化

3. 块聚合层虚拟化

3.1. 块聚合层虚拟化实现方式

3.2. 块聚合层虚拟化分类

3.3. 块聚合层虚拟化技术

4. 文件/记录层的存储虚拟化


      存储虚拟化是一种将存储系统的内部功能从应用主机或者网络资源中抽象、隐藏或者隔离的技术,其目的是进行与应用和网络无关的存储或数据管理。存储虚拟化可以在存储体系结构的多个层面实现,虚拟化为底层存储资源的复杂功能访问提供了简单、一致的接口,使用户不必关心底层系统的复杂实现。

1. 存储体系架构

      现代存储体系结构主要包含三个部分:应用(Application)、存储域(Storage domain)和服务子系统(Services),如图1所示。

图1. 存储体系结构(存储工业协会SNIA)

        存储域:存储域是存储体系结构的核心,它包含三个层次:文件/记录层块聚合层存储设备层,通过存储域可以建立上层主机的用户应用与部署在底层的存储资源之间的映射关系。

  • 文件/记录层:是上层应用与存储资源之间的接口,采用文件系统或者数据库等方式,能够屏蔽底层硬件信息并以文件或者结构化数据的形式为用户提供数据信息的存储访问能力。
  • 块聚合层:主要用于将多个底层存储设备的存储资源块聚合为能够被同一的存储资源,其实现可以在主机系统、存储网络或者存储设备等多个位置上实施,其目标是将数据块的物理位置与相应的逻辑位置关联起来。
  • 存储设备层:主要对数据块存储的物理位置进行识别,并将数据块从真实的底层物理存储设备中读出或者写入。存储设备层也可以直接为文件/记录层提供数据访问接口,能够独立完成逻辑描述和物理存储位置的映射,二无需经过聚合层。

       服务子系统:服务子系统是存储域的辅助系统,包含一系列与存储相关的功能,如管理、安全、备份、可维护性及容量规划等。

      对于存储系统而言,不同层次的虚拟化实现具有不同的目标。存储设备层的存储资源是最底层的物理设备,通过数据块存储地址的虚拟化,实现对存储内容的快速寻址;块聚合层虚拟化的目标是通过对存储设备层的物理存储设备进行合理组织,将其构建为能被统一访问的物理资源池;文件/记录层进一步对物理资源进行抽象,将其虚拟化为逻辑资源,并为上层应用使用

2. 存储设备层虚拟化

       存储设备层的存储资源是指各个独立的存储设备,其中,磁盘是最重要的存储设备,其虚拟化主要体现在数据块存储地址的虚拟化上。

       磁盘上的存储信息是用C-H-S(柱面号-磁头号-扇区号)来表示的,因为不同容量的磁盘拥有的柱面个数不同,所以需要针对不同的硬盘设计专门的寻址方式。然而,这对于需要进行磁盘访问的操作系统和应用来说是不可行的,因为这需要它们了解每种磁盘的物理特性,磁盘虚拟化正是解决这个问题。

       磁盘虚拟化就是将用C-H-S表示的地址信息转换为具有连续编号的逻辑块地址(Logical Block Address, LBA)供上层的操作系统、管理程序、应用程序等使用,这就是逻辑寻址。磁盘虚拟化是由磁盘自身的固件来完成的,使用者无需了解磁盘内部硬件细节,通过逻辑地址就可以访问磁盘。磁盘虚拟化如图2所示。

图2. 磁盘虚拟化示意图

3. 块聚合层虚拟化

       虽然存储设备层的磁盘虚拟化技术能否将单个物理磁盘设备虚拟成逻辑块地址供操作系统和上层应用使用,但是单块磁盘的存储容量有限,为了实现更多物理磁盘的聚合与统一访问,则需要应用块聚合层的虚拟化技术。

       块聚合层的目标是通过控制物理存储切并将它们聚合成一个足够容量、高性能和高可靠性的虚拟存储器,再将虚拟存储器划分为多个小的磁盘驱动器分配给用户。块聚合层的主要技术有独立磁盘冗余阵列(Redundant Array of Independent Disks, RAID)和逻辑卷管理(Logical Volume Manager, LVM)等,如图3所示。

图3. 块虚拟化示意图

3.1. 块聚合层虚拟化实现方式

       根据虚拟化过程中对数据管理信息(元数据)和存储数据的不同访问方式,块聚合层的存储虚拟化技术可分为:带内虚拟化(In-band virtualization)带外虚拟化(Out-of-brand virtualization)

       在传统的共享存储访问中,服务器和存储设备之间的访问路径如图4所示。服务器通过存储网络访问存储设备上的元数据和数据,如图4所示。

图4. 服务器和网络存储设备之间的访问路径

       当采用虚拟化技术时,虚拟化设备(也称为虚拟化引擎)需要同时抽象元数据视图和数据视图的位置。如果虚拟化引擎位于服务器和存储设备之间的传输路径上,如图5(a)所示,对数据的访问和对元数据的访问共同存在于一条传输路径中,即数据路径和控制路径共同存在于数据流中,则为带内虚拟化。但是,如果虚拟化引擎将对元数据的访问和数据的访问路径分开,如图5(b)所示,即数据路径和控制路径分离,则为带外虚拟化


图5. 带内虚拟化和带外虚拟化

       在带内虚拟化中,虚拟化引擎直接插入到数据传输路径中,所有的读写请求都通过这个虚拟化引擎进行。这种方式可以实时处理数据流,但可能会对性能产生影响,因为所有的数据访问都需要通过虚拟化层。在带外虚拟化中,控制路径通过一个独立的管理接口进行,不直接参与数据传输。在这种模式下,虚拟化引擎不直接处理数据流,而是通过发送命令给存储设备来间接控制数据流。这种方式可能对性能的影响较小,但需要存储设备支持相应的命令和配置。

       从服务器角度,带内虚拟化变动量最少,这是因为服务器不需要通过存储网络去发现和连接多个存储设备,而只看到由虚拟化设备提供的巨大的单个存储资源。但是,虚拟化引擎对元数据的控制是服务器与数据之间的必经之路,这使得元数据部分也成为提高性能和可靠性的瓶颈。带外虚拟化将对元数据的控制转移到了数据路径之外,避免了带内虚拟化存在的问题,但是要求每台服务器上必须安装虚拟化代理程序,将I/O请求转发给带外虚拟化引擎来处理。

3.2. 块聚合层虚拟化分类

       根据块聚合层存储虚拟化实现的位置,可以分为:基于主机的存储虚拟化基于网络的存储虚拟化基于存储设备的存储虚拟化

(1)基于主机的存储虚拟化

       当仅需单个服务器(或单个集群)访问多个磁盘阵列时,可以使用基于主机的存储虚拟化技术。基于主机的存储虚拟化可以通过在每台服务器上安装逻辑卷管理(Logical Volume manager, LVM)软件来实现,它隐藏了物理存储资源的复杂性,并向操作系统提供存储资源的逻辑视图。因为物理存储抽象发生在服务器本身,因此,就不存在分离控制和数据传输路径了,也就避免了带内虚拟化带来的瓶颈和性能问题。服务器可以通过多条路径到达共享存储,存储设备资源也可以任意组合。

        主机的存储虚拟化架构如图6所示,在本例中,服务器1可以使用磁盘阵列12上的存储空间,服务器2可以使用磁盘阵列23上的空间,服务器3可以使用磁盘阵列234上的空间。

图6. 基于主机的存储虚拟化示意图

       主机的存储虚拟化的优缺点如下:

  •        优点:支持异构存储系统,容易实现;不需要额外的特殊硬件。

       缺点:占用主机资源,降低性能;存在操作系统和应用的兼容性问题;导致主机升级、维护、扩展复杂,容易造成系统不稳定。

(2)基于网络的存储虚拟化

      当多个主机服务器需要访问多个异构存储设备时,可以使用基于网络的存储虚拟化技术。该技术通过在SANStorage Area Network)中添加虚拟化引擎实现。基于网络的存储虚拟化将虚拟化引擎转移到了存储网络的核心部分。因为存储网络已经在所有服务器和存储设备之间建立了连接,所以更容易透明地截获和处理存储请求,是一种带内虚拟化方法。这种方案不需要在服务器上安装任何代理程序,也支持各种物理存储资源的整合,它需要的仅仅是网络设备具有足够的处理能力。

      基于网络的存储虚拟化架构如图7所示,服务1-3可以访问次磁盘阵列1-4。

图7. 基于网络的存储虚拟化示意图

      基于网络的存储虚拟化的优缺点如下:

      优点:与主机无关,不占用主机资源;支持异构主机和异构存储设备;统一不同存储设备的数据管理功能;构建统一管理平台,可扩展性较好。

      缺点:部分厂商数据管理功能弱,难以达到虚拟化统一数据管理的目的;部分厂商产品成熟度较低,仍然存在和不同存储和主机兼容性问题。

(3)基于存储设备的存储虚拟化

       若多个服务器需要访问同一磁盘阵列时,可以采用基于存储设备的虚拟化。该技术是在物理存储设备层实现虚拟化,即通过在存储设备的存储控制器上添加虚拟化功能来实现,其可将一个阵列上的存储容量划分为多个存储空间(Logical Unit Number, LUN),供不同的主机系统访问。基于存储设备的虚拟化可以实现对服务器完全透明,用户无需在服务器上安装任何代理软件。同时,与网络虚拟化不同,它位于存储系统的后端而并不是中间,所以避免网络负担的增加,不会成为新的瓶颈。

       基于存储设备的虚拟化架构如图8所示,磁盘阵列1的存储空间可以提供给服务器1和2使用,磁盘阵列2的存储空间可以提供给服务器2和3使用。

图8. 基于存储设备的虚拟化示意图

      基于存储设备的虚拟化优缺点如下:

      优点:与主机无关,不占用主机资源;数据管理功能丰富。

      缺点一般只能实现对本设备内磁盘的虚拟化;不同厂商间的数据管理功能不能互操作;多套存储设备需要配置多套数据管理软件,成本较高。

3.3. 块聚合层虚拟化技术

      直接附加存储(Direct Attached Storage, DAS)存储区域网络(Storage Area Network, SAN)是块聚合层的两种主要虚拟化技术。

       DAS是指将存储设备通过总线(SCSI、PCI、IDE等)接口直接连接到一台服务器上使用的存储方式。DAS存储主要依赖于服务器主机操作系统进行数据的I/O读写和存储维护管理,数据备份和恢复要求占用服务器主机资源。DAS适合中小企业的数据应用,在中小企业中,许多的数据应用是必须安装在直连的DAS存储器上。

      SAN是一种高速的、专门用于存储操作的网络,一般是由磁盘阵列(RAID)连接光纤通道(Fibre Channel)组成。SAN将服务器和存储设备连接在一起,能够为其上的任意一台主机和任意一台存储设备提供专用的通信通道。SAN将存储设备从服务器中独立出来,实现了服务器层次上的存储资源共享。SAN适合大型企业环境或需要高可用性和可扩展性的数据应用。

      DAS和SAN可以在多个不同位置采用相关的虚拟化技术。在服务器层,DAS可以通过安装和部署LVM和RAID等存储资源管理软件,实现块聚合。在存储设备层,DAS可以通过在磁盘上安装RAID控制器等软/硬件设备实现块聚合,使得存储数据的条块化处理不必在服务器上完成。相较于DAS,SAN虚拟化技术具有更高的复杂性。在存储设备层,不同厂商生产的不同型号的设备在进行虚拟化时存在巨大差异,因此,SAN要想在存储设备层对这些设备进行整合,就需要充分考虑设备虚拟化的兼容性和易用性。SAN在服务器曾进行虚拟化的最大问题在于需要对分散安装在各台服务器上的负责对存储网络进行共享访问的代理程序进行管理和维护。

4. 文件/记录层的存储虚拟化

       文件/记录层的存储虚拟化的目标是使上层用户的应用能够更好地使用下层的存储资源,因此,文件系统和数据库系统的虚拟化是这一层的主要技术。特别是系统虚拟化,能够使用户程序透明、高效地访问存储在远程的文件。

      最简单的文件系统虚拟化形式是网络远程文件系统(Network File System, NFS)。在NFS中,文件系统提供了专门的文件服务器用于管理网络中对文件的共享访问。这样的文件系统可以由网络中的很多主机共享,而这些主机上可能运行着不同的操作系统,它们可以使用与访问本地文件系统相同的机制对在文件系统中共享的文件进行访问。因此,一个应用或用户可以使用完全透明的接口访问文件而无需关心文件的物理位置。

       在存储系统的实际应用中,网络附加存储(Network Attacted Storage, NAS)系统采用的是文件/记录层的存储虚拟化技术。NAS是一种文件级存储架构,它使用部署在专用文件服务器上的文件系统管理底层的硬件存储资源,并由文件服务器通过网络协议为用户提供文件级的存储访问。与SAN类似,NAS能够为用户提供共享的存储资源,另外,它还能够通过提供与用户本地文件处理的接口一致的文件访问和操作接口支持异构用户的使用。由于NAS系统需要采用网络协议进行文件传输,因此,在数据备份或存储过程中会占用网络的带宽,这必然会影响企业内部网络上的其他网络应用。但由于NAS系统在易用的同时具有一定的价格优势,所以在业界有着广泛的应用。

参考文献

1. 雷葆华等. 云计算解码.  电子工业出版社, 2011.4.

2. 存储虚拟化技术介绍 - 知乎 (zhihu.com).

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

事业单位向媒体投稿发文章上级领导交给了我投稿方法

作为一名事业单位的普通职员,负责信息宣传工作,我见证了从传统投稿方式到智能化转型的全过程,这段旅程既是一次挑战,也是一次宝贵的成长。回想起初涉此领域的日子,那些通过邮箱投稿的时光,至今仍然历历在目,其中的酸甜苦辣,构成了我职业生涯中一段难忘的经历。 邮箱投稿:费时费…

06-beanFactoryPostProcessor的执行

文章目录 invokeBeanFactoryPostProcessors(beanFactory)invokeBeanFactoryPostProcessors(beanFactory, getBeanFactoryPostProcessors())invokeBeanDefinitionRegistryPostProcessors(currentRegistryProcessors, registry);invokeBeanFactoryPostProcessors(regularPostProc…

JAVA基础之jsp标准标签

jsp动作标签实现实例化一个实体类 <jsp:useBean id"标识符" class"java类名" scope"作用范围"> 传统的java方式实例化一个实体类 Users user new Users(); <%%> id: 对象名 * class:类 创建对象时,完全限定名(包名…

设置默认表空间和重命名

目录 设置默认表空间 创建的临时表空间 tspace4 修改为默认临时表空间 创建的永久性表空间 tspace3 修改为默认永久表空间 重命名表空间 将表空间 tspace3 修改为 tspace3_1 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/13520…

Spring Boot | Spring Boot 整合 “RabbitMQ“ ( 消息中间件 ) 实现

目录: Spring Boot 整合 "RabbitMQ" ( 消息中间件 )实现 &#xff1a;一、Spring Boot 整合 整合实现 : Publish/Subscribe ( 发布订阅 ) 工作模式 ( "3种"整合实现方式 )1.1 基于"API"的方式 ( 实现 Publish/Subscribe "发布订阅"工作…

OSPF Stub区域

原理概述 OSPF 协议定义了多种区域&#xff08; Area &#xff09;类型&#xff0c;其中比较常见的有 Stub 区域和 Totally Stub 区域。区域的类型决定了在这个区域当中所存在的 LSA 的类型。 Stub 区域不允许 Type-4和 Type-5 LSA 进入&#xff0c;该区域会通过 Type-3 LSA…

电子商务对应的职业有哪些?10年互联网人透底行业秘密!

电子商务对应的职业有哪些&#xff1f;10年互联网人透底行业秘密&#xff01; 事实说话&#xff0c;实事求是&#xff0c;不要再把美颜滤镜下的市场&#xff0c;传给新人小伙伴了&#xff01; 大家好&#xff0c;我是微三云胡佳东&#xff0c;一家软件公司负责人&#xff01; …

keystone学习小结

1 keystone middleware 1.1 工作流程 middleware在客户端和服务端之间&#xff0c;会拦截客户端请求并判断请求身份是否是正确合法的&#xff0c;若是&#xff0c;则继续将请求发给其他middleware或app 具体看&#xff0c;干了这些事 1将请求里的auth header去除&#xff0c…

景源畅信:想要做抖音电商有哪些适合的发展渠道?

在数字浪潮的推动下&#xff0c;抖音电商如同一股不可阻挡的潮流&#xff0c;正吸引着无数创业者和品牌的目光。如何在这一领域获得成功&#xff0c;选择合适的发展渠道成为关键。接下来&#xff0c;让我们深入探讨这一话题&#xff0c;揭开抖音电商成功之路的秘密。 一、内容创…

C# Web控件与数据感应之 TreeView 类

目录 关于 TreeView 一些区别 准备数据源 范例运行环境 一些实用方法 获取数据进行呈现 ​根据ID设置节点 获取所有结点的索引 小结 关于 TreeView 数据感应也即数据捆绑&#xff0c;是一种动态的&#xff0c;Web控件与数据源之间的交互&#xff0c;本文将继续介绍与…

Idea + maven 搭建 SSH (struts2 +hibernate5 + spring5) 环境

org.apache.struts struts2-core 2.3.35 org.apache.struts struts2-spring-plugin 2.3.35 org.apache.struts struts2-json-plugin 2.3.8 1.4 配置Java EE 坐标依赖 这里可以引入 servlet api&#xff0c;jstl 标签库等一系列工具 javax.servlet javax.servlet-api …

c语言实现贪吃蛇小游戏————附全代码!!!

目录 1.Win32 API 1.1控制台应用程序 1.2控制台的名称&#xff0c;控制台窗口大小 1.3设置控制台光标位置 COORD - 光标坐标 GetStdHandle - 获取句柄 SetConsoleCursorPosition - 设置光标位置 封装一个设置光标的函数 1.4设置控制台光标的属性 CONSOLE_CURSOR_INFO …

【第13章】spring-mvc之validator

文章目录 前言一、准备1. 引入库2. add.jsp3. show.jsp 二、代码部分1.实体类2. 控制器类3. 效果4. 展示 总结 前言 【第20章】spring-validator 虽然前面已经在spring介绍过&#xff0c;但是为了保证代码可用&#xff0c;还是会从头讲到尾&#xff0c;尽量把关键点列出来讲给…

微服务架构中的挑战及应对方式:Outbox 模式

使用 Outbox 模式保持微服务数据一致性 在一个由许多小型服务组成的系统中保持数据一致性是困难的&#xff0c;因为它们分散在各处。以下是一些常见问题以及如何处理它们的方法&#xff1a;当服务发送消息时&#xff0c;同时更新数据库和发送消息是棘手的问题。 在微服务中发出…

【Qt 开发基础体系】Qt信号与槽机制

文章目录 1.Qt 信号与槽机制原理&#xff08;Signal & Slot&#xff09;2. QObject 类 connect 的介绍3. 信号与槽机制连接方式4. 信号和槽机制优势及其效率&#xff1a;3. 信号与槽机制应用 1.Qt 信号与槽机制原理&#xff08;Signal & Slot&#xff09; &#x1f42…

通过AOP实现项目中业务服务降级功能

最近项目中需要增强系统的可靠性&#xff0c;比如某远程服务宕机或者网络抖动引起服务不可用&#xff0c;需要从本地或者其它地方获取业务数据&#xff0c;保证业务的连续稳定性等等。这里简单记录下业务实现&#xff0c;主要我们项目中调用远程接口失败时&#xff0c;需要从本…

《武林秘籍》——闪侠惠递如何让消费者寄快递更安心!

现如今&#xff0c;网上下单寄快递的便利性让众多人享受到了电商物流飞速发展带来的红利性。今天小编直接介绍一款寄快递特别省钱的利器&#xff0c;就是利用闪侠惠递来寄快递。闪侠惠递寄快递&#xff0c;真正的实现了便宜寄快递发物流的便捷性&#xff0c;开创了低价发快递的…

【汇总】虚拟机网络不通(Xshell无法连接虚拟机)排查方法

搜索关键字关键字关键字&#xff1a;虚拟机虚拟机虚拟机连接失败、虚拟机无法连接、Xshell连接失败、ping baidu.com失败、静态IP设置 Kali、CentOS、远程连接 描述&#xff1a;物理机无法连接虚拟机&#xff1b;虚拟机无法访问百度&#xff0c;虚拟机无法访问baidu.com 虚拟机…

Logstash分析MySQL慢查询日志实践

删除匹配到的行&#xff0c;当前行信息不记录到message中

可视化面板布局适配屏幕-基于 flexible.js + rem 智能大屏适配

可视化面板布局适配屏幕-基于 flexible.js rem 智能大屏适配 VScode 安装cssrem插件引入flexible.js在之后的开发都使用rem为单位&#xff0c;安装cssrem插件就是为了快捷将px转为rem我们的设计稿是1920px&#xff0c;设置最小宽度为1024px&#xff0c;最后&#xff0c;我们可…
最新文章