暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

超详细解读软件定义存储与存储虚拟化(云计算系列专题8)

Cloud云说 2021-07-06
1314

在之前的文章里,我们深入学习了各项存储基础知识,包括存储设备类型,存储接口类型,RAID磁盘阵列技术,实际这些都属于传统存储系统的基础知识;在了解了传统存储设备和相关技术后,我们可以进一步深入学习激动人心的存储虚拟化技术,也就是本篇文章的重点,软件定义存储。




01
传统存储系统的问题


存储虚拟化(或者称为软件定义存储),是和传统存储系统相区别的,可以认为是一种新型存储系统;那么存储虚拟化的出现,就说明了传统存储系统必然存在固有弊端,才催生了存储虚拟化技术的诞生,所以我们先来看看传统存储系统有哪些问题。


通过之前文章的讲解,我们知道传统的存储系统,主要包括,(1)DAS直连存储系统;

(2)SAN存储区域网络系统;

(3)NAS网络接入存储系统;


考虑到存储系统的可靠性,性能等因素,一般企业都会选择SAN或者NAS存储系统;但是作为传统的企业级存储设备,SAN和NAS都存在着如下问题:


存储弹性问题

传统存储设备SAN和NAS,虽然都可以采用RAID磁盘阵列技术,灵活添加或移除磁盘,实现存储容量的弹性扩展,但是随着云计算服务的普及,当越来越多的用户使用云存储时,我们对于云存储系统的容量弹性,往往远不止添加或移除几块磁盘这种级别的容量弹性。


比如今天100个用户累计申请了100TB的云存储容量,第二天用户数量激增为10000人,累计申请了20000TB的云存储容量,这种级别的容量扩展,不是添加几块磁盘就可以解决的。


存储扩展问题

传统存储系统的扩展性,一直是个老大难的问题,因为存储系统的扩展,涉及到前端服务器(CPU&内存),中间存储网络,后端磁盘阵列的一系列同步问题;存储系统的扩展,往往牵一发而动全身。


实施成本和复杂性问题

传统存储系统的构建成本较高,尤其是FC-SAN存储系统的FC存储网络,因为是专用网络,构建成本非常高,并且因为FC存储网络非常复杂,部署难度也很大。


大规模集群,可靠性和容错性,以及灵活的软件定义策略问题

在云计算环境下,需要面向海量用户,提供庞大的云存储服务,存储设备的集群部署,已是必然;集群部署后的存储系统,如何保证用户数据的可靠性,以及如何基于用户需求,灵活定义存储策略(比如为用户提供多大的存储容量,多少IOPS,什么程度的数据可靠性与冗余),这些都会是云计算时代下,不可回避的问题。




2
存储虚拟化概述


根据上一章节的描述,我们知道传统的存储系统(SAN或者NAS),因为各种各样的问题,是肯定无法直接作为云计算环境下的云存储服务,面向用户开放的。


我们需要能够将存储设备虚拟化的能力,就像将服务器虚拟化(计算虚拟化)的能力一样,存储虚拟化使得我们可以将物理存储设备(包括DAS,SAN,NAS等存储设备),转化为虚拟化存储设备,统一调度管理,实现灵活的软件定义存储策略,如下为存储虚拟化框架:



根据上述存储虚拟化框架,不难发现,存储虚拟化主要包括,(1)传统存储虚拟化,即集中式存储设备的虚拟化,

(2)分布式存储虚拟化,即分布式存储设备的虚拟化;


这两类存储虚拟化技术,是有很大区别的,现在我们来逐一讲解传统存储虚拟化和分布式存储虚拟化。




3
传统存储虚拟化


根据上一章节的描述,我们知道存储虚拟化,主要包括,

(1)传统存储虚拟化,即集中式存储设备的虚拟化,

(2)分布式存储虚拟化,即分布式存储设备的虚拟化;


这两类存储虚拟化技术,还是有区别的,我们先来看下传统存储虚拟化方案,再看分布式存储虚拟化方案。


传统存储虚拟化技术的实现方式,主要有如下三种:


裸设备 + 逻辑卷

裸设备+逻辑卷的方式,是最直接的存储虚拟化技术,即服务器将存储设备,划分为多个逻辑卷(Logical Volume),可以将不同的逻辑卷,分配给不同的虚拟机使用,从而实现存储设备的虚拟化;该实现方式,优点是I/O路径简单,读写性能最好,缺点是不支持高级存储业务。


举个例子,假设服务器A连接SAN存储设备(容量1TB),服务器A可以将该存储设备,划分为两个逻辑卷(逻辑卷A和逻辑卷B),分别都是500GB容量;之后服务器A可以将逻辑卷A分配给服务器上的虚拟机1使用,将逻辑卷B分配给服务器上的虚拟机2使用。


存储设备虚拟化

一些专用存储设备(比如华为的FusionStorage),本身就自带虚拟化能力,并提供一系列高级存储业务(比如快照,链接克隆等);这些专用存储设备,可以灵活创建和管理存储单元,并将这些存储单元对外提供,服务器挂载这些存储单元,最终向虚拟机提供存储服务。


举个例子,假设有一款FusionStorage产品存储容量10TB,FusionStorage可以将存储空间,划分为两个存储单元(存储单元1和存储单元2),各5TB容量,然后将存储单元1提供给服务器A,存储单元2提供给服务器B;这样服务器A和B,就分别获取到了5TB存储单元;服务器A上如果有运行虚拟机,服务器A可以进一步将存储容量分配给虚拟机使用,服务器B也是一样。


可以看到存储设备虚拟化,是存储设备自身就拥有的虚拟化能力,存储设备可以根据需求,灵活划分存储单元,并对外提供;所以该方式,优点是实现容易,管理方便,缺点是依赖于厂商设备的虚拟化功能模块,不一定满足客户的定制要求。


主机存储虚拟化 + 文件系统

主机虚拟化是指服务器通过文件系统来实现存储虚拟化的控制和管理;主机存储虚拟化的优点,是部署成本低,性价比高,此外因为该方式基于文件系统实现,所以支持很多高级存储业务(比如快照,链接克隆等),缺点是因为文件系统的运行,存储性能会有损耗。




4
分布式存储概述


上一章节讲述了传统存储虚拟化方案,那么现在继续深入探讨另外一种存储虚拟化方案,即分布式存储虚拟化方案,并进一步横向比较这两种存储虚拟化方案的区别,和各自的优缺点。


根据上一章节的内容,不难发现传统存储虚拟化,主要是针对集中式存储设备(存储系统)的虚拟化,比如针对一个SAN存储系统的虚拟化,或者一个NAS存储系统的虚拟化。


这种存储虚拟化方式,在计算虚拟化方案里,是有用处的,因为计算虚拟化(即服务器虚拟化)时,需要将一台物理服务器,划分为多台虚拟机,每台虚拟机都需要分配虚拟CPU,虚拟内存,以及虚拟存储资源,这时传统存储虚拟化方案就解决了为虚拟机分配虚拟存储的问题。


举个例子,一台物理服务器(10核CPU,20G 内存,外接500GB容量的NAS存储设备),使用计算虚拟化(比如XEN虚拟化方案),可以将该物理服务器划分为两台虚拟机(虚拟机1和虚拟机2),这时可以为虚拟机1分配资源(5核CPU,10G内存,200G存储容量);其中CPU和内存的虚拟化分配方案,之前有讲解,不再赘述;而针对外接500G容量的NAS存储设备的虚拟化分配,就可以用到这里所说的传统存储虚拟化方案了。


综上,传统存储虚拟化技术,主要应用于计算虚拟化(服务器虚拟化)方案里的存储虚拟化分配;但是针对云计算场景下的云存储服务,就显得力不从心了;云存储服务,需要提供海量的存储空间,这么大空间的存储容量,如果仍然采用集中式存储系统(比如SAN,或者NAS存储系统),将会有如下问题:


集中式存储设备(比如NAS存储设备,或者SAN存储设备),设备价格贵,成本高,部署和维护都很复杂,一般需要专业的运维人员操作,普通IT人员操作SAN或NAS存储系统,极易产生误操作,引起业务中断,风险极高。


因为需要超大的存储空间容量,如果一味的增加SAN或者NAS磁盘阵列里的磁盘数量,那么SAN存储系统的控制机头,极易成为性能瓶颈;而如果采用多个SAN存储系统,或者多个NAS存储系统,来扩展存储容量,各个独立存储系统之间的存储共享,又会是一大难题。


最后,就像是计算资源经历了合久必分,分久必合的过程(大型机集中计算,到个人计算机分布式计算,再到集群服务器集中计算),存储资源也经历了合久必分,分久必合的过程(服务器内置存储设备DAS,到服务器外置存储设备SAN或者NAS,再到服务器内置存储设备DAS)。


所以,考虑到上述集中式存储的种种问题,基于服务器集群环境下(即数据中心环境下),整合所有服务器直连存储设备(DAS)的资源池化和虚拟化方案,也就诞生了,这就是分布式存储。


虽然单台服务器的DAS直连存储设备的容量有限(比如只有1TB容量),但是在服务器集群环境下(即数据中心环境下),可能存在成千上万台服务器,整合这成千上万台服务器的直连存储设备,将会获得非常庞大的存储空间(几千,几万TB容量),这成千上台服务器的直连存储设备,也就构成了一个庞大的存储资源池,并基于分布式存储控制,灵活实现各种存储策略。




5
分层的分布式存储架构


到这里,我们知道分布式存储虚拟化,才是云计算时代,我们想要的存储虚拟化方案,它有着传统存储虚拟化无可比拟的优点,并且分布式存储虚拟化,可以进一步实现分层的分布式存储架构。


分布式存储可以构建一体化分层的存储架构,如下所示:



一体化分层存储架构,将不同存储介质分层,同时横向拉通集群内所有服务器,相同层级的存储资源,比如拉通集群内所有服务器的内存资源,构建出一个超大内存资源池;这种一体化分层架构,可以实现数据I/O吞吐量和系统整体性能的大幅提升,其中各层存储讲解如下:


Layer 1 Storage(内存):

该层速度快&时延低,但是成本高,因此只能作Cache用;


Layer 2 Storage(SSD):

该层既可以作Cache用(因为SSD固态硬盘的速度也很快),也可以作最终存储用(因为现在的SSD固态硬盘容量也不小);同时,SSD固态硬盘不存在机械损坏故障风险,因此该层主要用于中高端数据库等业务;


Layer3 Storage(DAS)&Layer4 Storage(SAN&NAS):

这两层速度都要慢很多,但是存储容量充足,所以这两层不作Cache用,一般作为最终存储用;




6
分布式存储架构的优点


虽然在之前章节里,已有提到分布式存储虚拟化方案的优点,这里不妨就分布式存储架构的优点,作进一步梳理总结,看看分布式存储架构到底具备了哪些优点,成为了云计算时代的存储虚拟化方案。


分布式存储技术及对应产品,目前已经日趋成熟,比如在互联网搜索引擎中使用的分布式文件存储,在商业化公有云中使用的分布式块存储等;究其原因,主要是分布式存储架构拥有如下优点:


高性能:分布式存储架构,实现数据分散存取,全局负载均衡;


高可靠:分布式存储架构,数据副本灵活存放在不同服务器,不同硬盘上,保障业务的平稳运行;


高扩展:分布式存储架构,采用Scale Out,横向扩展,几乎没有任何扩展限制,整合100台服务器的直连存储资源,和整合10000台服务器的直连存储资源,并无本质区别;


易管理:分布式存储结构,通过云计算管理工具(比如OpenStack),提供简洁直观的Web UI操作界面,方便对于存储资源的管理,以及存储策略的灵活配置;




7
分布式存储的三种形态


到这里为止,我们对于分布式存储,应该已经很了解了,就像计算虚拟化有多种类型,分布式存储虚拟化也有多种类型,以提供不同的云存储(存储虚拟化)服务。


目前业界主要提供三种形态的分布式存储服务,包括

(1)分布式块存储,

(2)分布式文件存储,

(3)分布式对象存储;


所以这里有必要,先了解下,块存储,文件存储,和对象存储的区别,如下:


文件存储:该数据存储方式,采用层次化格式(文件夹)保存信息,通过路径信息(文件路径)来定位文件,文件属性(比如所有者,读写权限,修改时间等)存储在元数据中,并由文件系统来管理;该存储方式适合本地存储,或局域网存储;因为元数据空间有限,基于文件系统的存储方式,扩展性较差,不适用于大量文件的存储场景。


块存储:块存储将数据保存在大小相同的块(Block)中,可以将一个文件切割成多个块,这些块中没有任何文件相关联的元数据,必须由应用程序来追踪文件所分发的块,并在需要时组合这些块以提取文件内容;该存储方式,因为没有文件系统,所以提供了非常高的存储性能(接近于原生磁盘的物理性能),通常用于数据库或事物型数据挖掘。


对象存储:对象存储,将完整的数据或文件,及其元数据都作为单个实体进行保存,这个实体就被成为对象;和块存储相比,对象存储不会将文件,拆分为块;和文件存储相比,对象存储并不采用层次化格式进行组织,所有对象都放在相同层次,形成平面式结构;服务器或应用程序,可以基于URL(统一资源定位符),基于Web服务,通过HTTP协议,访问对象。


分布式存储架构,结合上述三种存储形态,也就产生了如下储存形式:

分布式块存储:主要用于企业应用存储资源池,公有云存储服务(比如Amazon EBS服务)等。


分布式文件存储:主要用于企业应用文件存储,公有云文件存储服务(比如Amazon EFS服务)等。


分布式对象存储:主要用于虚拟机的镜像存储,租户应用数据的存储(比如Amazon S3服务)等。




8
分布式存储技术详解


最后,我们就分布式存储技术,进行一个全面的深入分析,详细探讨到底是哪些技术协同合作,使得分布式存储成为可能,首先了解下分布式存储池的概念。


分布式存储池

分布式存储系统,把所有服务器内的本地磁盘,整合成了一个或多个庞大的存储资源池,基于该存储资源池,进行统一的创建/删除卷(Volume),创建/删除快照等操作,为上层软件提供卷设备功能;这个庞大的存储资源池,结构如下:



这样的存储资源池结构的好处,在于尽量保证不同的数据副本,存放于不同的服务器硬盘上,如果有服务器故障,导致有数据丢失,还可以基于其它服务器硬盘上的数据副本,进行数据恢复;同时这样的存储资源池,为上层应用提供卷设备(Volume),没有逻辑存储单元(LUN)的概念,使用简单。


分布式存储系统框架

如下是分布式存储系统的框架图,主要包括,

(1)存储接口层,通过SCSI驱动接口向上层应用,提供卷设备,

(2)数据服务层,提供各种高级存储功能,包括快照,链接克隆等功能,

(3)存储引擎层,提供各种基本存储功能,包括状态控制,分布式数据路由等功能,

(4)存储管理层,实现分布式存储系统的安装部署,自动配置,在线升级等功能;



分布式存储关键技术

现在逐一看下实现分布式存储的关键技术,如下:


性能提升技术

分布式存储支持使用SSD替代HDD作为高速存储设备,支持使用InfiniBand网络替代传统千兆以太网络,为性能要求高的场景提供了完美支持;此外,分布式操作系统可以保证上层应用的数据存取操作,可以均匀分布在不同服务器硬盘上,不会存在局部热点,实现全局负载均衡。


如下所示,为全面使用PCIe卡形式的SSD,替代HDD作为存储设备的分布式存储系统,如果使用的是PCIe 2.0 x8的接口,可以提供高达3GBps的读写带宽,高达600K的持续随机读IOPS,和高达220K的持续随机写IOPS。



简化管理技术

分布式存储系统,采用DHT(Distributed Hash Table)路由数据算法,实现存储数据的均衡性(即数据尽可能分散的存储在多个服务器硬盘中),和存储数据的单调性(即当有新服务器加入集群,虽然存储数据需要重新分配,但尽量保证原存储数据,不需要太大的调整)。


数据的均衡性,可以确保分布式存储系统的高可靠性,因为数据的多个副本是尽可能分散在多个服务器硬盘上,如果有服务器故障,可以借助其它服务器硬盘上的数据副本,恢复数据。


数据的单调性,可以确保分布式存储系统的快速负载均衡,因为当有新服务器加入集群,DHT算法会重新分配存储数据(同时保证数据迁移量很小),使得快速达到全局负载均衡的状态。


也正是因为数据的单调性,当有新服务器加入集群,使得数据迁移量很小,就可以达到快速负载均衡,这也使得我们可以平滑升级节点设备,如下:



分布式存储系统还提供了精简配置机制,相较于厚配置(即预先将用户需要的所有存储空间都分配给用户),精简配置可以在一开始只分配很少的存储空间给用户,后续用户存储数据越来越多时,再越来越多的为用户分配存储空间,如下:



厚配置的存储空间利用率较低,如上图所示,用户一开始可能没有那么多的数据要存储,但是一直占用所有的存储空间(一直占用2TB存储空间),空余的存储空间,就得不得利用;精简配置,可以一开始为用户分配300GB存储空间,其余存储空间可以给其他用户使用,后续用户的数据越来越多,再灵活增加用户的存储空间(300GB->600GB->900GB)。


安全可靠性增强技术

分布式存储系统,采用了多种措施,保证数据的安全可靠性,如下:

多数据副本

分布式存储系统,没有采用RAID磁盘阵列保护机制,而是采用多副本数据保护机制,即可以为一份数据,创建多个数据副本,不同的副本数据,存放于不同的服务器硬盘,如下:



根据上图所示,可以看到数据P1存放于服务器1的磁盘1,而其副本P1存放于服务器2的磁盘2;这样如果有服务器故障,引起数据丢失,可以根据其它服务器磁盘上的副本数据,进行数据恢复;集群管理:该技术确保集群内有服务器添加或移除,均不影响整个系统业务的平稳运行。


到这里,存储专题系列文章也就全部结束了,在该系列文章里,我们先是讲解了存储的基本知识,包括存储设备类型,存储接口类型,RAID技术,最后我们重点讲解了存储虚拟化技术方案,包括最为重要的分布式存储虚拟化方案;毫无疑问,现代的云计算中心,除了计算虚拟化外,存储虚拟化是最重要的,现代的云计算服务,也主要是计算和存储服务,比如华为云的ECS(弹性云计算服务)和EVS(弹性云存储服务)。



怎么样,今天的内容都学明白了吧,请大家持续关注,后续继续更新此专题哦~

*原创不易,记得点个「在看」,分享朋友圈再走哦~


文章转载自Cloud云说,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论