块存储、⽂件存储、对象存储这三者和分布式⽂件存储系
统的本质区别
块存储和⽂件存储是我们⽐较熟悉的两种主流的存储类型,⽽对象存储(Object-based Storage)是⼀种新的⽹络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。
⾸先,我们介绍这两种传统的存储类型。通常来讲,所有磁盘阵列都是基于Block块的模式,⽽所有的NAS产品都是⽂件级存储。
⾸先我们先来了解⼀下,什么叫做块级?什么叫⽂件级?
1.块级概念:
块级是指以扇区为基础,⼀个或我连续的扇区组成⼀个块,也叫物理块。它是在⽂件系统与块设备(例如:磁盘驱动器)之间。
2.⽂件级概念:
⽂件级是指⽂件系统,单个⽂件可能由于⼀个或多个逻辑块组成,且逻辑块之间是不连续分布。逻辑块⼤于或等于物理块整数倍,
3.物理块与⽂件系统之间的关系图:
映射关系:扇区→物理块→逻辑块→⽂件系统
⽂件级备份:
⽂件级备份是指在指定某些⽂件进⾏备份时,⾸先会查每个⽂件逻辑块,其次物理块,由于逻辑块是分散在物理块上,⽽物理块也是分散在不同扇区上。需要⼀层⼀层往下查,最后才完成整个⽂件复制。⽂件级备份时⽐较费时间,效率不⾼,实时性不强,备份时间长,且增量备份时,单⽂件某⼀⼩部份修改,不会只备份修改部份,⽽整个⽂件都备份。
块级备份:
块级备份是指物理块复制,效率⾼,实时性强,备份时间短,且增量备份时,只备份修改过的物理块。
⽬前⽂件级备份⼯具:
Symantec NBU/BE 备份软件、Commvault、CA、Networker
⽬前块级备份⼯具:
飞康CDP、Recoverpoint、杭州信核CDP、Novell CDP
备份时间点保留周期:
传统备份软件(⽂件级备份),可以保留备份时间点多,恢复颗粒度⼤
CDP备份(块级备份),可以保留备份时间点少,恢复颗粒度⼩
【块存储】
典型设备:磁盘阵列,硬盘,虚拟硬盘
【⽂件存储】
典型设备:FTP、NFS服务器,SamBa
【对象存储】
典型设备:内置⼤容量硬盘的分布式服务器
分布式存储的应⽤场景相对于其存储接⼝,现在流⾏分为三种:
对象存储: 也就是通常意义的键值存储,其接⼝就是简单的GET、PUT、DEL和其他扩展,如七⽜、⼜拍、Swift、S3
块存储:
这种接⼝通常以QEMU Driver或者Kernel Module的⽅式存在,这种接⼝需要实现Linux的Block Device的接⼝或者QEMU提供的Block Driver接⼝,如
Sheepdog,AWS的EBS,青云的云硬盘和阿⾥云的盘古系统,还有Ceph的RBD(RBD是Ceph⾯向块存储的接⼝)
⽂件存储:
通常意义是⽀持POSIX接⼝,它跟传统的⽂件系统如Ext4是⼀个类型的,但区别在于分布式存储提供了并⾏化的能⼒,如Ceph的CephFS(CephFS是Ceph⾯向⽂件存储的接⼝),但是有时候⼜会把GFS,HDFS这种⾮POSIX接⼝的类⽂件存储接⼝归⼊此类。
1、块存储
以下列出的两种存储⽅式都是块存储类型:
1) DAS(Direct Attach orage):是直接连接于主机的⼀种储存⽅式,每⼀台主机服务器有独⽴的储存设备,每台主机服务器的储存设备⽆法互通,需要跨主机存取资料时,必须经过相对复杂的设定,若主机服务器分属不同的操作系统,要存取彼此的资料,更是复杂,有些系统甚⾄不能存取。通常⽤在单⼀⽹络环境下且数据交换量不⼤,性能要求不⾼的环境下,可以说是⼀种应⽤较为早的技术实现。
2)SAN(Storage Area Network):是⼀种⽤⾼速()⽹络联接专业主机服务器的⼀种储存⽅式,此系统会位于主机的后端,它使⽤⾼速I/O 联结⽅式, 如 SCSI, ESC 及 Fibre- Channels。⼀般⽽⾔,SAN应⽤在对⽹络速度要求⾼、对数据的可靠性和安全性要求⾼、对数据共享的性能要求⾼的应⽤环境中,特点是代价⾼,性能好。例如电信、银⾏的⼤数据量关键应⽤。它采⽤SCSI 块I/O的命令集,通过在磁盘或FC(Fiber Channel)级的数据访问提供⾼性能的随机I/O和数据吞吐率,它具有⾼带宽、低延迟的优势,在⾼性能计算中占有⼀席之地,但是由于SAN系统的价格较⾼,且可扩展性较差,已不能满⾜成千上万个CPU规模的系统。
2、⽂件存储
通常,NAS产品都是⽂件级存储。  NAS(Network Attached Storage):是⼀套⽹络储存设备,通常是直接连在⽹络上并提供资料存取服务,⼀套 NAS 储存设备就如同⼀个提供数据⽂件服务的系统,特点
是性价⽐⾼。例如教育、政府、企业等数据存储应⽤。
它采⽤NFS或CIFS命令集访问数据,以⽂件为传输协议,通过TCP/IP实现⽹络化存储,可扩展性好、价格便宜、⽤户易管理,如⽬前在集计算中应⽤较多的NFS⽂件系统,但由于NAS的协议开销⾼、带宽低、延迟⼤,不利于在⾼性能集中应⽤。
下⾯,我们对DAS、NAS、SAN三种技术进⾏⽐较和分析:
表格 1 三种技术的⽐较
针对Linux集对存储系统⾼性能和数据共享的需求,国际上已开始研究全新的存储架构和新型⽂件系统,希望能有效结合SAN和NAS系统的优点,⽀持直接访问磁盘以提⾼性能,通过共享的⽂件和元数据以简化管理,⽬前对象存储系统已成为Linux集系统⾼性能存储系统的研究热点,如Panasas公司的Object Base Storage Cluster System系统和Cluster File Systems公司的Lustre等。下⾯将详细介绍对象存储系统。
3、对象存储
总体上来讲,对象存储同兼具SAN⾼速直接访问磁盘特点及NAS的分布式共享特点。
核⼼是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(Object-based Storage Device,OSD)构建存储系统,每个对象存储设备具有⼀定的智能,能够⾃动管理其上的数据分布。
对象存储结构组成部分(对象、对象存储设备、元数据服务器、对象存储系统的客户端):
3.1、对象
对象是系统中数据存储的基本单位,⼀个对象实际上就是⽂件的数据和⼀组属性信息(Meta Data)的组合,这些属性信息可以定义基于⽂件的RAID参数、数据分布和服务质量等,⽽传统的存储系统中⽤⽂server系统和普通系统的区别
件或块作为基本的存储单位,在块存储系统中还需要始终追踪系统中每个块的属性,对象通过与存储系统通信维护⾃⼰的属性。在存储设备中,所有对象都有⼀个对象标识,通过对象标识OSD命令访问该对象。通常有多种类型的对象,存储设备上的根对象标识存储设备和该设备的各种属性,组对象是存储设备上共享资源管理策略的对象集合等。
3.2、对象存储设备
对象存储设备具有⼀定的智能,它有⾃⼰的CPU、内存、⽹络和磁盘系统,OSD同块设备的不同不在于存储介质,⽽在于两者提供的访问接⼝。OSD的主要功能包括数据存储和安全访问。⽬前国际上通常采⽤⼑⽚式结构实现对象存储设备。OSD提供三个主要功能:
(1) 数据存储。OSD管理对象数据,并将它们放置在标准的磁盘系统上,OSD不提供块接⼝访问⽅式,Client请求数据时⽤对象ID、偏移进⾏数据读写。
(2) 智能分布。OSD⽤其⾃⾝的CPU和内存优化数据分布,并⽀持数据的预取。由于OSD可以智能地⽀持对象的预取,从⽽可以优化磁盘的性能。
(3) 每个对象元数据的管理。OSD管理存储在其上对象的元数据,该元数据与传统的inode元数据相似,通常包括对象的数据块和对象的长度。⽽在传统的NAS系统中,这些元数据是由⽂件服务器维护的,对象存储架构将系统中主要的元数据管理⼯作由OSD来完成,降低了Client的开销。
3.3、元数据服务器(Metadata Server,MDS)
MDS控制Client与OSD对象的交互,主要提供以下⼏个功能:
(1) 对象存储访问。
MDS构造、管理描述每个⽂件分布的视图,允许Client直接访问对象。MDS为Client提供访问该⽂件所含对象的能⼒,OSD在接收到每个请求时将先验证该能⼒,然后才可以访问。
(2) ⽂件和⽬录访问管理。
MDS在存储系统上构建⼀个⽂件结构,包括限额控制、⽬录和⽂件的创建和删除、访问控制等。
(3) Client Cache⼀致性。
为了提⾼Client性能,在对象存储系统设计时通常⽀持Client⽅的Cache。由于引⼊Client⽅的Cache,带来了Cache⼀致性问
题,MDS⽀持基于Client的⽂件Cache,当Cache的⽂件发⽣改变时,将通知Client刷新Cache,从⽽防⽌Cache不⼀致引发的问题。
3.4、对象存储系统的客户端Client
为了有效⽀持Client⽀持访问OSD上的对象,需要在计算节点实现对象存储系统的Client,通常提供POSIX⽂件系统接⼝,允许应⽤程序像执⾏标准的⽂件系统操作⼀样。
4、GlusterFS 和对象存储
GlusterFS是⽬前做得最好的分布式存储系统系统之⼀,⽽且已经开始商业化运⾏。但是,⽬前GlusterFS3.2.5版本还不⽀持对象存储。如果要实现海量存储,那么GlusterFS需要⽤对象存储。值得⾼兴的是,GlusterFS最近宣布要⽀持对象存储。它使⽤openstack的对象存储系统swift的上层PUT、GET等接⼝,⽀持对象存储。
——详细介绍
【块存储】
典型设备:磁盘阵列,硬盘
块存储主要是将裸磁盘空间整个映射给主机使⽤的,就是说例如磁盘阵列⾥⾯有5块硬盘(为⽅便说明,假设每个硬盘1G),然后可以通过划逻辑盘、做Raid、或者LVM(逻辑卷)等种种⽅式逻辑划分出
N个逻辑的硬盘。(假设划分完的逻辑盘也是5个,每个也是1G,但是这5个1G的逻辑盘已经于原来的5个物理硬盘意义完全不同了。例如第⼀个逻辑硬盘A⾥⾯,可能第⼀个200M是来⾃物理硬盘1,第⼆个200M是来⾃物理硬盘2,所以逻辑硬盘A是由多个物理硬盘逻辑虚构出来的硬盘。)
接着块存储会采⽤映射的⽅式将这⼏个逻辑盘映射给主机,主机上⾯的操作系统会识别到有5块硬盘,但是操作系统是区分不出到底是逻辑还是物理的,它⼀概就认为只是5块裸的物理硬盘⽽已,跟直接拿⼀块物理硬盘挂载到操作系统没有区别的,⾄少操作系统感知上没有区别。
此种⽅式下,操作系统还需要对挂载的裸硬盘进⾏分区、格式化后,才能使⽤,与平常主机内置硬盘的⽅式完全⽆异。
优点:
1、这种⽅式的好处当然是因为通过了Raid与LVM等⼿段,对数据提供了保护。
2、另外也可以将多块廉价的硬盘组合起来,成为⼀个⼤容量的逻辑盘对外提供服务,提⾼了容量。
3、写⼊数据的时候,由于是多块磁盘组合出来的逻辑盘,所以⼏块磁盘可以并⾏写⼊的,提升了读写效率。
4、很多时候块存储采⽤SAN架构组⽹,传输速率以及封装协议的原因,使得传输速度与读写速率得到提升。
缺点:
1、采⽤SAN架构组⽹时,需要额外为主机购买光纤通道卡,还要买光纤交换机,造价成本⾼。
2、主机之间的数据⽆法共享,在服务器不做集的情况下,块存储裸盘映射给主机,再格式化使⽤后,对于主机来说相当于本地盘,那么主机A的本地盘根本不能给主机B去使⽤,⽆法共享数据。
3、不利于不同操作系统主机间的数据共享:另外⼀个原因是因为操作系统使⽤不同的⽂件系统,格式化完之后,不同⽂件系统间的数据是共享不了的。例如⼀台装了WIN7/XP,⽂件系统是FAT32/NTFS,⽽Linux是EXT4,EXT4是⽆法识别NTFS的⽂件系统的。就像⼀只NTFS格式的U盘,插进Linux的笔记本,根本⽆法识别出来。所以不利于⽂件共享。
【⽂件存储】
典型设备:FTP、NFS服务器
为了克服上述⽂件⽆法共享的问题,所以有了⽂件存储。
⽂件存储也有软硬⼀体化的设备,但是其实普通拿⼀台服务器/笔记本,只要装上合适的操作系统与软件,就可以架设FTP与NFS服务了,架上该类服务之后的服务器,就是⽂件存储的⼀种了。
主机A可以直接对⽂件存储进⾏⽂件的上传下载,与块存储不同,主机A是不需要再对⽂件存储进⾏格式化的,因为⽂件管理功能已经由⽂件存储⾃⼰搞定了。
优点:
1、造价交低:随便⼀台机器就可以了,另外普通以太⽹就可以,根本不需要专⽤的SAN⽹络,所以造价低。
2、⽅便⽂件共享:例如主机A(WIN7,NTFS⽂件系统),主机B(Linux,EXT4⽂件系统),想互拷⼀部电影,本来不⾏。加了个主机C(NFS服务器),然后可以先A拷到C,再C拷到B就OK了。(例⼦⽐较肤浅,请见谅……)
缺点:
读写速率低,传输速率慢:以太⽹,上传下载速度较慢,另外所有读写都要1台服务器⾥⾯的硬盘来承担,相⽐起磁盘阵列动不动就⼏⼗上百块硬盘同时读写,速率慢了许多。
【对象存储】
典型设备:内置⼤容量硬盘的分布式服务器
对象存储最常⽤的⽅案,就是多台服务器内置⼤容量硬盘,再装上对象存储软件,然后再额外搞⼏台服务作为管理节点,安装上对象存储管理软件。管理节点可以管理其他服务器对外提供读写访问功能。
简单来说块存储读写快,不利于共享,⽂件存储读写之所以出现了对象存储这种东西,是为了克服块存储与⽂件存储各⾃的缺点,发扬它俩各⾃的优点。简单来说块存储读写快,不利于共享,⽂件存储读写慢,利于共享。能否弄⼀个读写快,利于共享的出来呢。于是就有了对象存储。
⾸先,⼀个⽂件包含了了属性(术语叫metadata,元数据,例如该⽂件的⼤⼩、修改时间、存储路径等)以及内容(以下简称数据)。
以往像FAT32这种⽂件系统,是直接将⼀份⽂件的数据与metadata⼀起存储的,存储过程先将⽂件按照⽂件系统的最⼩块⼤⼩来打散(如4M的⽂件,假设⽂件系统要求⼀个块4K,那么就将⽂件打散成为1000个⼩块),再写进硬盘⾥⾯,过程中没有区分数据/metadata的。⽽每个块最后会告知你下⼀个要读取的块的地址,然后⼀直这样顺序地按图索骥,最后完成整份⽂件的所有块的读取。
这种情况下读写速率很慢,因为就算你有100个机械⼿臂在读写,但是由于你只有读取到第⼀个块,才能知道下⼀个块在哪⾥,其实相当于只能有1个机械⼿臂在实际⼯作。
⽽对象存储则将元数据独⽴了出来,控制节点叫元数据服务器(服务器+对象存储管理软件),⾥⾯主要负责存储对象的属性(主要是对象的数据被打散存放到了那⼏台分布式服务器中的信息),⽽其他负责存储数据的分布式服务器叫做OSD,主要负责存储⽂件的数据部分。当⽤户访问对象,会先访问元数据服务器,元数据服务器只负责反馈对象存储在哪些OSD,假设反馈⽂件A存储在B、C、D三台OSD,那么⽤户就会再次直接访问3台OSD服务器去读取数据。
这时候由于是3台OSD同时对外传输数据,所以传输的速度就加快了。当OSD服务器数量越多,这种读写速度的提升就越⼤,通过此种⽅式,实现了读写快的⽬的。
另⼀⽅⾯,对象存储软件是有专门的⽂件系统的,所以OSD对外⼜相当于⽂件服务器,那么就不存在⽂件共享⽅⾯的困难了,也解决了⽂件共享⽅⾯的问题。
所以对象存储的出现,很好地结合了块存储与⽂件存储的优点。
最后为什么对象存储兼具块存储与⽂件存储的好处,还要使⽤块存储或⽂件存储呢?
1、有⼀类应⽤是需要存储直接裸盘映射的,例如数据库。因为数据库需要存储裸盘映射给⾃⼰后,再根据⾃⼰的数据库⽂件系统来对裸盘进⾏格式化的,所以是不能够采⽤其他已经被格式化为某种⽂件系统的存储的。此类应⽤更适合使⽤块存储。
2、对象存储的成本⽐起普通的⽂件存储还是较⾼,需要购买专门的对象存储软件以及⼤容量硬盘。如果对数据量要求不是海量,只是为了做⽂件共享的时候,直接⽤⽂件存储的形式好了,性价⽐⾼。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。