精华内容
下载资源
问答
  • 第 1章 对象存储简介 11.1 传统网络存储的区别 11.1.1 数据的管理方式 21.1.2 访问数据的方式 21.1.3 对象存储的优势 31.2 单机版对象存储的架构 41.2.1 REST接口 41.2.2 对象PUT流程 51.2.3 ...

    第 1章 对象存储简介 1

    1.1 和传统网络存储的区别 1

    1.1.1 数据的管理方式 2

    1.1.2 访问数据的方式 2

    1.1.3 对象存储的优势 3

    1.2 单机版对象存储的架构 4

    1.2.1 REST接口 4

    1.2.2 对象PUT流程 5

    1.2.3 对象GET流程 5

    1.3 Go语言实现 6

    1.4 功能测试 10

    1.5 小结 12

    第 2章 可扩展的分布式系统 15

    2.1 什么是分布式系统 15

    2.2 接口和数据存储分离的架构 16

    2.2.1 REST接口 17

    2.2.2 RabbitMQ消息设计 18

    2.2.3 对象PUT流程 19

    2.2.4 对象GET流程 20

    2.3 Go语言实现 21

    2.3.1 数据服务 21

    2.3.2 接口服务 23

    2.3.3 rabbitmq包 34

    2.4 功能测试 38

    2.5 小结 41

    第3章 元数据服务 45

    3.1 什么是元数据 45

    3.1.1 系统定义的元数据 45

    3.1.2 用户自定义的元数据 45

    3.1.3 散列值和散列函数 46

    3.2 加入元数据服务的架构 47

    3.2.1 REST接口 48

    3.2.2 ES接口 51

    3.2.3 对象PUT流程 54

    3.2.4 对象GET流程 55

    3.3 Go语言实现 55

    3.3.1 接口服务 55

    3.3.2 es包 63

    3.4 功能测试 68

    3.5 小结 74

    第4章 数据校验和去重 77

    4.1 何为去重 77

    4.1.1 需要数据校验的原因 78

    4.1.2 实现数据校验的方法 79

    4.2 给数据服务加入缓存功能 79

    4.2.1 数据服务的REST

    接口 80

    4.2.2 对象PUT流程 80

    4.3 Go语言实现 82

    4.3.1 接口服务 82

    4.3.2 数据服务 87

    4.4 功能测试 98

    4.5 去重导致的性能问题 101

    4.6 小结 102

    第5章 数据冗余和即时修复 105

    5.1 数据冗余的概念 105

    5.1.1 数据丢失和数据

    不可用 105

    5.1.2 数据冗余 106

    5.1.3 对象存储系统的数据

    冗余策略 107

    5.2 数据冗余的实现 108

    5.2.1 REST接口 108

    5.2.2 对象PUT流程 108

    5.2.3 对象GET流程 109

    5.3 Go语言实现 111

    5.3.1 接口服务 111

    5.3.2 数据服务 126

    5.4 功能测试 131

    5.5 小结 135

    第6章 断点续传 139

    6.1 为什么对象存储需要支持

    断点续传 139

    6.1.1 断点下载流程 139

    6.1.2 断点上传流程 140

    6.1.3 接口服务的REST

    接口 142

    6.1.4 数据服务的REST

    接口 144

    6.2 Go语言实现 145

    6.2.1 接口服务 145

    6.2.2 数据服务 158

    6.3 功能测试 160

    6.4 小结 165

    第7章 数据压缩 169

    7.1 用gzip实现对象存储和下载时的数据压缩 170

    7.1.1 存储时的数据压缩 170

    7.1.2 下载时的数据压缩 171

    7.1.3 接口服务的REST

    接口 172

    7.2 Go语言实现 172

    7.2.1 接口服务 172

    7.2.2 数据服务 174

    7.3 功能测试 176

    7.4 小结 180

    第8章 数据维护 183

    8.1 对象存储系统的数据维护

    工作 183

    8.1.1 对象版本留存 183

    8.1.2 数据定期检查和

    修复 184

    8.1.3 数据服务的REST

    接口 185

    8.2 Go语言实现 185

    8.2.1 删除过期元数据 185

    8.2.2 删除没有元数据引用的

    对象数据 188

    8.2.3 对象数据的检查和

    修复 191

    8.3 功能测试 193

    8.4 小结 202

    展开全文
  • 块存储、文件存储、对象存储这三者和分布式文件存储系统本质区别存储和文件存储是我们比较熟悉两种主流存储类型,而对象存储(Object-based Storage)是一种新网络存储架构,基于对象存储技术设备就是...

    块存储、文件存储、对象存储这三者和分布式文件存储系统的本质区别

      块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(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 STorage):是直接连接于主机服务器的一种储存方式,每一台主机服务器有独立的储存设备,每台主机服务器的储存设备无法互通,需要跨主机存取资料时,必须经过相对复杂的设定,若主机服务器分属不同的操作系统,要存取彼此的资料,更是复杂,有些系统甚至不能存取。通常用在单一网络环境下且数据交换量不大,性能要求不高的环境下,可以说是一种应用较为早的技术实现。

            2)SAN(Storage Area Network):是一种用高速(光纤)网络联接专业主机服务器的一种储存方式,此系统会位于主机群的后端,它使用高速I/O 联结方式, 如 SCSI, ESCON 及 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 三种技术的比较

    三种存储类型比较-文件、块、对象存储 - 笨笨blog - 亮丽

    三种存储类型比较-文件、块、对象存储 - 笨笨blog - 亮丽

            针对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参数、数据分布和服务质量等,而传统的存储系统中用文件或块作为基本的存储单位,在块存储系统中还需要始终追踪系统中每个块的属性,对象通过与存储系统通信维护自己的属性。在存储设备中,所有对象都有一个对象标识,通过对象标识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等接口,支持对象存储。

    http://www.openstack.org/blog/2011/07/announcing-the-gluster-connector-for-openstack/

    ——详细介绍

     

    【块存储】

    典型设备:磁盘阵列,硬盘

    块存储主要是将裸磁盘空间整个映射给主机使用的,就是说例如磁盘阵列里面有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、对象存储的成本比起普通的文件存储还是较高,需要购买专门的对象存储软件以及大容量硬盘。如果对数据量要求不是海量,只是为了做文件共享的时候,直接用文件存储的形式好了,性价比高。

    展开全文
  • 超融合,软件定义存储,分布式存储区别?软件定义存储(SDS)是什么SDS 全称是Software Defined Storage ,字面意思直译就是软件定义存储。关于SDS 定义可以参考全球网络存储工业协会(StorageNetworking Industry ...

    超融合,软件定义存储,分布式存储区别?

    ccf40e0f5c1035f7021682e865ba4fb3.gif

    软件定义存储(SDS)是什么 

    4d837eb4212640f932b20abb0dae293d.gif

    SDS 的全称是Software Defined Storage ,字面意思直译就是软件定义存储。关于SDS 的定义可以参考全球网络存储工业协会(StorageNetworking Industry Association,SNIA),SINA在 2013 正式把软件定义存储(SDS) 列入研究对象。

    SINA 对软件定义存储(SDS)的定义是:一种具备服务管理接口的虚拟化存储。SDS 包括存储池化的功能,并可通过服务管理接口定义存储池的数据服务特征。另外SINA 还提出软件定义存储(SDS) 应该具备以下特性:

    • 自动化程度高 – 通过简化管理,降低存储基础架构的运维开销 

    • 标准接口 – 支持 API 管理、发布和运维存储设备和服务

    • 虚拟化数据路径 – 支持多种标准协议,允许应用通过块存储,文件存储或者对象存储接口写入数据

    • 扩展性 – 存储架构具备无缝扩展规模的能力,扩展过程不影响可用性以及不会导致性能下降

    • 透明度 – 存储应为用户提供管理和监控存储的可用资源与开销

    分布式存储是什么

    4d837eb4212640f932b20abb0dae293d.gif

    关于分布式存储实际上并没有一个明确的定义,甚至名称上也没有一个统一的说法,大多数情况下称作Distributed Data Store 或者Distributed Storage System。

    其中维基百科中给Distributed data store的定义是:

    1e86c31249f70149a7a050cb85ec1551.png

    分布式存储是一种计算机网络,它通常以数据复制的方式将信息存储在多个节点中。

    在百度百科中给出的定义是:

    1e86c31249f70149a7a050cb85ec1551.png

    分布式存储系统,是将数据分散存储在多台独立的设备上。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

    尽管各方对分布式存储的定义并不完全相同,但有一点是统一的,就是分布式存储将数据分散放置在多个节点中,节点通过网络互连提供存储服务。这一点与传统集中式存储将数据集中放置的方式有着明显的区分。

    Server SAN 是什么

    4d837eb4212640f932b20abb0dae293d.gif

    Server SAN 这个概念,最早是由WIKIBON (国外一个著名的存储咨询社区)提出,WIKIBON对 Server SAN的定义是:

    1e86c31249f70149a7a050cb85ec1551.png

    计算与池化存储资源的组合,多个存储介质直接挂载到多台独立的服务器上使用。这些直连的存储设备(DAS) 通过高速网络(InfiniBand或者低延时以太网)互连,并通过软件保证存储的一致性。

    ServerSAN 可使用混合的存储介质,包括机械硬盘和SSD 硬盘等。目前市场主流的认知还是将ServerSAN作为SAN的架构,只是存储不再使用专用硬件和控制器架构。

    超融合是什么

    4d837eb4212640f932b20abb0dae293d.gif

    参考维基百科中的超融合定义:

    1e86c31249f70149a7a050cb85ec1551.png

    超融合基础架构(hyperconvergedinfrastructure)是一个软件定义的IT 基础架构,它可虚拟化常见“硬件定义”系统的所有元素。HCI包含的最小集合是:虚拟化计算(hypervisor),虚拟存储(SDS)和虚拟网络。HCI通常运行在标准商用服务器之上。

    超融合基础架构(hyper-convergedinfrastructure)与融合基础架构(convergedinfrastructure) 最大的区别在于,在HCI 里面,无论是存储底层抽象还是存储网络都是在软件层面实现的(或者通过hypervisor 层面实现),而不是基于物理硬件实现的。由于所有软件定义的元素都围绕hypervisor 实现,因此在超融合基础架构上的所有实例可以联合共享所有受管理的资源。

    区别与联系

    4d837eb4212640f932b20abb0dae293d.gif

    软件定义存储(SDS)的着重点在于存储资源虚拟化和软件定义。

    1、从形态上,软件定义存储(SDS)区别于传统的“硬件定义”存储,它不依赖专属的硬件,可以让存储软件运行在通用服务器上,可避免硬件绑定以及有效降低硬件采购成本;

    拥有标准API接口和自动化工具,有效降低运维难度。存储资源虚拟化,支持多种存储协议,可整合企业存储资源,提升存储资源利用率。

    2、从定义上来说,但软件定义存储(SDS) 从部署形式上来看,并不一定是分布式或者是集中式的,也就是说SDS 不一定是分布式存储(虽然常见的软件定义存储(SDS) 更多的是分布式的),SDS存储内部有可能是单机运行的,不通过网络分散存放数据的,这种形式的软件定义存储(SDS)的扩展性就可能有比较大的局限。

    分布式存储,它的最大特点是多节点部署,数据通过网络分散放置。分布式存储的特点是扩展性强,通过多节点平衡负载,提高存储系统的可靠性与可用性。与软件定义存储(SDS)相反,分布式存储不一定是软件定义的,有可能是绑定硬件的,例如IBM XIV存储,它本质上是一个分布式存储,但实际是通过专用硬件进行交付的。那么就依然存在硬件绑定,拥有成本较高的问题。

    从Server SAN 的定义来看其存储部分定义俨然是分布式存储的定义,但Server SAN 强调计算与存储的资源组合,也就是说与软件定义存储(SDS)和分布式存储不一样的地方,后期的定义已经具备了超融合概念的雏形,只是这个概念并没有成为主流。

    超融合基础架构从定义中明确提出包含软件定义存储(SDS),具备硬件解耦的能力,可运行在通用服务器之上。超融合基础架构与Server SAN提倡的理念类似,计算与存储融合,通过全分布式的架构,有效提升系统可靠性与可用性,并具备易于扩展的特性。

    cc76b0ecf1bd9e0fae9584ceb1834673.pngSMTXOS 产品架构

    bc774e1ecaf4804362a6b337bd43fd7e.png华云产品架构

    884bfbe2cdc64a6cf7147c86a2940378.png

    XSKY分布式架构

    超融合基础架构的技术核心

    4d837eb4212640f932b20abb0dae293d.gif

    超融合基础架构可以说综合了软件定义存储(SDS),分布式存储,甚至是Server SAN的许多优良特性,并且不难看出这些概念中都离不开一个关键词——存储。很明显,超融合基础架构的技术核心是存储,存储承载用户数据,重要性不言而喻,另外超融合的各种高级功能(HA、在线迁移等等)都极度依赖存储能力,存储的扩展能力直接限制了超融合产品的扩展规模;存储的自身的可管理性也制约了平台的灵活性;考虑到超融合形态中,计算与存储是同一软件堆栈运行在服务器中的,它们之间是资源竞争的关系,因此在保障存储软件的稳定性和性能前提下,开销越少越好了。

    超融合基础架构对存储的要求

    4d837eb4212640f932b20abb0dae293d.gif

    • 软件定义 – 解除硬件绑定,可通过升级拓展更丰富的功能,自动化能力高

    • 全分布式架构 – 扩展性好,消除单点故障风险

    • 高可靠性 – 智能的故障恢复功能,丰富的数据保护手段

    • 高性能 – 支持多种存储介质,充分挖掘和利用新式硬件的性能

    • 高度融合 – 架构简单并易于管理 


    391ba571dea8836ebdcc7f40d50dd2e3.png

    展开全文
  • 有关这三种类型的差别,可以参考 对象存储、文件存储和存储的区别。 MioIO 是一个开源的分布式对象存储系统,非常适合于存储大容量非结构化的数据,例如图片,视频,日志文件,备份数据等。本文讲述如何快速搭建 ...

    数据存储包括三种类型,分别是块存储,文件存储和对象存储。有关这三种类型的差别,可以参考 对象存储、文件存储和块存储的区别

    MioIO 是一个开源的分布式对象存储系统,非常适合于存储大容量非结构化的数据,例如图片,视频,日志文件,备份数据等。本文讲述如何快速搭建 MioIO 服务端和客户端,以便于对 MioIO 有个概要了解。

    MinIO 服务端安装

    MioIO 是一个非常轻量级的对象存储系统,可以使用 Docker 快速搭建 MinIO 服务。

    docker pull minio/minio
    docker run -p 9000:9000 minio/minio server /data
    

    执行以上命令,就启动了 MinIO 服务。有关使用 Docker 启动 MinIO 的详细介绍,可以参考链接 https://docs.min.io/docs/minio-docker-quickstart-guide

    打开浏览器,输入地址 http://127.0.0.1:9000/,输入用户名 minioadmin 和密码 minioadmin,便进入 MinIO 的管理页面。

    在 MinIO 管理页面,可以进行文件的浏览、上传下载操作。

    MinIO 客户端安装

    MinIO Client(mc)提供 lscatcpdifffind 等UNIX命令,用来对存储在 MinIO 服务端的桶和文件进行操作,并支持对 Amazon S3 云存储文件进行操作。

    可以使用 Docker 来快速安装 mc:

    docker pull minio/mc
    docker run minio/mc ls play
    

    上述第一个命令拉取 mc 镜像,第二个命令启动 mc 容器,并列出 MinIO 官方演示环境 play 的内容。
    如果需要使用 mc 操作其他 S3 兼容的服务,可以采取以下方式启动容器:

    docker run -it --entrypoint=/bin/sh minio/mc
    

    启动容器后接下来可以使用 mc 的其他命令,例如:

    mc config host list
    

    输出:

    gcs  
      URL       : https://storage.googleapis.com
      AccessKey : YOUR-ACCESS-KEY-HERE
      SecretKey : YOUR-SECRET-KEY-HERE
      API       : S3v2
      Lookup    : dns
    
    local
      URL       : http://10.88.115.119:9000
      AccessKey : minioadmin
      SecretKey : minioadmin
      API       : S3v4
      Lookup    : auto
    
    play 
      URL       : https://play.min.io
      AccessKey : Q3AM3UQ867SPQQA43P2F
      SecretKey : zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG
      API       : S3v4
      Lookup    : auto
    
    s3   
      URL       : https://s3.amazonaws.com
      AccessKey : YOUR-ACCESS-KEY-HERE
      SecretKey : YOUR-SECRET-KEY-HERE
      API       : S3v4
      Lookup    : dns
    

    可以通过修改文件 ~/.mc/config.json 来修改 mc config host list 展示出来的配置。

    为了使用 mc 对上面我们搭建的 MinIO 服务进行测试,我们修改了 local 的配置:

    local
    URL : http://10.88.115.119:9000
    AccessKey : minioadmin
    SecretKey : minioadmin
    API : S3v4
    Lookup : auto

    其中,http://10.88.115.119:9000 为 MinIO 服务端地址,读者可以根据实际情况进行调整。

    执行

    mc ls local
    

    输出

    [2020-01-22 07:37:53 UTC] 0B leo/

    执行

    mc ls local/leo
    

    输出

    [2020-01-22 07:37:53 UTC] 696KiB 屏幕截图(1).png

    在 MinIO 服务中,我们创建了一个名为 leo 的桶,并在该桶下上传了一个名为 屏幕截图(1).png 的文件。

    至于其他 mc 命令,大家可以自行测试。

    参考资料

    • https://github.com/minio/minio
    • https://docs.min.io/
    • https://docs.min.io/cn/minio-client-complete-guide.html
    • https://www.alibabacloud.com/zh/knowledge/difference-between-object-storage-file-storage-block-storage
    • https://zhuanlan.zhihu.com/p/39572049
    展开全文
  • 1、内存缓存可以存储任意的对象 2、分布式缓存的对象需要支持序列化 3、分布式缓存远程请求可能失败,内存缓存不会
  • 分布式存储

    2019-05-07 19:36:22
    分布式存储的应用场景相对于其存储接口,现在流行分为三种: >对象存储: 也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL其他扩展,如七牛、又拍、Swift、S3 >块存储: 这种接口通常以QEMU Driver...
  • 对象存储的用户则是其它计算机软件。首先要说明一下的是,这三个概念都是分布式存储中的概念,由不同的网络存储协议实现。不过“网络”“存储”的结合本身会对解释这三个概念的本质差异带来不便,下面的解释中我会...
  • HadoopOpenStack对象存储的区别

    千次阅读 2012-08-06 16:32:31
    “HDFS (Hadoop分布式文件系统)OpenStack对象存储(OpenStack Object Storage)似乎都有着相似目的:实现冗余、快速、联网存储。什么样技术特性让这两种系统因而不一样?这两种存储系统最终趋于融合是否大有...
  • 分布式存储的应用场景相对于其存储接口,现在流行分为三种: 对象存储: 也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL其他扩展,如七牛、又拍、Swift、S3 块存储: 这种接口通常以QEMU Driver...
  • 参考链接 ...分布式存储的应用场景相对于其存储接口,现在流行分为三种: 对象存储: 也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL其他扩展,如七牛、又拍、...
  • 针对不同应用场景,选择的分布式存储方案也会不同,因此有了对象存储、块存储、文件系统存储。这三者主要区别在于它们存储接口: 1. 对象存储:  也就是通常意义键值存储,其接口就是简单GET,PUT,DEL...
  • 传统存储与分布式存储的区别:传统的NAS或SAN存储解决方案绑定至昂贵的专有硬件,软件定义型存储通常设计为使用现成的存储驱动器设备,花费要低于传统的存储设备,软件定义型存储是一个软件层,在物理存储设备...
  • 分布式存储系统Minio

    2020-04-08 13:34:45
    概述 Minio 是一个基于Go语言的对象存储服务。它实现了大部分亚马逊S3云存储...区别分布式存储系统,minio特色在于简单、轻量级,对开发者友好,认为存储应该是一个开发问题而不是一个运维问题。 存储架构 ...
  • 与众不同的对象存储

    2019-04-04 11:39:26
    针对这些存储的区别,我觉得可以从两个方面来进行简单的归类:1. 从数据结构分类:块存储、文件存储、对象存储;2. 从物理架构分类:集中式存储、分布式存储。 数据结构上的不同,是由于不同...
  • 分布式存储系统Minio简介

    千次阅读 2020-04-12 22:43:57
    概述 Minio 是一个基于Go语言的对象存储服务。它实现了大部分亚马逊S3云存储...区别分布式存储系统,minio特色在于简单、轻量级,对开发者友好,认为存储应该是一个开发问题而不是一个运维问题。 存储架构...
  • 一、概念及区别针对不同应用场景,选择的分布式存储方案也会不同,因此有了对象存储、块存储、文件系统存储。这三者主要区别在于它们存储接口:1. 对象存储: 也就是通常意义键值存储,其接口就是简单GET,...
  • 本文我将对一致性算法作介绍,同时谈谈自己对一致性hash一般意义上的hash算法的区别 hash是什么 hash即hash算法,又称为散列算法,百度百科的定义是 哈希算法将任意长度的二进制值映射为较短的固定长度的二进制...
  • 先来解释下缓存中三种写法:首字母大写Memcached,指是Memcached服务器,就是独立运行Memcached后台服务器,用于存储缓存数据“容器”。...Memcached 是一个高性能分布式的内存对象缓...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 257
精华内容 102
关键字:

对象存储和分布式存储的区别