一文详解数据存储那些事儿

按照存储系统的架构来讲,存储系统可以简单的划分成分布式存储系统非分布式的存储系统(也有用集中式存储系统来称呼那些传统的不能横向扩展的外部存储系统)。

分布式存储 vs. 集中式存储

集中式存储系统

最早的企业级外部存储系统多数是双控制高可用架构,例如典型的SAN磁盘阵列和早期的企业级NAS。集中式存储系统除了具备数据高可靠性和高可用特性以外,还有数据通路的访问响应延迟相对较低的优点。但是缺点是随着用户容量和性能的需求增加,扩展能力有限。

分布式存储系统

与之对应的是分布式存储系统,除了依旧需要以各种设计保证数据的高可靠和高可用以外,优点就是可以透明的横向扩展,在扩展容量的同时可以近线性的提升存储系统的吞吐。

存储系统怎么选,还要看应用场景

看起来分布式存储系统很完美,但通常情况下,对外提供工业标准协议数据访问时(FC、iSCSI、NFS、CIFS、S3),分布式存储系统的数据访问响应延迟,要比传统的集中式存储系统高。

无论是SAN的FC、iSCSI,还是NAS的NFS、CIFS,数据访问请求需要从一个访问接入点进入存储系统。在分布式存储系统里,欲访问的数据不能够保证一定在访问接入点上,因此需要通过分布式存储系统的节点间互联转发数据请求,网络上的请求和数据转发会带来一定程度的延迟。所以目前在核心业务对数据访问延迟有苛刻要求的企业数据应用,集中式存储系统还保持着一定优势。

最近总有人问,软件定义存储(SDS)是什么?网上有多个版本的演绎和解释,到底谁的定义和概念为准呢?

其实大可不必追求这些概念的精确性,因为很多新名词的诞生本身就不一定有严格的学术定义很有可能是为了行业或者厂家的商业宣传目的。与软件定义存储对应的是软硬件一体的存储系统,软件定义存储在很多场景下会与分布式存储联系在一起,但是他们之间并没有必然的关联。

软件定义存储 vs. 软硬一体化存储系统

分布式存储不一定被厂商归类为软件定义存储(比如2018年之前的EMC ISILON和XtremeIO);软件定义存储也不一定是分布式的(比如FreeNAS和早期的Nexenta),只能说多数软件定义存储系统都是分布式架构的。

另外,从很久以前,企业级存储系统其实核心和灵魂就是软件,比如EMC的ISILON/VNX/VMAX这些软硬一体的企业级存储系统,采用的也都是X86架构的硬件,而真正的核心是内部的系统软件。

SDS到底意味着什么,又带来了什么?

我们认为软件定义带来的是一种新的产品形态产品交付模式。软件定义存储是有机会允许厂商以纯软件方式交付给客户,搭载客户或者第三方ODM厂商的硬件构成完整的存储系统,这是我们能看到的唯一不同。

听起来软件定义存储很性感,但是事情不是这么简单。传统的企业级存储系统产品一直以来被认为是FISH(Fully Integrated Software and Hardware),采用高度集成的软件和硬件以确保产品的高可靠、高可用和高性能。

软件定义存储,真的可以忽略硬件吗?

其实不然,虽然很多软件定义存储采用了各种技术(如副本、纠删码)不依赖特殊硬件而尽可能的保证数据可靠和高可用,但是并不意味着对硬件毫无要求。

软件定义存储为了保证硬件的兼容性需要定义清晰的CPU要求、内存大小、HBA型号甚至硬盘规范,这还远远不够。我们曾经遇到过批量存储服务器的BIOS默认设置变化和HBA固件版本导致的整体存储系统行为不符合预期,还曾经因为一批超过300块硬盘固件的问题,导致系统整体性能只有预期的1/3。

软件定义存储虽然提供了一种新的产品交付模式,但是如果控制不好硬件兼容性、质量和固件的版本,就很难达到企业级数据应用的标准,只能是SDS厂商和技术爱好者自娱自乐的“心头好”。 

详解块存储、文件存储和对象存储

块存储

块存储有很多名字(如SAN、ServerSAN、DAS),对客户端暴露出来的是“盘”或者“逻辑盘”,数据访问的语义比较简单,主要是对“盘”按照地址偏移访问数据,不能够被多个客户端同时共享访问,常用的访问协议包括FC、iSCSI、NBD、RBD等,优势应用场景是存储结构化数据(数据库)以及作为虚拟机或者容器的后端持久化存储。

文件存储

文件存储系统也有不少称呼(如NAS,并行文件系统),它对客户端暴露出来的是一个文件夹。文件存储系统提供了丰富的语义,允许多个客户端共享数据,可随时修改,随机访问数据,并且提供了“图”结构的名字空间组织方式(很多人认为文件系统是个树形结构,其实因为hardlink的存在,一个文件其实可以同属于不同的目录,因此是个图结构)。文件存储系统常用的访问协议包括NFS、CIFS和类POSIX的私有客户端协议,优势应用场景是数据流计算、高性能计算、机器学习深度学习、影视特效处理、视频编辑等。

对象存储

对象存储系统提供了一个平坦的名字空间,对客户端暴露出来的是“桶”。对象存储系统语义比较简单,数据可以被多客户端共享,但是不能被修改,也无法随机访问对象数据的内容,标准的访问协议有S3和Swift。对象存储的优势应用场景是那些不经常修改,但是被多次访问的数据应用场景例如互联网APP、归档备份、以及音视频分享。

云计算时代,对象存储的网红人设是否坚挺?

文件存储和对象存储因为都可以在多个客户端之间分享数据,所以有很多传言对象存储会完全取代文件存储,文件存储是old school,但事实上,这是极大的误解和误导

文件存储和对象存储的差别在于语义,对象存储不可能完全取代文件存储。从上面的描述中就可以看出来:

文件存储:文件存储可以随机访问,可以随时修改,可以利用目录和硬链接构建数据之间的“图”包含关系。

对象存储:对象存储却不善于修改,不能随机访问,平坦的名字空间要借助于其他的数据管理方式才能构建简单的数据集合和数据关系。

对象存储,还是文件存储该怎么选

用对象存储还是文件存储系统取决于数据应用对语义的需求。如果对象存储的语义就可以满足应用的需要,就不需要文件存储,但是反之,对象存储语义满足不了应用需要,就只能用文件存储系统。

文件存储系统无论是标准的NAS还是并行文件系统,都在客户端提供了缓存系统和保证一定程度的一致性,而对象存储系统基本上没有提供任何标准的客户端缓存系统,因此在对性能有严苛要求的数据共享和交换应用场景,对象存储不适用也无法取代文件存储

在讲到按照语义划分的3种存储类型,即文件存储对象存储块存储。经常有人会跟另一组概念混淆在一起,文件系统对象系统块设备。那么他们之间的关系是什么呢?

文件系统 vs. 文件存储

文件系统不一定是文件存储, 因为文件系统不一定对外提供多客户端文件共享服务。广义的文件系统是只要能够解决名字空间或者地址空间的存储子系统都叫文件系统。比如EMC VNX/Unity底层的文件系统CBFS(UFS64),VMWare的VMFS或者CEPH的RBD,都称之为文件系统,但是并没有对外提供文件共享服务,因此是广义的文件系统但不是文件存储系统。

对象系统 vs. 对象存储

对象系统是很多文件系统和块存储系统的底层抽象,但是并不一定对外提供对象数据共享,因此不一定是对象存储系统。比如Lustre的OST、CEPH的Rados、Cortx的Motr都是对象系统,但是并不能直接对外提供S3或者Swift协议的对象数据访问,因此不是对象存储系统。

相反,在对象系统之上可以构建出文件存储,比如在Lustre 文件系统就是基于底层对象OSD,CephFS是基于Rados对象系统的文件存储;除此之外,也可以利用对象系统构建块存储,例如Ceph的RBD就是基于Rados的块存储。

块设备 vs. 块存储

基础的块设备HDD/SSD是所有存储系统的基础, 但是块存储系统底层也可以是用对象系统或者文件系统来模拟的虚拟/逻辑块设备,正如之上讲过的Ceph RBD的底层是Rados对象系统,ZFS和ZVOL底层的DMU也是个对象系统,EMC VNX的LUN块设备是文件系统CBFS(UFS64)上的一个文件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值