对象存储开什么协议
A. 对象存储系统的与传统存储的比较
有大量的基于块和基于文件的存储系统可供选择,一个明显的问题是,我们为什么需要另外一种存储技术呢?块和文件都是成熟且经过验证的,所以也许看起来好像他们可以增强以满足日益增长的分布式云计算生态系统的需求。
基于块的存储系统,磁盘块通过底层存储协议访问,像SCSI命令,开销很小而且没有其它额外的抽象层。这是访问磁盘数据最快的方式,所有高级别的任务,像多用户访问、共享、锁定和安全通常由操作系统负责。换句话讲,基于块的存储关心所有底层的问题,但其它事情都要依靠高层的应用程序实现。所有的对象存储拥有基于块存储的节点,利用对象存储软件集合提供所有其它的功能。
基于块的存储系统是对象存储系统的补充,而基于文件的存储系统一般被认为是直接的竞争者。横向扩展的NAS系统的关键属性就是扩展性,对象存储也是这样,通过增加节点实现水平扩展。但由于NAS系统是基于分层文件结构的有限的命名空间,它们对于有着接近无限扩展能力的、具有扁平结构的纯对象存储来讲,所受的约束更多,对象存储仅受到对象ID的位数限制。尽管限制多多,但横向扩展的NAS系统仍然具备对象存储的诸多特性,而其欠缺的功能,像对于表征状态转移(REST)协议的支持,厂商们正在快速的完善中,这样他们就可以把横向扩展的NAS系统划归到对象存储的类别中了。
B. 块存储、文件存储、对象存储这三者的本质差别是什么
一、概念及区别
针对不同的应用场景,选择的分布式存储方案也会不同,因此有了对象存储、块存储、文件系统存储。这三者的主要区别在于它们的存储接口:
1. 对象存储:
也就是通常意义的键值存储,其接口就是简单的GET,PUT,DEL和其他扩展,
2. 块存储:
这种接口通常以QEMU Driver或者Kernel Mole的方式存在,这种接口需要实现linux的BlockDevice的接口或者QEMU提供的BlockDriver接口,如Sheepdog,AWS的EBS,青云的云硬盘和阿里云的盘古系统,还有Ceph的RBD(RBD是Ceph面向块存储的接口)
3. 文件存储:
通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口),但是有时候又会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。
二、IO特点
按照这三种接口和其应用场景,很容易了解这三种类型的IO特点,括号里代表了它在非分布式情况下的对应:1. 对象存储(键值数据库):
接口简单,一个对象我们可以看成一个文件,只能全写全读,通常以大文件为主,要求足够的IO带宽。
2. 块存储(硬盘):
它的IO特点与传统的硬盘是一致的,一个硬盘应该是能面向通用需求的,即能应付大文件读写,也能处理好小文件读写。但是硬盘的特点是容量大,热点明显。因此块存储主要可以应付热点问题。另外,块存储要求的延迟是最低的。
3. 文件存储(文件系统):
支持文件存储的接口的系统设计跟传统本地文件系统如Ext4这种的特点和难点是一致的,它比块存储具有更丰富的接口,需要考虑目录、文件属性等支持,实现一个支持并行化的文件存储应该是最困难的。但像HDFS、GFS这种自己定义标准的系统,可以通过根据实现来定义接口,会容易一点。
因此,这三种接口分别以非分布式情况下的键值数据库、硬盘和文件系统的IO特点来对应即可。至于冷热、快慢、大小文件而言更接近于业务。但是因为存储系统是通用化实现,通常来说,需要尽量满足各种需求,而接口定义已经一定意义上就砍去了一些需求,如对象存储会以冷存储更多,大文件为主。
C. 什么叫对象存储
联想对象存储系统(Lenovo Object Storage System)是联想云服务集团为客户提供的一种海量、高性价比、弹性、高可用的存储系统架构软件。
联想对象存储系统具有多种优势:1、数据冗余存储,故障自动切换,数据持久性达到99.99%;2、提供丰富的用户后台管理功能,管理简约,维护方便;3、统一存储平台,面向多应用;4、数据空间无上限,弹性扩容。
D. 什么是对象存储
什么是对象存储?
存储局域网(SAN)和网络附加存储(NAS)是我们比较熟悉的两种主流网络存储架构,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD。
对象存储的发展历史:
1999年成立的全球网络存储工业协会(SNIA)的对象存储设备(Object Storage Device)工作组发布了ANSI的X3T10标准。
对象存储的优点:
总体上来讲,对象存储同兼具SAN高速直接访问磁盘特点及NAS的分布式共享特点。
SAN(Storage Area Network)结构
采用SCSI 块I/O的命令集,通过在磁盘或FC(Fiber Channel)级的数据访问提供高性能的随机I/O和数据吞吐率,它具有高带宽、低延迟的优势,在高性能计算中占有一席之地,如SGI的CXFS文件系统就是基于SAN实现高性能文件存储的,但是由于SAN系统的价格较高,且可扩展性较差,已不能满足成千上万个CPU规模的系统。
E. 块储存,对象存储,文件存储的区别和联系
通常来讲,磁盘阵列都是基于Block块的存储,而所有的NAS产品都是文件级存储。
1. 块存储:DAS SAN
a) DAS(Direct Attach Storage): 是直接连接于主机服务器的一种存储方式,每台服务器有独立的存储设备,每台主机服务器的存储设备无法互通,需要跨主机存取资料室,必须经过相对复杂的设定,若主机分属不同的操作系统,则更复杂。
应用:单一网络环境下且数据交换量不大,性能要求不高的环境,技术实现较早。
b) SAN(Storage Area Network): 是一种高速(光纤)网络联接专业主机服务器的一种存储方式,此系统会位于主机群的后端,它使用高速I/O联接方式,如:SCSI,ESCON及Fibre-Channels.特点是,代价高、性能好。但是由于SAN系统的价格较高,且可扩展性较差,已不能满足成千上万个CPU规模的系统。
应用:对网速要求高、对数据可靠性和安全性要求高、对数据共享的性能要求高的应用环境中。
2. 文件存储
通常NAS产品都是文件级存储。
NAS(Network Attached Storage):是一套网络存储设备,通常直接连在网络上并提供资料存取服务,一套NAS储存设备就如同一个提供数据文件服务的系统,特点是性价比高。
它采用NFS或CIFS命令集访问数据,以文件为传输协议,可扩展性好、价格便宜、用户易管理。目前在集群计算中应用较多的NFS文件系统,但由于NAS的协议开销高、带宽低、延迟大,不利于在高性能集群中应用。
3. 对象存储:
总体上讲,对象存储同时兼具SAN高级直接访问磁盘特点及NAS的分布式共享特点。
核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(OSD),构建存储系统,每个对象存储设备具备一定的职能,能够自动管理其上的数据分布。
对象储存结构组成部分(对象、对象存储设备、元数据服务器、对象存储系统的客户端)
3.1 对象
一个对象实际就是文件的数据和一组属性信息的组合。
3.2 对象存储设备(OSD)
OSD具有一定的智能,它有自己的CPU、内存、网络和磁盘系统。
OSD提供三个主要功能:包括数据存储和安全访问
(1)数据存储 (2)智能分布 (3)每个对象元数据的管理
3.3 元数据服务器(Metadata Server , MDS)
MDS控制Client与OSD对象的交互,主要提供以下几个功能:
(1) 对象存储访问
允许Client直接访问对象,OSD接收到请求时先验证该能力,再访问。
(2) 文件和目录访问管理
MDS在存储系统上构建一个文件结构,限额控制、包括目录、文件的创建、访问控制等
(3) Client Cache 一致性
为提高性能,在对象存储系统设计时通常支持Client的Cache。因此带来了Cache一致性的问题,当Cache文件发生改变时,将通知Client刷新Cache,以防Cache不一致引发的问题。
对象存储:
一个文件包含了属性(术语叫matadata元数据,例如该文件的大小、修改时间、存储路径等)以及内容(简称数据)。
以往的文件系统,存储过程将文件按文件系统的最小块来打散,再写进硬盘,过程中没有区分元数据(metadata)和数据。而在每个块最后才会告知下一个块的地址,因此只能一个一个读,速度慢。
而对象存储则将元数据独立出来,控制节点叫元数据服务器(服务器+对象存储管理软件),里面主要存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息),而其他负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。当用户访问对象时,会先访问元数据服务器,元数据服务器只负责反馈对象存储在那些OSD。假设反馈文件A存储在B,C,D三台OSD,那么用户就会再次访问三台OSD服务器去读取数据。
这时三台OSD同时对外传输数据,因此传输的速度就加快了。OSD服务器数量越多,这种读写速度的提升就越大。
另一方面,对象存储软件有专门的文件系统,所以OSD对外又相当于文件服务器,那么就不存在文件共享方面的困难了,也解决了文件共享方面的问题。
因此对象存储的出现,很好的结合了块存储与文件存储的优点。
为什么还要使用块存储和文件存储:
1.有一类应用是需要存储直接裸盘映射的,比如数据库。因为数据库需要存储裸盘映射给自己后,再根据自己的数据库文件系统来对了裸盘进行格式化,因此不能采用其他已经被格式化为某种文件系统的存储。此类更适合块存储。
2.对象存储的成本比普通的文件存储还是较高,需要购买专门的对象存储软件以及大容量硬盘。如果对数据量要求不是海量,只是为了作文件共享的时候,直接用文件存储的形式就好了,性价比高。
F. 【Minio】基于AWS S3协议搭建个人云存储服务
在2007年,GlusterFS演变为大型分布式存储方案后,任何配备合适硬件的公司,单位都可以利用个做分布式的流媒体,数据分析。在2011年,Red Hat收购了GlusterFS.
Minio是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。Minio兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持java,python,Javacript, Golang语言。
Minio 提供对象存储服务,兼容了 AWS S3 存储协议,用于非结构化的数据存。非结构化对象,比如图像,音、视频,日志文件,备份镜像…等等管理不方便,不定长,大小变化大、类型多,云端的访问复杂,minio就是来解决这种场景的。非结构化的文件从数KB到5TB都能很好的支持。开源并且用 Go 语言开发,有web操作界面,我们可以用它来搭建兼容S3协议的存储云服务。
Minio可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。
官网: https://minio.io
那么,如何自己搭建一个私有的S3存储云服务呢?
官方的话是推荐用Docker来搞,我们先用普通的二进制文件来直接解决了!
######################################################################################
# mkdir /data/aws_s3
# wget https://dl.minio.io/server/minio/release/linux-amd64/minio
# mv minio /usr/local/bin/
# chmod 755 /usr/local/bin/minio
# minio server /data/aws_s3
#############################################################
Created minio configuration file successfully at /root/.minio
Endpoint: http://10.5.10.89:9000 http://127.0.0.1:9000 http://172.17.0.1:9000
AccessKey: U3XLU4IMXY3IDKHU268F
SecretKey: /
Region: us-east-1
SQS ARNs:
Browser Access:
http://10.5.10.89:9000 http://127.0.0.1:9000 http://172.17.0.1:9000
Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
################################################################
$ mc config host add myminio http://10.5.10.89:9000 U3XLU4IMXY3IDKHU268F /
Object API (Amazon S3 compatible):
Go: https://docs.minio.io/docs/golang-client-quickstart-guide
Java: https://docs.minio.io/docs/java-client-quickstart-guide
Python: https://docs.minio.io/docs/python-client-quickstart-guide
JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide
Drive Capacity: 8.3 GiB Free, 9.1 GiB Total
##############################################################
我们就成功启动了minio的s3服务,默认端口9000,可以通过网页访问:
http://10.5.10.89:9000
http://127.0.0.1:9000
http://172.17.0.1:9000
注意 :第一次打开时候需要填写AccessKey和SecretKey才能进入,我们上面启动服务的时候,已经看到屏幕有输出:
AccessKey: U3XLU4IMXY3IDKHU268F
SecretKey:
把这两个Key填入,就能顺利进入,进入后展开页面如下:
这就是我们的S3云存储的管理页面了,看着是不是和七牛什么的提供云存储的产品页面挺像的,大家都是基于S3协议开发的!
上传个文件试试:
点击右下角的红色小加号按钮,弹出的菜单选择”create bucket”则会创建一个桶,输入名字”test”
点击刚才那个红色小加号按钮,这次选择”Upload file”上传文件,给这个桶上传了一个叫login.txt的文本文档
此时页面如下:
至此我们可以看到文件已经上传,要访问这个文件,可以点击文件右侧的三个点的按钮,选择分享就可以得到一个外链,在浏览器中访问这个外链就可以直接访问文件。
那么文件到底被存到哪里去了呢,我们启动命令中其实指定了工作路径/data/aws_s3/,所以到服务器这个目录下看看:
# ls /data/aws_s3/
test
# ls /data/aws_s3/test/
login.txt
桶名称test是一个目录,其下就有上传的login.txt文件。
如果想指定ip和端口,可以这样写:
# minio server /data/aws_s3 --address=0.0.0.0:9000
如果想让服务在后台运行:
# nohup minio server /data/aws_s3 --address=0.0.0.0:443 &
[1] 19882
// nohup: 忽略输入并把输出追加到启动命令的当前目录下的 "nohup.out"文件
minio可以用来搭建分布式存储系统 GlusterFS,这样就成了真正的云存储了,有时间再研究下把它从现在的单机测试,变成一朵存储云!
minio官网: https://minio.io
minio官方文档: https://docs.minio.io/docs/minio-docker-quickstart-guide
minio github主页: https://github.com/minio/minio
G. 对象存储、文件存储和块存储的区别是什么
对象存储、文件存储和块存储的区别如下:
1、速度不同
块存储:低延迟(10ms),热点突出;
文件存储:不同技术各有不同;
对象存储:100ms-1s,冷数据;
2、可分步性不同
块存储:异地不现实;
文件存储:可分布式,但有瓶颈;
对象存储:分步并发能力高;
3、文件大小不同
块存储:大小都可以,热点突出;
文件存储:适合大文件;
对象存储:适合各种大小;
4、接口不同
块存储:Driver,kernel mole ;
文件存储:POSIX;
对象存储:Restful API ;
5、典型技术不同
块存储:SAN;
文件存储: HDFS,GFS;
对象存储:Swift,Amazon S3;
6、适合场景不同
块存储:银行;
文件存储:数据中心;
对象存储:网络媒体文件存储。
(7)对象存储开什么协议扩展阅读:
对象存储、文件存储和块存储的联系:
通常来讲,磁盘阵列都是基于Block块的存储,而所有的NAS产品都是文件级存储。
1. 块存储:DAS SAN
a) DAS(Direct Attach Storage): 是直接连接于主机服务器的一种存储方式,每台服务器有独立的存储设备,每台主机服务器的存储设备无法互通,需要跨主机存取资料室,必须经过相对复杂的设定,若主机分属不同的操作系统,则更复杂。
应用:单一网络环境下且数据交换量不大,性能要求不高的环境,技术实现较早。
b) SAN(Storage Area Network): 是一种高速(光纤)网络联接专业主机服务器的一种存储方式,此系统会位于主机群的后端,它使用高速I/O联接方式,如:SCSI,ESCON及Fibre-Channels.特点是,代价高、性能好。但是由于SAN系统的价格较高,且可扩展性较差,已不能满足成千上万个CPU规模的系统。
应用:对网速要求高、对数据可靠性和安全性要求高、对数据共享的性能要求高的应用环境中。
2. 文件存储
通常NAS产品都是文件级存储。
NAS(Network Attached Storage):是一套网络存储设备,通常直接连在网络上并提供资料存取服务,一套NAS储存设备就如同一个提供数据文件服务的系统,特点是性价比高。
它采用NFS或CIFS命令集访问数据,以文件为传输协议,可扩展性好、价格便宜、用户易管理。目前在集群计算中应用较多的NFS文件系统,但由于NAS的协议开销高、带宽低、延迟大,不利于在高性能集群中应用。
3. 对象存储:
总体上讲,对象存储同时兼具SAN高级直接访问磁盘特点及NAS的分布式共享特点。
核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(OSD),构建存储系统,每个对象存储设备具备一定的职能,能够自动管理其上的数据分布。
对象储存结构组成部分(对象、对象存储设备、元数据服务器、对象存储系统的客户端)
H. 什么是对象存储
在2004年, ANSI 推出了基于对象的存储设备(OSD)的1.0版本规范。它定义了基于对象的存储设备的通讯协议。OSD规范描述了一个 SCSI 命令集合,由他提供一个高水平的OSD接口。这个接口允许客户端, 比如文件系统和数据库存放和索引数据。 SNIA’S 技术工作组当前正在开发OSD 规范的2.0版本,这个版本年内完成。
基于对象的存储
在2004年, ANSI 推出了基于对象的存储设备(OSD)的1.0版本规范。它定义了基于对象的存储设备的通讯协议。OSD规范描述了一个 SCSI 命令集合,由他提供一个高水平的OSD接口。这个接口允许客户端, 比如文件系统和数据库存放和索引数据。 SNIA’S 技术工作组当前正在开发OSD 规范的2.0版本,这个版本年内完成。
一个OSD设备存放对象,他控制着从对象到物理介质的映射图。设备同时也跟踪作为属性的元数据,例如建立时间标记,从而允许在客户端非常容易地共享数据。
可以说,OSD最大的卖点在于它结合了SAN的可扩展性和NAS的数据共享。早期的NAS架构的扩展性能并不好,因为所有的元数据的处理都集中在NAS服务器上。在有限的NAS头下扩张更多的存储受到限制,而且这个时候,NAS上的元数据处理变成了瓶颈。如果想扩展,就需要增加更多的NAS服务器,但是此时的管理成为头疼的事情,因为数据是分散的, 这就是我们常说到的“NAS 孤岛”
OSD的能力在于它将客户端和OSD设备直接联系起来,并不需要中间环节管理元数据。Panasas 公司,全球第一家提供商用OSD产品的公司,同时提供面向对象的存储和并行文件系统。Panasas 公司的 DirectFLOW 的设计,客户端从带外管理的控制刀片得到目标的分布和安全属性。所有的数据流都直接从OSD存储刀片到客户端。尽管商用的OSD产品还只是凤毛麟角,但是OSD技术还是在日新月异。 西捷和IBM已经展示了OSDc产品。 HP已经和开放源代码厂家 Lustre 文件系统合作,使用OSD作为他的StorageWork 可扩展文件系统的重要部分。