块存储
块存储会将数据拆分成块,并单独存储各个块。每个数据块都有一个唯一标识符,所以存储系统能将较小的数据存放在最方便的位置。这意味着有些数据可以存储在 Linux 环境中,有些则可以存储在 Windows 单元中。
块存储通常会被配置为将数据与用户环境分离,并会将数据分布到可以更好地为其提供服务的多个环境中。然后,当用户请求数据时,底层存储软件会重新组装来自这些环境的数据块,并将它们呈现给用户。它通常会部署在存储区域网络 (SAN) 环境中,而且必须绑定到正常运行的服务器。
由于块存储不依赖于单条数据路径(和文件存储一样),因此可以实现快速检索。每个块都独立存在,且可进行分区,因此可以通过不同的 *** 作系统进行访问,这使得用户可以完全自由地配置数据。它是一种高效可靠的数据存储方式,且易于使用和管理。它适用于要执行大型事务的企业和部署了大型数据库的企业。这意味着,需要存储的数据越多,就越适合使用块存储。
块存储有一些缺点。块存储的成本高昂。它处理元数据的能力有限。
*** 作对象:磁盘
存储协议:SCSI、iSCSI、FC
接口命令:以SCSI为例,主要有Read/Write/Read Capacity
存储架构:DAS、SAN
文件存储
文件存储也称为文件级存储或基于文件的存储,数据会以单条信息的形式存储在文件夹中。当需要访问该数据时,计算机需要知道相应的查找路径。存储在文件中的数据会根据元数据来进行整理和检索,这些元数据会告诉计算机文件所在的确切位置。
请试想一下塞满文件柜的储藏室。每个文档都会按照某种类型的逻辑层次结构来排放 ——按文件柜、抽屉、文件夹,然后再是纸张。“分层存储”这个术语就是这么来的,而这就是文件存储。它是适用于直接和网络附加存储(NAS)系统的最古老且运用最为广泛的一种数据存储系统;当访问保存在个人计算机上的文件中的文档,就是在使用文件存储。文件存储具有丰富多样的功能,几乎可以存储任何内容。它非常适合用来存储一系列复杂文件,并且有助于用户快速导航。
问题是基于文件的存储系统必须通过添置更多系统来进行横向扩展,而不是通过增添更多容量来进行纵向扩展。
*** 作对象:文件和文件夹
存储协议:NFS、SAMBA(SMB)、POSIX
接口命令:以NFS为例,文件相关的接口命令包括:READ/WRITE/CREATE/REMOVE/RENAME/LOOKUP/ACCESS 等;文件夹相关的接口命令包括:MKDIR/RMDIR/READDIR 等
存储架构:NAS (【Linux】NAS存储_Jacky_Feng的博客-CSDN博客)
对象存储
对象存储,也称为基于对象的存储,是一种扁平结构,其中的文件被拆分成多个部分并散布在多个硬件间。在对象存储中,数据会被分解为称为“对象”的离散单元,并保存在单个存储库中,而不是作为文件夹中的文件或服务器上的块来保存。
对象存储卷会作为模块化单元来工作:每个卷都是一个自包含式存储库,均含有数据、允许在分布式系统上找到对象的唯一标识符以及描述数据的元数据。元数据包括年龄、隐私/安全信息和访问突发事件等详细信息。为了检索数据,存储 *** 作系统会使用元数据和标识符,这样可以更好地分配负载,并允许管理员应用策略来执行更强大的搜索。
对象存储需要一个简单的 HTTP 应用编程接口 (API),以供大多数客户端(各种语言)使用。对象存储经济高效:您只需为已用的内容付费。它可以轻松扩展,因而是公共云存储的理想之选。它是一个非常适用于静态数据的存储系统,其灵活性和扁平性意味着它可以通过扩展来存储极大量的数据。对象具有足够的信息供应用快速查找数据,并且擅长存储非结构化数据。
它的缺点是无法修改对象 ,即必须一次性完整地写入对象。对象存储也不能很好地与传统数据库搭配使用,因为编写对象是一个缓慢的过程,编写应用以使用对象存储 API 并不像使用文件存储那么简单。
*** 作对象:对象(Object)
存储协议:S3、Swift
接口命令:主要有PUT/GET/DELETE等
存储架构:去中心化框架
对象存储概念
对象存储的数据组成
存储桶(Bucket):存放对象的“容器”,且该“容器”无容量上限。对象以扁平化结构存放在存储桶中,无文件夹和目录的概念,用户可选择将对象存放到单个或多个存储桶中。存储桶的容量大小需要通过累加各个对象的大小得到。
每个存储桶可容纳任意数量的对象,但同一个主账号下存储桶数量最多仅能够创建200个。(???)
对于存储桶,应当以用途为粒度进行划分,确保每个存储桶的用途尽可能单一。例如,针对存放个人文件、发布静态网站、存储备份等用途都应该创建不同的存储桶。此外,不同项目的数据、不同的网站,或者完全私人的文件与工作性质、需要分享的文件,也应该划分不同的存储桶。
对象存储中也没有「文件夹」的概念。对象存储的管理平台为了模仿本地存储的使用习惯,并与本地存储系统互相兼容而模拟了目录结构,背后的原理也仅仅是根据 / 这个字符对 key 进行分隔。为了表示空目录,部分云平台也提供「文件夹」对象,实际上只是 key 以 / 结尾的空存储对象。
存储桶所在地域(Regin)
指对象存储的数据中心所在地域。对象存储允许用户在不同地域创建存储桶,可以选择在离业务最近的地域上创建存储桶,以满足低延迟、低成本以及合规性要求。
Bucket读写权限
Bucket读写权限包括:私有读写、公有读私有写和公有读写。
私有读写
只有该存储桶的创建者及有授权的账号才对该存储桶中的对象有读写权限,其他任何人对该存储桶中的对象都没有读写权限。存储桶访问权限默认为私有读写,推荐使用。
公有读私有写
任何人(包括匿名访问者)都对该存储桶中的对象有读权限,但只有存储桶创建者及有授权的账号才对该存储桶中的对象有写权限。
公有读写
任何人(包括匿名访问者)都对该存储桶中的对象有读权限和写权限,不推荐使用。
对象(Object):对象存储的基本单元,可理解为任何格式类型的数据,例如图片、文档和音视频文件等。
每个对象都由对象键(Key)、对象值(Data)、和对象元数据(Metadata)组成。
对象键(Key):对象键是对象在存储桶中的全局唯一标识(UID),可以理解为文件(名)路径。
key用于检索对象,文件对象的 key 与实际存储路径无关,服务器和用户不需要知道数据的物理地址,通过key就能找到对象。
对象值(Data):即存储对象内容数据,可以理解为文件内容(Object Content)。
对象元数据(Metadata):是一组键值对,可以通俗的理解为文件的属性,例如文件的修改时间、存储类型等。(传统的文件存储,元数据属于文件本身,和文件一起封装存储。而对象存储,元数据独立出来,并不在数据内部封装。)
对象访问地址
对象的访问地址由存储桶访问地址和对象键组成,其结构形式为<存储桶域名>/<对象键>。
例如:上传对象exampleobject.txt到广州(华南)的存储桶examplebucket-1250000000中,那么exampleobject.txt的访问地址是:examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/exampleobject.txt。其中examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com为存储桶域名,exampleobject.txt为对象键。
目录和文件夹
对象存储中本身是没有文件夹和目录的概念的,对象存储不会因为上传对象project/a.txt而创建一个project文件夹。为了满足用户使用习惯,对象存储在控制台、COS browser 等图形化工具中模拟了「文件夹」或「目录」的展示方式,具体实现是通过创建一个键值为project/,内容为空的对象,展示方式上模拟了传统文件夹。
对象 *** 作
用户通过控制台、工具、API、SDK等多种方式管理对象。
对象存储架构
对象存储设备(OSD)
OSD由存储介质、处理器、内存以及网络系统等组成,负责管理本地的对象,是对象存储系统的核心。和块设备相比,它们的差异在于提供的访问接口。OSD的主要功能是数据存储和安全访问。
数据存储:OSD管理对象数据,并将它们放置在标准的磁盘系统上,OSD不提供块接口访问方式,Client请求数据时用对象ID、偏移进行数据读写。
智能分布:OSD用其自身的CPU和内存优化数据分布,并支持数据的预取。由于OSD可以智能地支持对象的预取,从而可以优化磁盘的性能。
对象元数据管理:OSD管理存储的对象元数据与传统的inode元数据相似,通常包括对象的数据块和对象的长度。而在传统的NAS系统中,这些元数据是由文件服务器维护的,对象存储架构将系统中主要的元数据管理工作由OSD来完成,降低了Client的开销。
元数据服务器(MDS)
MDS控制Client与OSD对象的交互,为客户端提供元数据,主要是文件的逻辑视图(文件与目录的组织关系、每个文件所对应的OSD等)。主要功能如下:
对象存储访问:MDS构造和管理描述每个文件分布的逻辑视图,允许Client直接访问对象。MDS为Client提供访问该文件所含对象的能力,OSD在接收到每个请求时将先验证该能力,然后才可以访问。
文件和目录访问管理:MDS在存储系统上构建一个文件结构,包括限额控制、目录和文件的创建和删除、访问控制等。
Client Cache一致性:为了提高Client性能,在对象存储系统设计时通常支持Client方的Cache。由于引入Client方的Cache,带来了Cache一致性问题,MDS支持基于Client的文件Cache,当Cache的文件发生改变时,将通知Client刷新Cache,从而防止Cache不一致引发的问题。
客户端(Client)
对象存储系统提供给用户的也是标准的POSIX文件访问接口。接口具有和通用文件系统相同的访问方式,同时为了提高性能,也具有对数据的Cache功能和文件的条带功能。同时,文件系统必须维护不同客户端上Cache的一致性,保证文件系统的数据一致。
文件系统读访问流程:
① 客户端应用发出读请求
② 文件系统向元数据服务器发送请求,获取要读取的数据所在的OSD
③ 直接向每个OSD发送数据读取请求;
④ OSD得到请求以后,判断要读取的Object,并根据此Object要求的认证方式,对客户端进行认证,如果此客户端得到授权,则将Object的数据返回给客户端;
⑤ 文件系统收到OSD返回的数据以后,读 *** 作完成。
对象存储的优缺点
(1)优点:
容量大,高扩展性
对象存储的容量是EB级以上,对象存储的所有业务、存储节点采用分布式集群方式工作,各功能节点、集群都可以独立扩容。从理论上来说,某个对象存储系统或单个桶(bucket),并没有总数据容量和对象数量的限制,即服务商就可以不停地往架构里增加资源,这个存储空间就是无限的,也是支持d性伸缩的。
高安全性,可靠性
对象存储采用了分布式架构,对数据进行多设备冗余存储(至少三个以上节点),实现异地容灾和资源隔离。数据访问方面,所有的桶和对象都有访问控制策略,所有连接都支持SSL加密,访问用户进行身份权限鉴定。
高性能,支持海量用户的并发访问
(2)缺点:
不支持直接在存储上修改
对象存储系统保存的Object不支持修改(追加写Object需要调用特定的接口,生成的Object也和正常上传的Object类型上有差别)。用户哪怕是仅仅需要修改一个字节也需要重新上传整个Object。因此,它不适合存储需要频繁擦写的数据。
参考链接:
对象存储,为什么那么火? - 知乎 (zhihu.com)
对象存储 存储桶概述 - 开发者指南 - 文档中心 - 腾讯云 (tencent.com)
基本概念 (aliyun.com)
文件存储、块存储还是对象存储? (redhat.com)
linux
驻马店市民请关注领取补贴!
巨魔-抽手机公告
广告
对比块存储、文件存储、对象存储
1242阅读·0评论·3点赞
2019年2月27日
ShapeFile的文件格式设计
90阅读·0评论·0点赞
2009年3月20日
应用ceph对象存储(ceph-13.2.10)
72阅读·0评论·0点赞
2022年11月26日
三种存储类型比较-文件、块、对象存储
4.8W阅读·0评论·13点赞
2016年7月26日
常见图片存储格式文件简介
4534阅读·0评论·0点赞
2020年5月4日
s3cmd常用命令
781阅读·0评论·0点赞
2022年11月17日
驻马店发布,你有一台5G手机待领取
00:23
巨摩互动
广告
常见的存储格式
1083阅读·0评论·0点赞
2022年2月15日
文件、对象、块区别
1399阅读·0评论·0点赞
2020年7月13日
对象存储、文件存储、块存储的区别和联系
7330阅读·2评论·5点赞
2021年10月16日
数据分析中常见的存储方式
1537阅读·0评论·0点赞
2021年11月16日
三种存储类型:块存储、文件存储、对象存储
1.5W阅读·3评论·55点赞
2020年11月2日
如何设计二进制文件格式
1940阅读·0评论·1点赞
2020年3月6日
BMP文件存储格式
472阅读·0评论·2点赞
2021年8月2日
hive 的存储格式
1765阅读·0评论·1点赞
2022年6月18日
数据存储格式
446阅读·0评论·0点赞
2022年12月21日
总结:对象存储、块存储、文件存储的区别
6606阅读·0评论·3点赞
2022年4月9日
c语言中文件rw,什么是“块文件”?
386阅读·0评论·0点赞
2021年5月23日
【存储】块存储、文件存储和对象存储的区别?
350阅读·0评论·0点赞
2022年7月22日
块存储、文件存储与对象存储的区别与应用场景
1846阅读·1评论·0点赞
2022年6月5日
数据在内存中的存储方式
272阅读·0评论·0点赞
2022年8月21日
去首页
看看更多热门内容
解析:如何利用固态硬盘进行存储分层科技的发展遵循可预测的进化。在开始的时候,新功能以一种“排外”的竞争姿态,只是由一个或者很少的几个公司提供,紧接着通过激烈的高度差异化产品的行业竞争,最终形成包含在大多数产品中的“基本配置”。存储分层技术以及更加独特的自动存储分层技术,已经成为这样一种基本配置了。即便如此,当涉及到评价竞争对手的解决方案时,它们之间的显著差异还是为存储管理者提供了一个令人垂涎的选择。这个差异对于正在寻找最佳产品的企业来讲是相当重要的,其中分层数据存储就是一个重要的需求。
所有的分层产品有一些共同的特点。首先,当然也是最低限度,磁盘阵列会把多种类型的物理介质进行大量的组合排列,通常包括固态硬盘、高性能硬盘(包括光纤通道硬盘或者 SAS 硬盘)和大容量硬盘。其次,系统包含了数据从某个物理层移动到其它层的规则和方法的软件。尽管这些功能都是最基本的功能要求,但其在实施部署的方法上仍存在巨大的变化。
固态存储驱动器层
采用分层技术的重要驱动者就是固态存储或者叫固态硬盘(SSD)的出现。早期的分层技术围绕着第一层(光纤通道硬盘)、第二层(SAS硬盘)以及第三层(SATA硬盘),由于使用者无法准确区分热点数据从而导致了失败。因此,许多采用了分层技术的磁盘阵列为了保证足够的性能,需要把80%保留在第一层。剩余20%所带来的成本节省,根本无法平衡其所增加的复杂性和消耗的努力。SSD 的出现改变了游戏规则,它可以通过非常少的硬盘提供巨大的 IOPS 性能(尽管一块都非常昂贵)。在这一点,几乎所有的存储厂商都赞同采用少量百分比的 SSD 硬盘加上大容量硬盘(HDD),从而大大减少硬盘数量是最佳的体系架构。通过较低的获得成本,就常常可以得到较高的聚合吞吐量。
本文所探讨的目标,就是要描绘出 SSD 固态硬盘和高速闪存的区别,尽管其基本技术是相同的。SSD 可以被认作是一个特别的 Tier 0层,像其他存储介质一样供应给应用系统使用。从本质上来看,高速闪存的主要目的是增强整个磁盘阵列。大部分厂商都支持这两种类型,并且其中有很多也支持一种“混合池”,其 LUN 是由 SSD 硬盘和其它各种类型硬盘组合而成。
存储厂商是如何利用高速闪存进行分层的
EMC公司在引入固态硬盘时,推荐一种“闪存优先”的方法。在其VNX系列的磁盘阵列上,使用这种方法的产品叫做全自动存储分层缓存(FAST Cache)。它不同于 DRAM 的高速缓存,其真正的功能介于 DRAM 和硬盘之间。EMC 公司发现,采用总容量5%的FAST Cache,可以获得300%到600%的整体性能提升。此外,他们还发现,如果通过 SATA 硬盘替代光纤通道硬盘,其 5%的闪存,可以把整个硬盘的数量减少三分之二。结论就是更好的性能、更低的获得成本和更低的运维成本EMC 把这称为“三重角色存储系统”。
NetApp 公司为闪存做了三种定位。第一种是在主机层面,使用 Flash Accel产品。第二种是 Flash Cache,这是部署在存储控制器上面的。第三种方法是由闪存池组成,也称混合式聚合。最后这种是 tier-0 层的部署,可以专门针对特定的应用程序。NetApp 公司的方法与 EMC 公司的不同的是,他们推荐有底向上的方法在工作方式中需要额外时使用存储缓存。然而,他们不赞成用闪存式缓存替代闪存池。当涉及到调整闪存的时候,NetApp 寻找90%的缓存命中率作为最佳选择。如果命中率相当低,比如说50%,这可能预示着缓存容量不足。在部署了多层缓存的时候,最高层(最接近服务器的一层)将会首先负载必要的 I/O。基本逻辑是把数据存储在最低层、最便宜的设备上,并且允许系统提升数据到合适的存储层级以匹配性能的需要。
惠普(HP)公司的 Ibrix 系列可横向扩展的 NAS 系统,利用更传统的方法进行分层。在这些磁盘阵列中,SSD 功能是用作缓存,并且存储管理者可以部署由光纤通道硬盘、SAS 硬盘和 SATA 硬盘组成的物理分层。惠普公司的企业级磁盘阵列3PAR 系列在其自适应优化分层解决方案中使用“子卷”技术实现分层。子卷分层技术从本质上是借助 SSD 性能的混合卷技术。这种混合卷可以最多包含三个物理层。
日立数据系统公司和 EMC 公司分别在他们的虚拟存储平台(VSP)和 VMAX系统中都采用了物理分层的技术。两种磁盘阵列都具备在其系统架构中虚拟化第三方磁盘阵列的功能。(NetApp 公司在其 V 系列控制器后端也能够虚拟化第三方存储系统。)EMC 公司把这作为其联合分层存储(FTS)解决方案的“第四层”来对待。这种方式扩展了 EMC 公司的 FAST 功能,其中包括 SSD 和众多 HDD 选项。EMC VMAX 系列产品推荐使用 “80/20 I/O 倾斜规则”来划分缓存。这个规则假设在任意给定的时间里,只有20%的卷是“热”的。而在这20%的热卷里,也只有20%的数据是热的。这就意味着占整个数据的4%是作为进行磁盘阵列 SSD 规划的依据。有意思的是,存储厂商使用的各种不同估测方法都接近5%这个值。如果大家都同意,那么一定其合理性。
日立公司,也可提供闪存、SSD 硬盘和第三方存储的分层,其建议采用从上至下的方法使用闪存以提升性能。日立公司的动态分层(HDT)策略,首先假设新的数据是最热的数据。因此,开始的时候新数据移动到闪存中,当更热的数据取代它的时候,再将其迁移到较慢的层中。值得一提的是日立公司和 EMC 公司也把其分层数据存储产品拓展到了大型机环境。
尽管厂商硬件架构不同,但底层的驱动器和电路板往往是非常相似的。然而日立公司却不同,它设计了专用的 ASIC 芯片和处理器作为混合控制单元。 ASIC 芯片用于数据移动,而四核的 Intel 处理器用于跟踪源数据。其理念是将尽可能多的工作量交给硬件层来完成,从而获得最高的性能。
作为实用的分层解决方案,自动数据迁移软件有着显著的不同,并且它是进入“目前最先进技术”领域的“艺术”。例如,日立公司把他的硬件架构和一个基于对象的文件系统相结合,用于跟踪源数据,这被认为是最有效的过程。数据的移动是基于策略和使用特点。数据按照42MB 大小的页面进行迁移,这恰好适应了缓存的大小。日立公司使用“设置然后忘记”的理念以最大限度的减少人为的努力,而数据可以在其预期会被使用的情况下手工迁移到更高的层级。这方面的一个例子是在月末处理某些特定的数据集。
数据什么时候要被移动以及原因
存储管理员或许会假定热数据是无法预测的,并且可能会在任何时候发生,因此数据移动会很频繁。大部分数据的移动计划发生在几小时内,并且可能持续一天,这意味着数据在层之间的移动更多是基于趋势的,而不是对情况立刻做出反应。因为这个原因,惠普公司认为缓存是应对实时的、不可预知的突发 I/O 的最好技术。如果不可预测性很高,那么 IT 管理者应该补充加强缓存,而不是采用混合池。
什么时候移动数据是适当的调整系统的一个重要方面。EMC 公司的 VNX 系列产品缺省的数据移动周期是一天一次,不过用户可以通过设置策略实现数据更频繁的移动。惠普公司的 Ibrix 系统也是以天为周期进行数据移动的,但可以做到小时级的移动数据。数据的移动是基于对数据段变热的源数据的扫描。尽管可以并行的进行扫描查找,但厂商警告,太多的扫描作业会非生产性的消耗后端 IOPS 。3PAR 磁盘阵列具有“不中断”数据移动功能(这实际上是对主机和应用程序透明的自我调节功能),“热”数据可以做到每30分钟进行取样。即使这样,惠普公司仍然推荐、限制数据移动的频率到必要的程度。
另外的一种类型,EMC 公司的 VMAX 和 NetApp 公司的系统都设计成频繁的数据移动。VMAX 移动768KB 的数据段,而 NetApp 是4KB的数据块。因为需要移动的这么小的数据的 I/O 数量非常低,所以对于整个计划的破坏也是最小的。此外, EMC 允许数据被“订”到缓存里,手工移动或者在特定窗口按计划执行,例如在午夜到凌晨2点之间。
最适合分层的数据类型
什么情况适用于存储分层?几乎所有的厂商都认为是虚拟化桌面(VDI)和服务器虚拟化环境。在共享存储的虚拟化环境中,NetApp 推荐分配双倍的缓存。 EMC 公司的 VNX 系列的最佳使用情况是作为“倾斜的数据集”,作为在任意时刻热数据的子集。除了 VDI 之外,还可以用于在线交易处理(OLTP)的应用。基于 Web 的文件服务是另外一个好的用处,这是因为某些页或许比其其它的更更频繁被命中。
分层数据存储策略,通过利用 SSD 和闪存以获得最佳性价比,只会变得更加强大。尽管它现在已是大多数存储阵列的基本功能,分层目前已经是存储管理员考虑的最重要技术之一。因为固态技术与服务器内存从根本上讲是相同的,它遵循莫尔斯法则的性价比曲线;每 IOPS 的成本将会在来年显著降低。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)