分布式存储_分布式存储系统 - CSDN
分布式存储 订阅
分布式存储是一种数据存储技术,通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。 展开全文
分布式存储是一种数据存储技术,通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。
信息
途    径
网络
外文名
Distributed storage
含    义
一种数据存储技术
中文名
分布式存储
分布式存储分布式存储系统
分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。 [1] 
收起全文
精华内容
参与话题
  • 关于分布式存储,这是你应该知道的(图文详解) 前言 分布式存储存在的风险,其实就是因为“共享”、“大数据量”、“高性能”和X86服务器+廉价的磁盘为载体之间的矛盾所产生的,不是有些读者说的“数据架构”的...

    转自:http://stor.51cto.com/art/201711/556946.htm

    关于分布式存储,这是你应该知道的(图文详解)

    前言

    分布式存储存在的风险,其实就是因为“共享”、“大数据量”、“高性能”和X86服务器+廉价的磁盘为载体之间的矛盾所产生的,不是有些读者说的“数据架构”的问题。其实任何存储都存在这个问题,只是分布式存储更严重。

    本文其实是从主机的网络、磁盘的吞吐角度分析存在的风险,所以和用那个厂家的存储无关。

    还有人说你是危言耸听,如果按照你说的,这么多人用了分布式存储有这样的地雷岂不是要炸飞?软件定义的东西其实有很多BUG,重要的是能发现问题,事先做好弥补或方案。

    还有人说,分布式存储用到现在也不超过2年,发生你说的问题还早。但是我们已经发现问题了,不能搁置不管。钓鱼岛问题搁置了,现在还不是造成麻烦了吗?

    抛砖引玉

    存储最重要的指标是什么?

    很多人包括存储专家都会认为是存储的性能指标,比如IOPS和吞吐量。但是我认为存储最重要的是数据的安全性。

    一个跑的飞快的存储,突然数据丢失了,后果会怎么样?数据的丢失,对于任何系统来说,都是灭顶之灾。

    所以,不管什么样的存储,数据的安全可靠都是第一位的。

    原来传统的存储使用了专用硬件,从可靠性上有比较高的保证,所以大家首先会关注性能指标。但是用X86为基础的SRVSAN的可靠性就不容乐观。

    为什么说传统存储这个问题不是太突出呢?

    除了专用设备外,还有应用场景和数据量不同等原因。在传统行业如电信、银行原来的系统建设是烟囱模式。不但网络是独立一套,存储也是。

    往往是数据库服务和日志记录,用2台服务器和8个端口的小光交相连,小光交下只挂一个存储。数据量也没有这样大,存储的容量也在5T以下。这样存储的数据迁移是很容易和快速的,方法也很多。

    由于是专用存储,所以完全可以采用“非在线”的手段,数据量也不大,可以在夜深人静的时候停机完成。

    进入云计算时代,存储是共享的,数据是应用可靠,提供者不可控,数据量海量增加……传统的方法失灵了。(可见顾炯的云世界的“资源池内存储特点”的文章)

    我们在2014年下半年,开始搭建以X86为载体的分布式块存储,经过严格的测试,在同年底投入商用,是业界首个商用的软件定义的分布式存储,当时各种媒体都争相报道。

    到现在为止已经商用了近2年,存储运行稳定,表现优良。并从原来2P裸容量扩容到4.5P。

    但是近段时间我却越来越担心,因为SRVSAN与生俱来的数据安全隐患,一直被人忽视了,而且主流厂家也没有意识到这个问题。如果这个隐患在若干年以后爆发,会发生重大性系统故障。

    其实我在写这篇文章前2个月,我已经将这个担忧和想法告诉了现有分布式块存储的产品线总经理,得到他的重视,已经在弥补了。很多软件定义的东西,就怕想不到,突然发生了,想到了就会有相应的解决方案。

    存储这个东西,大部分读者并不是太了解,从比较基础知识开始写,并引出问题和大家一起讨论解决的办法。盘算了一下大致分为七个部分,由于篇幅限制,在本篇将先介绍前三部分:

    • 一、存储类型
    • 二、文件系统
    • 三、存储介质
    • 四、Raid和副本
    • 五、SRVSAN的架构
    • 六、SRVSAN的安全隐患
    • 七、解决的方法

    一、存储类型

    一般情况下,我们将存储分成了4种类型,基于本机的DAS和网络的NAS存储、SAN存储、对象存储。对象存储是SAN存储和NAS存储结合后的产物,汲取了SAN存储和NAS存储的优点。

    图1

    我们来了解一下应用是怎么样获取它想要的存在存储里的某个文件信息,并用大家熟悉的Windows来举例,如图1。

    1、应用会发出一个指令“读取本目录下的readme.txt 文件的前1K数据”。

    2、通过内存通信到目录层,将相对目录转换为实际目录,“读取C:\ test\readme.txt文件前1K数据”

    3、通过文件系统,比如FAT32,通过查询文件分配表和目录项,获取文件存储的LBA地址位置、权限等信息。

    文件系统先查询缓存中有没有数据,如果有直接返回数据;没有,文件系统通过内存通信传递到下一环节命令“读取起始位置LBA1000,长度1024的信息”。

    4、卷(LUN)管理层将LBA地址翻译成为存储的物理地址,并封装协议,如SCSI协议,传递给下一环节。

    5、磁盘控制器根据命令从磁盘中获取相应的信息。

    如果磁盘扇区大小是4K,实际一次I/O读取的数据是4K,磁头读取的4K数据到达服务器上的内容后,有文件系统截取前1K的数据传递给应用,如果下次应用再发起同样的请求,文件系统就可以从服务器的内存中直接读取。

    不管是DAS、NAS还是SAN,数据访问的流程都是差不多的。DAS将计算、存储能力一把抓,封装在一个服务器里。大家日常用的电脑,就是一个DAS系统,如图1。

    图2

    如果将计算和存储分离了,存储成为一个独立的设备,并且存储有自己的文件系统,可以自己管理数据,就是NAS,如图2。

    计算和存储间一般采用以太网络连接,走的是CIFS或NFS协议。服务器们可以共享一个文件系统,也就是说,不管服务器讲的是上海话还是杭州话,通过网络到达NAS的文件系统,都被翻译成为普通话。

    所以NAS存储可以被不同的主机共享。服务器只要提需求,不需要进行大量的计算,将很多工作交给了存储完成,省下的CPU资源可以干更多服务器想干的事情,即计算密集型适合使用NAS。

    图3

    计算和存储分离了,存储成为一个独立的设备,存储只是接受命令不再做复杂的计算,只干读取或者写入文件2件事情,叫SAN,如图3。

    因为不带文件系统,所以也叫“裸存储”,有些应用就需要裸设备,如数据库。存储只接受简单明了的命令,其他复杂的事情,有服务器端干了。再配合FC网络,这种存储数据读取/写入的速度很高。

    但是每个服务器都有自己的文件系统进行管理,对于存储来说是不挑食的只要来数据我就存,不需要知道来的是什么,不管是英语还是法语,都忠实记录下来的。

    但是只有懂英语的才能看懂英语的数据,懂法语的看懂法语的数据。所以,一般服务器和SAN存储区域是一夫一妻制的,SAN的共享性不好。当然,有些装了集群文件系统的主机是可以共享同一个存储区域的。

    从上面分析,我们知道,决定存储的快慢是由网络和命令的复杂程度决定的。

    内存通信速度>总线通信>网络通信

    网络通信中还有FC网络和以太网络。FC网络目前可以实现8Gb/s,但以太网络通过光纤介质已经普及10Gb/s,40Gb/s的网卡也在使用了。也就是说传统以太网络已经不是存储的瓶颈了。除了FCSAN,IPSAN也是SAN存储的重要成员。

    对存储的操作,除了熟悉的读/写以外,其实还有创建、打开、获取属性、设置属性、查找等等。

    对于有大脑的SAN存储来说,除了读/写以外的命令,都可以在本地内存中完成,速度极快。

    而NAS存储缺乏大脑,每次向存储传递命令,都需要IP封装并通过以太网络传递到NAS服务器上,这个速度就远远低于内存通信了。

    • DAS特点是速度最快,但只能自己用;
    • NAS的特点速度慢点但共享性好;
    • SAN的特点是速度快,但共享性差。

    总体上来讲,对象存储同兼具SAN高速直接访问磁盘特点及NAS的分布式共享特点。

    NAS存储的基本单位是文件,SAN存储的基本单位是数据块,而对象存储的基本单位是对象,对象可以认为是文件的数据+一组属性信息的组合,这些属性信息可以定义基于文件的RAID参数、数据分布和服务质量等。

    采取的是“控制信息”和“数据存储”分离的模式,客户端用对象ID+偏移量作为读写的依据,客户端先从“控制信息”获取数据存储的真实地址,再直接从“数据存储”中访问。

    对象存储大量使用在互联网上,大家使用的网盘就是典型的对象存储。对象存储有很好的扩展性,可以线性扩容。并可以通过接口封装,还可以提供NAS存储服务和SAN存储服务。

    VMware的vSAN本质就是一个对象存储。分布式对象存储就是SRVSAN的一种,也存在安全隐患。因为这个隐患是X86服务器带来的。

    二、文件系统

    计算机的文件系统是管理文件的“账房先生”。

    • 首先他要管理仓库,要知道各种货物都放在哪里;
    • 然后要控制货物的进出,并要确保货物的安全。

    如果没有这个“账房先生”,让每个“伙计”自由的出入仓库,就会导致仓库杂乱无章、货物遗失。

    就像那年轻纺城机房刚启用的时候,大家的货物都堆在机房里,没有人统一管理,设备需要上架的时候,到一大堆货物中自行寻找,安装后的垃圾也没有人打扫,最后连堆积的地方都找不到,有时自己的货物找不到了,找到别人的就使用了……。

    大家都怨声载道,后来建立了一个仓库,请来了仓库管理员,用一本本子记录了货物的归宿和存储的位置,建立货物的出入库制度,问题都解决了,这就是文件系统要做的事情。

    文件系统管理存取文件的接口、文件的存储组织和分配、文件属性的管理(比如文件的归属、权限、创建事件等)。

    每个操作系统都有自己的文件系统。比如windows就有常用的FAT、FAT32、NTFS等,Linux用ext1-4的等。

    存储文件的仓库有很多中形式,现在主要用的是(机械)磁盘、SSD、光盘、磁带等等。

    拿到这些介质后,首先需要的是“格式化”,格式化就是建立文件存储组织架构和“账本”的过程。比如将U盘用FAT32格式化,我们可以看到是这样架构和账本(如图4):

    图4

    主引导区:记录了这个存储设备的总体信息和基本信息。比如扇区的大小,每簇的大小、磁头数、磁盘扇区总数、FAT表份数、分区引导代码等等信息。

    分区表:,即此存储的账本,如果分区表丢失了,就意味着数据的丢失,所以一般就保留2份,即FAT1和FAT2。分区表主要记录每簇使用情况,当这位置的簇是空的,就代表还没有使用,有特殊标记的代表是坏簇,位置上有数据的,是指示文件块的下一个位置。

    目录区:目录和记录文件所在的位置信息。

    数据区:记录文件具体信息的区域。

    通过以下的例子来帮助理解什么是FAT文件系统。

    假设每簇8个扇区组成一个簇,大小是512*8=4K。根目录下的readme.txt文件大小是10K,如图5:

    图5

    • 1、在目录区找到根目录下文件readme.txt在FAT表中的位置是0004
    • 2、在0004位置对应簇的8个扇区读取相应文件块readme(1)保存在内存,并获取下一个数据块的位置0005。
    • 3、在0005位置对应簇的8个扇区读取相应文件块readme(2)保存在内存,并获取下一个数据块的位置0008。
    • 4、在0005位置对应簇的4个扇区读取相应文件块readme(3)保存在内存,并获得结束标志。
    • 5、将readme(1)、readme(2)、readme(3)组合成为readme文件。

    在这个例子中,我们看到在FAT文件系统,是通过查询FAT表和目录项来确定文件的存储位置,文件分布是以簇为单位的数据块,通过“链条”的方式来指示文件数据保存的文字。

    当要读取文件时,必须从文件头开始读取。这样的方式,读取的效率不高。

    不同的Linux文件系统大同小异,一般都采取ext文件系统,如图6.

    图6

    启动块内是服务器开机启动使用的,即使这个分区不是启动分区,也保留。

    超级块存储了文件系统的相关信息,包括文件系统的类型,inode的数目,数据块的数目

    Inodes块是存储文件的inode信息,每个文件对应一个inode。包含文件的元信息,具体来说有以下内容:

    文件的字节数

    文件拥有者的User ID

    文件的Group ID

    文件的读、写、执行权限

    文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

    链接数,即有多少文件名指向这个inode

    文件数据block的位置

    当查看某个目录或文件时,会先从inode table中查出文件属性及数据存放点,再从数据块中读取数据。

    数据块:存放目录和文件数据。

    通过读取\var\readme.txt文件流程,来理解ext文件系统,如图7。

    图7

    • 1、根目录A所对应的inode节点是2,inode1对应的数据块是d1。
    • 2、在检索d1内容发现,目录var对应的inode=28,对应的数据块是d5。
    • 3、检索d5内容发现readme.txt对应的是inode=70。
    • 4、Inode70指向数据区d2、d3、d6块。读取这些数据块,在内存中组合d2、d3、d6数据块。

    硬盘格式化的时候,操作系统自动将硬盘分成两个区域。

    • 一个是数据区,存放文件数据;
    • 另一个是inode区,存放inode所包含的信息。

    当inode资源消耗完了,尽管数据区域还有空余空间,都不能再写入新文件。

    总结:Windows的文件系统往往是“串行”的,而linux的文件系统是“并行”的。

    再来看分布式的文件系统。

    如果提供持久化层的存储空间不是一台设备,而是多台,每台之间通过网络连接,数据是打散保存在多台存储设备上。也就是说元数据记录的不仅仅记录在哪块数据块的编号,还要记录是哪个数据节点的。

    这样,元数据需要保存在每个数据节点上,而且必须实时同步。做到这一点其实很困难。如果把元数据服务器独立出来,做成“主从”架构,就不需要在每个数据节点维护元数据表,简化了数据维护的难度,提高了效率。

    Hadoop的文件系统HDFS就是一个典型的分布式文件系统。

    图8

    • 1、Client将FileA按64M分块。分成两块,block1和Block2。
    • 2、Client向nameNode发送写数据请求,如图紫色虚线1。
    • 3、NameNode节点,记录block信息。并返回可用的DataNode给客户端,如图红色虚线2。

    Block1: host11,host22,host31

    Block2: host11,host21,host32

    • 4、client向DataNode发送block1;发送过程是以流式写入。

    流式写入过程:

    1)将64M的block1按64k的package划分;

    2)然后将第一个package发送给host11;

    3)host11接收完后,将第一个package发送给host22,同时client想host11发送第二个package;

    4)host22接收完第一个package后,发送给host31,同时接收host11发来的第二个package。

    5)以此类推,如图黑色虚线3所示,直到将block1发送完毕。

    6)host11,host22,host31向NameNode和 Client发送通知,说“消息发送完了”。

    7)client收到发来的消息后,向namenode发送消息,说我写完了。这样就真完成了。

    8)发送完block1后,再向host11,host21,host32发送block2,如图蓝色虚线4所示。

    ……….

    HDFS是分布式存储的雏形,分布式存储将在以后详细介绍。

    三、存储介质

    仓库有很多种存储的介质,现在最常用的是磁盘和SSD盘,还有光盘、磁带等等。磁盘一直以性价比的优势占据了霸主的地位。

    圆形的磁性盘片装在一个方的密封盒子里,运行起来吱吱的响,这就是我们常见的磁盘。磁片是真正存放数据的介质,每个磁片正面和背面上都“悬浮”着磁头。

    磁盘上分割为很多个同心圆,每个同心圆叫做磁道,每个磁道又被分割成为一个个小扇区,每个扇区可以存储512B的数据。当磁头在磁片上高速转动和不停换道,来读取或者写入数据。

    其实磁片负责高速转动,而磁头只负责在磁片上横向移动。决定磁盘性能的主要是磁片的转速、磁头的换道、磁盘、每片磁片的容量和接口速度决定的。转速越高、换道时间越短、单片容量越高,磁盘性能就越好。

    图9

    图10

    图11

    衡量磁盘性能主要参考 IOPS 和吞吐量两个参数。

    IOPS就是一秒钟内磁盘进行了多少次的读写。

    吞吐量就是读出了多少数据。

    其实这些指标应该有前提,即是大包(块)还是小包(块),是读还是写,是随机的还是连续的。一般我们看到厂家给的磁盘IOPS性能一般是指小包、顺序读下的测试指标。这个指标一般就是最大值。

    目前在X86服务器上我们常使用的 SATA、SAS磁盘性能:

    图12

    实际生产中估算,SATA 7200转的磁盘,提供的IOPS为60次左右,吞吐量在70MB/s。

    我们2014年首次使用的裸容量2P的SRVSAN存储的数据持久化层采用57台X86服务器,内置12块SATA7200 3TB硬盘。共684块磁盘,大约只提供41040次IOPS和47.88GB/s。

    这些指标显然是不能满足存储需要的,需要想办法“加速”。

    机械磁盘其实也做了很多优化,比如扇区地址的编号不是连续的。

    因为磁片转的够快(7200转/分钟即1秒钟转120转,转一圈是8.3毫秒,也就是在读写同一个磁道最大时延是8.3秒),防止磁头的读写取错过了,所以扇区的地址并不是连续的,而是跳跃编号的,比如2:1的交叉因子(1、10、2、11、3、12…..)。

    同时磁盘也有缓存,具有队列,并不是来一个I/O就读写一个,而是积累到一定I/O,根据磁头的位置和算法完成的。I/O并不是一定是“先到先处理”,而是遵守效率。

    加速最好的办法就是使用SSD盘。磁盘的控制部分是由机械部分+控制电路来构成,机械部分的速度限制,使磁盘的性能不可能有大的突破。而SSD采用了全电子控制可以获得很好的性能。

    SSD是以闪存作为存储介质再配合适当的控制芯片组成的存储设备。目前用来生产固态硬盘的NAND Flash有三种:

    • 单层式存储(SLC,存储1bit数据)
    • 二层式存储(MLC,存储4bit数据)
    • 三层式存储(TLC,存储8bit数据)

    SLC成本最高、寿命最长、但访问速度最快,TLC成本最低、寿命最短但访问速度最慢。为了降低成本,用于服务器的企业级SSD都用了MLC,TLC可以用来做U盘。

    图13

    SSD普及起来还有一点的障碍,比如成本较高、写入次数限制、损坏时的不可挽救性及当随着写入次数增加或接近写满时候速度会下降等缺点。

    对应磁盘的最小IO单位扇区,page是SSD的最小单位。

    比如每个page存储512B的数据和218b的纠错码,128个page组成一个块(64KB),2048个块,组成一个区域,一个闪存芯片有2个区域组成。Page的尺寸越大,这个闪讯芯片的容量就越大。

    但是SSD有一个坏习惯,就是在修改某1个page的数据,会波及到整块。需要将这个page所在的整块数据读到缓存中,然后再将这个块初始化为1,再从缓存中读取数据写入。

    对于SSD来说,速度可能不是问题,但是写的次数是有限制的,所以块也不是越大越好。当然对于机械磁盘来说也存在类似问题,块越大,读写的速度就越快,但浪费也越严重,因为写不满一块也要占一块的位置。

    不同型号不同厂家的SSD性能差异很大,下面是我们的分布式块存储作为缓存使用的SSD参数:

    采用PCIe 2.0接口,容量是1.2T,综合读写IOPS(4k小包)是260000次,读吞吐量1.55GB/s,写吞吐量1GB/s。

    在1台SRVSAN的服务器配置了一块SSD作为缓存和12块7200转 3T SATA盘,磁盘只提供1200次、1200M的吞出量。

    远远小于缓存SSD提供的能力,所以直接访问缓存可以提供很高的存储性能,SRVSAN的关键是计算出热点数据的算法,提高热点数据的命中率。

    用高成本的SSD做为缓存,用廉价的SATA磁盘作为容量层

    展开全文
  • 什么是分布式存储系统?

    千次阅读 2018-09-12 19:48:47
    分布式存储系统 定义 分布式存储系统是大量普通PC服务器通过Internet互联,对外作为一个整体提供存储服务 特性 可扩展 低成本 高性能 易用 挑战 分布式存储系统的挑战主要在于数据、状态信息的持久化,要求...

    分布式存储系统

    定义

    分布式存储系统是大量普通PC服务器通过Internet互联,对外作为一个整体提供存储服务

    特性

    • 可扩展
    • 低成本
    • 高性能
    • 易用

    挑战

    分布式存储系统的挑战主要在于数据、状态信息的持久化,要求在自动迁移、自动容错、并发读写的过程中保证数据的一致性。分布式存储涉及的技术主要来自两个领域:分布式系统以及数据库。

    • 数据分布
    • 一致性
    • 容错
    • 负载均衡
    • 事务与并发控制
    • 易用性
    • 压缩/解压缩

    分类

    • 非结构化数据,一般的文档
    • 结构化数据, 存储在关系数据库中
    • 半结构化数据,HTML文档

    不同的分布式存储系统适合处理不同类型的数据:

    分布式文件系统

    • 非结构化数据,这类数据以对象的形式组织,不同对象之间没有关联,这样的数据一般称为Blob(二进制大对象)数据
    • 典型的有Facebook Haystack 以及 Taobao File System
    • 另外,分布式文件系统也常作为分布式表格系统以及分布式数据库的底层存储,如谷歌的GFS可以作为分布式表格系统Google Bigtable 的底层存储,Amazon的EBS(弹性存储块)系统可以作为分布式数据库(Amazon RDS)的底层存储
    • 总体上看,分布式文件系统存储三种类型的数据:Blob对象、定长块以及大文件

    分布式键值系统

    • 较简单的半结构化数据,只提供主键的CRUD(创建、读取、更新、删除)
    • 典型的有Amazon Dynamo 以及 Taobao Tair

    分布式表格系统

    • 较复杂的半结构化数据,不仅支持CRUD,而且支持扫描某个主键范围
    • 以表格为单位组织数据,每个表格包括很多行,通过主键标识一行,支持根据主键的CRUD功能以及范围查找功能
    • 典型的有Google Bigtable 以及 Megastore,Microsoft Azure Table Storage,Amazon DynamoDB等

    分布式数据库

    • 存储结构化数据,一般是由单机关系数据库扩展而来
    • 典型的包括MySQL数据库分片集群、Amazon RDS以及Microsoft SQL Azure
    展开全文
  • 分布式存储与传统存储架构

    万次阅读 2019-04-10 20:34:58
    随着主机、磁盘、网络等技术的发展,对于承载大量数据存储的服务器来说,服务器内置存储空间,或者说内置磁盘往往不足以满足存储需要或者虽然能满足要求,但各个服务器之间独立,严重降低了磁盘的利用率。...
    随着主机、磁盘、网络等技术的发展,对于承载大量数据存储的服务器来说,服务器内置存储空间,或者说内置磁盘往往不足以满足存储需要或者虽然能满足要求,但各个服务器之间独立,严重降低了磁盘的利用率。因此,在内置存储之外,服务器需要采用外置存储的方式扩展存储空间,今天IT君给大家分享一下当前主流的存储架构。

    直连式存储(简称DAS)

    DAS存储是最为常见的存储形式之一,特别是其是在规模比较小的企业中。由于企业本身数据量不大,且光纤交换机等设备价格昂贵,因此基本都采用高密度的存储服务器或者服务器后接JBOD等形式,这种形式的存储属于DAS架构。

     

     

    对于DAS存储,其实可以是在服务器内部直接连接磁盘组,或者通过外接线连接磁盘阵列两种方式。对于外联的方式通常是通过SAS线进行连接,其实通过FC进行服务器与磁盘阵列的连接也可以理解为DAS存储形式,并没有严格的定义。对于通过SAS方式直连的DAS通常需要通过硬件RAID卡或者软RAID的方式实现磁盘的冗余保护,防止由于磁盘故障导致整个存储系统的不可用而丢失数据。同时,采用该种方式的存储通常还需要在主机端安装备份软件对数据进行定期备份,以防止设备故障导致数据丢失。

    无论直连式存储还是服务器主机的扩展,从一台服务器扩展为多台服务器组成的群集(Cluster),或存储阵列容量的扩展,都会造成业务系统的停机,从而给企业带来经济损失,对于银行、电信、传媒等行业7×24小时服务的关键业务系统,这是不可接受的。并且直连式存储或服务器主机的升级扩展,只能由原设备厂商提供,往往受原设备厂商限制。

     

    网络连接存储(简称NAS)

    网络储存设备 (Network Attached Storage,NAS),从名称上可以看出是其可以通过以太网方式接入并进行访问的存储形式。简单来说NAS就是一台在网络上提供文档共享服务的的网络存储服务器。NAS存储设备可以直接连接在以太网中,之后在该网络域内的不同类型操作系统主机都可以实现对该设备的访问。使用者可以通过某种方式(例如linux下的mount命令)将存储服务挂载到本地进行访问,在本地呈现的就是一个文件目录树。我们所熟悉的NFS其实就是一个NAS存储形式,NFS服务器就是NAS存储设备,我们可以通过开源软件搭建该种类型的存储设备,当然市面上也有很多成熟的产品。

    NAS与传统的直接储存设备不同的地方在于NAS设备通常只提供了资料储存、资料存取、以及相关的管理功能,不会与其它业务混合部署,这样就增加该设备的稳定性,减少故障的发生概率。NAS的型式很多样化,可以是一个大量生产的嵌入式设备,也可以在一般的电脑上执行NAS的软件。NAS用的是以文档为单位的通信协议,这些通信协议都是标准协议,目前比较知名的是NFS和CIFS两种。其中NFS在UNIX系统上很常见,而CIFS则在Windows系统经常使用。

    目前也有一些开源的软件实现了NAS的功能,例如FreeNAS和Openfiler 等开源软件。其中FreeNAS的开放源码NAS软件用的就是精简版的FreeBSD操作系统,它可以在一般的电脑硬件上执行,而商业化的嵌入式设备用的则是封闭源码的操作系统和通讯协定程式。而Openfiler则能把标准x86/64架构的系统变成一个强大的NAS、SAN存储和IP存储网关,为管理员提供一个强大的管理平台,并能能应付未来的存储需求。

    NAS产品有一个比较大的优势是真正即插即用。NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内,同时NAS的应用非常灵活。

    存储区域网络(Storage Area Network,简称SAN)

    SAN存储 (存储区域网络Storage Area Network)也即存储区域网络,这个是通过某种交换机(例如光纤交换机或者IB交换机等)连接存储阵列和服务器主机等设备,形成一个专用的存储网络。其概念的核心是形成一个存储网络,该网络是专有网络,不同于NAS中的以太网,这种网络往往无法与现有以太网实现互联互通。所谓的专用存储网络主要体现在通信设备和协议上,目前主流的是FC-SAN,也就是基于FC设备及通信协议的存储区域网络。

    鉴于上述缺点,后面有发展出一种基于以太网的SAN存储形式,这个就是我们通常所说的iSCSI。这种存储形式其实是利用TCP/IP协议实现了对SCSI协议的封装。 主机端相当于CS架构的客户端,而存储端则是服务端。该种方式SAN存储的优点是实现存储网络与传统以太网的互联互通。特别是万兆网的普及,基于iSCSI的SAN解决方案开始大规模应用,与光纤通道技术相比较而言,这种技术具有良好的性能,而且价格低廉。

    SAN存储的隔离特性使得存储设备可以实现更多的附加功能,从而增强存储系统的可靠性、可用性和利用率等。比如在存储设备端实现容灾软件,可以实时的将数据备份到其它数据中心的存储设备。或者在存储设备增加压缩或者去重功能,从而提高存储设备的利用率等。

    因为SAN解决方案是从基本功能剥离出存储功能,所以运行备份操作就无需考虑它们对网络总体性能的影响。SAN方案也使得管理及集中控制实现简化,特别是对于全部存储设备都集群在一起的时候。最后一点,光纤接口提供了10公里的连接长度,这使得实现物理上分离的、不在机房的存储变得非常容易。

    SAN和NAS都是通过网络的方式实现了业务服务器与存储设备的连接和访问,但两者是有别的前者在业务服务器上呈现的是一个磁盘,需要格式化成文件系统后使用;而后者在业务服务器上呈现的是文件系统。

    统一存储

    所谓统一存储其实在架构上与上述两种形式并没有差异,只是将上述两种方式整合到一台物理设备中,并可以同时对外提供SAN和NAS服务。该设备的前端接口可支持FC 8Gb、iSCSI 1Gb和iSCSI 10Gb,后端具备SAS 6Gb硬盘扩展接口,可支持SAS、SATA硬盘及SSD固态硬盘具备极佳的扩展能力。实现FC SAN与IP SAN、各类存储介质的完美融合,有效整合用户现有存储网络架构,实现高性能SAN网络的统一部署和集中管理,以适应业务和应用变化的动态需求。主机接口及硬盘接口均采用模块化设计,更换主机接口或硬盘扩展接口,无须更换固件,可大大简化升级维护的难度和工作量。

     

     

    分布式存储

    分布式存储是一种数据存储技术,通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

    如图5所示,分布式存储使用的设备一般是常规服务器,而非存储设备。分布式存储通过非标准协议实现服务器上存储资源的整个,并进行存储资源池化和虚拟化处理,最后呈现给用户某种形式(块存储或者文件存储)的存储空间。分布式存储有其特异性,其使用的并非标准协议,因此通常需要在应用服务器安装其客户端软件实现存储空间的虚拟呈现,以及请求的处理。

    由于分布式存储拓扑结构的复杂性,其出现故障的概率也大大增加了。因此,对于分布式存储需要实现基于网络的数据冗余、数据保护和数据容错等功能,确保在出现任何异常情况(例如磁盘、网卡、交换机和服务器等)下存储系统的可用性和可靠性。

     

     

    Server SAN

    Server SAN其实也是分布式存储的一种,由于其比较新,目前没有一个具体的定义。 Server San应该是一个利用软件将基于DAS存储(包含闪存卡,直连存储)的集合,做成一个能共享的SAN存储网络。

    SAN存储区域网,大家都很熟悉。普遍使用的就两种: FC SAN和ISCSI SAN。这两种结构是通过FC网络或者IP网络将存储设备放到一个共享的环境中心,让分布式的服务HA,应用迁移,数据复制等都可以通过这套网络实现。但是大家注意了,这套SAN网络是很贵的,管理起来是很麻烦的。 在很多的环境下面,很多SAN环境中会有一部分直连存储我们根本没有用上:比如直连存储卡,本地硬盘等。

    从实际的应用中,直连存储的效率是很高的:PCI-E直接到数据端,比经过FC协议的转换还要快。而且成本低。 Server SAN是一个最新的概念:将分布在各个服务器上的直连存储通过软件的方式整合成一个统一的SAN存储系统。有点类似谷歌在云计算上做的工作,将上万台服务器组成一个超级计算机。 现在Server San已经不是一个概念了,在谷歌和facebook的数据中心已经大量使用了。最经典的案例就是VMware中的vSAN 了。

    本文来自微信公众号 itworld123

    展开全文
  • 分布式存储基础知识

    万次阅读 2018-11-11 20:47:42
    分布式存储的数据类型有以下三类: 非结构化的数据:主要是数据之间的关联系不大,像文本图片之类的数据 结构化的数据:数据之间关联系很大,关系型数据库这种,可以用表进行表示的 半结构化的数据:介于上述两种...

    2018.4.26

    分布式存储的数据类型有以下三类:

    非结构化的数据:主要是数据之间的关联系不大,像文本图片之类的数据
    结构化的数据:数据之间关联系很大,关系型数据库这种,可以用表进行表示的
    半结构化的数据:介于上述两种数据类型之间,数据之间的关系简单,典型的代码是html文件

    针对这几种不同的数据类型,分布式存储系统适合处理不同的类型的数据,将分布式存储系统划分为以下几种:

    分布式文件系统:

    处理非结构化的数据,将非结构化的数据都当做文件形式的存储对象,处理对象是文件,形成一个分布式文件系统。

    分布式键值系统:

    存储数据关系简单的半结构化的数据,通过键值来管理半结构化的数据,一般用作缓存系统,一致性哈希算法是键值系统中常见的数据分布技术。支持简单的数据创建,读取,更新,删除操作。

    分布式表格系统:

    存储数据关系复杂的半结构化的数据,不仅支持分布式键值系统的GRUD操作,而且还是支持主键的范围扫描。主要的特点是只针对单表格,不支持表格之间的合并联结等操作。

    分布式数据库:

    存储结构化的数据,从单机的关系数据库发展而来,提供多维表格组织数据,提供SQL语言查找,同时支持多表的关联。关系型数据在软件生态链是非常好的,但是面临的问题就是扩展性的问题,如果把传统的事务操作,高效的扩展到各个节点上。现在出现了很多非关系型数据库,虽然扩展性好,但是只能解决特定的某种问题,目前倾向于分布式的关系型数据库的使用。
    ————————————————————————————————————————————

    单机存储系统介绍

    单机存储系统的概念是出自于单机的关系型数据库的存储引擎,关系型数据库对上层提供多种操作,将这些操作封装成为事务的操作,那么这些数据库的数据存储是用什么结构组织呢,这就是所谓的存储引擎。

    存储引擎:

    基本的功能包括增删读改。给上层的数据库提供增删读改的。

    常见的存储引擎包括以下几种:

    哈希存储引擎:哈希表的持久化,支持随机增删改,读取,但是不支持顺序的扫描。->分布式键值系统
    Btree存储引擎:B树的持久化实现,支持随机增删改,读取,以及顺序扫描。->分布式数据库
    LSM存储引擎:支持随机增删改,读取,以及顺序扫描,它通过批量转存技术将随机写入数据批量顺序写入到磁盘上->广泛用于互联网后台存储系统

    哈希存储引擎:

    基于哈希表结构的键值存储系统,仅支持追加写操作,即所有的写操作只追加而不修改老的数据,同一个时刻,只有一个活跃的新文件。
    主要思想是:
    1.内存中采用基于哈希表的索引结构,即hash表存放的是数据在磁盘上的位置索引,磁盘上存放的是主键和value的实际内容。

    2.定期合并,定期将旧的数据或者删除操作进行合并,保留最新的数据。

    3.掉电恢复,在磁盘上保留一份索引记录,在定期合并的时候产生这份索引记录,当磁盘掉电的时候直接通过这个索引记录到内存中重建即可。

    存在的问题:索引的长度远小于数据的长度,这样内存存放的索引越多,磁盘存放的数据就越多。

    B树存储引擎:

    关系型数据库常用的存储引擎,通过B树的结构进行数据的持久化
    主要思想:
    1.利用B树的数据结构,非叶子节点都是索引,叶子节点存放的数据,

    2.根节点常驻内存,通过二分法去查找非叶子节点,没有命中去磁盘上取根节点,直到最后早点叶子节点的值,最后从磁盘中取出。

    3.添加缓冲区管理,替换策略,加快叶子节点的缓存。

    LSM树存储引擎:

    主要思想:
    1.对数据的修改增量保持在内存中,达到指定大小限制后批量写入到磁盘中

    2.读取数据时,需要合并磁盘的历史数据和内存中最近修改的数据

    3.增加的数据写到磁盘上时,按照新老写入不同的sst文件,并给这些问题设置不同的层次,层次代表了数据的新老,通过这样的层次完成数据的持久化。
    ————————————————————————————————————————————

    上面介绍存储引擎是一个存储系统的发送机,那么接下来介绍数据模型,数据模型就是存储系统的外形,也就是存储系统给上层存储数据的模型。

    常见的模型分为三类:文件、关系、键值

    1.文件模型:向上提供文件的存储,按照目录的形式去管理文件的,给上层的应用提供文件的基本操作,例如打开读写,查看目录这些操作。
    2.关系模型:每个关系是一个表格由多行组成,给上层提供SQL数据库的访问特征。
    3.键值模型:按行进行存储,每行提供了主键和值两个部分组成。

    ————————————————————————————————————————————

    SQL和noSQL

    一个代表关系型数据库,一个代表非关系型数据库,两者各有优点和缺点:

    SQL关系型数据库的挑战:

    1、事务处理本来是为了更加方便的封装操作,但是由于现在的数据都是海量数据,而且数据都存放在不同的节点上,如果事务的多个操作在不同的节点上,保证事务的原子性就是一种挑战。

    2、我们知道SQL为了同时操作多个表,支持表之间的联表操作,但是在海量数据面前,有时候联表操作并不是好的操作,海量数据有时候往往会利用那些冗余的数据。

    3、在性能上,SQL底层是B树,B树的更新性能是没有LSM树这些性能好,如果碰到频繁的增添的时候,在存储引擎上还没有key-value这种系统好。

    noSQL非关系型数据库的挑战:

    1、缺少统一的标准,都是在针对特定的应用进行改进的

    2、使用上及运维上比较复杂,没有形成一个统一的标准

    3、这一类数据库一般用来缓存或者优化关系型数据库。
    ————————————————————————————————————————————

    数据库中事务的基本介绍

    为了让数据库更加高效的进行,数据库将多个操作合成了一个事务,并且让这个事务变成一个基本的操作,也就是说数据库的事务必须满足ACID属性

    1、原子操作:对数据的修改是原子的,也就是说要么修改,要么不修改。
    2、一致性:保持数据的一致性,即数据是正确完整的
    3、隔离性:事务之间是隔离的,每一个事务在它没有完全执行完成之前,对其他的事务是不可见的
    4、持久性:事务完成后,对数据库的操作是永久性的。

    ————————————————————————————————————————————

    分布式数据库中的并发操作

    多个事务并发操作的时候,这个时候很有可能对资源是有冲突的,例如一个事务要读某行,一个事务又要更新写这一行,那和避免这种冲突呢?

    看起来并发导致资源冲突和多线程的资源冲突很类似,第一个想到的是通过锁的方式来解决。

    对于分布式数据库中并发管理有以下几种方式:

    1、数据库锁
    2、写时复制技术
    3、多版本并发控制

    1、就会涉及到数据库的并发控制了,数据库的并发操作主要是通过锁来完成的。

    事务分成几种类型:读事务、写事务、读写事务

    那么对应的锁也就有读锁,写锁,

    对于读锁,允许对同一个元素加多个读锁
    对于写锁,只能允许对一个元素加一个写锁,并且写事务将阻塞读事务

    通过锁来控制和操作系统的线程是类似的,但是问题是可能会导致死锁,所以解决死锁需要靠回滚操作来完成。

    2、写时复制技术

    由于互联网中读事务是远大于写事务,通过写时复制操作,可以在读操作不同加锁来解决冲突的问题
    主要是分为三步:

    拷贝:把根节点到叶子节点拷贝
    修改:对节点内容进行修改
    提交:切换根节点的指针,指向新的根节点

    那么对于读操作来说,如果读操作发生在第3步之前,呢么将直接读取老的节点,在3之后,将直接读取新的节点。
    用这种方法可以解决读写的冲突,但是写写的冲突还是存在的,写写必须得互斥操作才行。

    3、多版本控制

    多版本控制也可以实现读事务部加锁,它的思想也比较简单,对每行数据维护多个版本,版本实际是数据行的删除修改的时间,当写一个数据时,出现了读请求,那么写没有完成,读的版本就是老的数据,通过版本检查,就可以实现获得自己需要的数据版本。
    最后,需要定义将无用的版本进行删除回收操作。
    ————————————————————————————————————————————

    数据库出现故障如何恢复

    恢复的手段:操作日志,检查点

    具体来说:
    1、操作日志:为了保证数据的一致性,数据库的操作要持久化到磁盘,但不能频繁的访问磁盘,这样会导致性能很差,现在比较常见的做法是在内存中记录操作日志,在内存中去执行这些操作,然后通过批量定期刷新到磁盘,将随机的请求转换为顺序的写请求。

    2、定期将日志刷新到磁盘上,当服务器出现宕机的时候,此时需要从磁盘中读取操作日志,进行恢复。

    3、设置check检查点,实际是定义设置check点,这个check就自动将操作日志刷到磁盘上,每个check点就是一个恢复的时间点。

    当出现故障的时候,此时将磁盘中对应的最新的check点进行恢复。

    ————————————————————————————————————————————

    多种引擎之间的比较:

    1、Hash存储引擎

    代表数据库:redis、memcache

    通常也常见于其他存储引擎的查找速度优化上。 Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。虽然 Hash 索引效率高,但是 Hash 索引本身由于其特殊性也带来了很多限制和弊端。

    这里列举缺点:

    (1)Hash 索引仅仅能满足"=",“IN"和”<=>"查询,不能使用范围查询。
    (2)Hash 索引无法被用来避免数据的排序操作。
    (3)Hash 索引不能利用部分索引键查询。
    (4)Hash 索引在任何时候都不能避免表扫描。
    (5)Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高

    Hash碰撞,就是链式扫描:

    由于不同索引键存在相同 Hash 值,所以即使取满足某个 Hash 键值的数据的记录条数,也无法从Hash索引中直接完成查询,还是要通过访问表中的实际数据进行相应的比较,并得到相应的结果。
    ———————————————————————————————————————————————

    2、B树存储引擎

    代表数据库:MongoDB、mysql(基本上关系型数据库)等

    还有一种算是B树存储引擎:COLA树(CacheObliviousBTree)
    代表数据库:tokudb

    为了如何让B树更有效的执行,他们提出了一个缓存忘却CacheOblivious算法,该算法在不需要明确知道存储器层次中数据传输规模的情况下,也可以高效的工作。更多请参见:http://en.wikipedia.org/wiki/Cache-oblivious_algorithm。

    说个大家熟悉的名称TokuMX : 目前非常流行的NoSQL数据库MongoDB的底层替换成与TokuDB同样的存储引擎[ ToKuMx],达到了非常好的效 果

    3、LSM树(Log-Structured Merge Tree)存储引擎

    代表数据库:nessDB、leveldb、hbase

    核心思想的核心

    就是放弃部分读能力,换取写入的最大化能力。LSM Tree ,这个概念就是结构化合并树的意思,它的核心思路其实非常简单,就是假定内存足够大,因此不需要每次有数据更新就必须将数据写入到磁盘中,而可以先将最新的数据驻留在磁盘中,等到积累到最后多之后,再使用归并排序的方式将内存内的数据合并追加到磁盘队尾(因为所有待排序的树都是有序的,可以通过合并排序的方式快速合并到一起)。

    日志结构的合并树(LSM-tree)是一种基于硬盘的数据结构,与B-tree相比,能显著地减少硬盘磁盘臂的开销,并能在较长的时间提供对文件的高速插入(删除)。然而LSM-tree在某些情况下,特别是在查询需要快速响应时性能不佳。通常LSM-tree适用于索引插入比检索更频繁的应用系统。Bigtable在提供Tablet服务时,使用GFS来存储日志和SSTable,而GFS的设计初衷就是希望通过添加新数据的方式而不是通过重写旧数据的方式来修改文件。而LSM-tree通过滚动合并和多页块的方法推迟和批量进行索引更新,充分利用内存来存储近期或常用数据以降低查找代价,利用硬盘来存储不常用数据以减少存储代价。

    磁盘的技术特性:对磁盘来说,能够最大化的发挥磁盘技术特性的使用方式是:一次性的读取或写入固定大小的一块数据,并尽可能的减少随机寻道这个操作的次数。
    在这里插入图片描述
    LSM和Btree差异就要在读性能和写性能进行舍和求。在牺牲读性能的同时,寻找其他方案来弥补。

    1、LSM具有批量特性,存储延迟。当写读比例很大的时候(写比读多),LSM树相比于B树有更好的性能。因为随着insert操作,为了维护B树结构,节点分裂。读磁盘的随机读写概率会变大,性能会逐渐减弱。 多次单页随机写,变成一次多页随机写,复用了磁盘寻道时间,极大提升效率。

    2、B树的写入过程:对B树的写入过程是一次原位写入的过程,主要分为两个部分,首先是查找到对应的块的位置,然后将新数据写入到刚才查找到的数据块中,然后再查找到块所对应的磁盘物理位置,将数据写入去。当然,在内存比较充足的时候,因为B树的一部分可以被缓存在内存中,所以查找块的过程有一定概率可以在内存内完成,不过为了表述清晰,我们就假定内存很小,只够存一个B树块大小的数据吧。可以看到,在上面的模式中,需要两次随机寻道(一次查找,一次原位写),才能够完成一次数据的写入,代价还是很高的。

    3、LSM Tree放弃磁盘读性能来换取写的顺序性,似乎会认为读应该是大部分系统最应该保证的特性,所以用读换写似乎不是个好买卖。但别急,听我分析一下。

    a、内存的速度远超磁盘,1000倍以上。而读取的性能提升,主要还是依靠内存命中率而非磁盘读的次数
    b、写入不占用磁盘的io,读取就能获取更长时间的磁盘io使用权,从而也可以提升读取效率。例如LevelDb的SSTable虽然降低了了读的性能,但如果数据的读取命中率有保障的前提下,因为读取能够获得更多的磁盘io机会,因此读取性能基本没有降低,甚至还会有提升。而写入的性能则会获得较大幅度的提升,基本上是5~10倍左右。

    下面说说详细例子:

    LSM Tree弄了很多个小的有序结构,比如每m个数据,在内存里排序一次,下面100个数据,再排序一次……这样依次做下去,我就可以获得N/m个有序的小的有序结构。

    在查询的时候,因为不知道这个数据到底是在哪里,所以就从最新的一个小的有序结构里做二分查找,找得到就返回,找不到就继续找下一个小有序结构,一直到找到为止。

    很容易可以看出,这样的模式,读取的时间复杂度是(N/m)*log2N 。读取效率是会下降的。
    这就是最本来意义上的LSM tree的思路。那么这样做,性能还是比较慢的,于是需要再做些事情来提升,怎么做才好呢?

    LSM Tree优化方式:

    a、Bloom filter: 就是个带随即概率的bitmap,可以快速的告诉你,某一个小的有序结构里有没有指定的那个数据的。于是就可以不用二分查找,而只需简单的计算几次就能知道数据是否在某个小集合里啦。效率得到了提升,但付出的是空间代价。
    b、compact:小树合并为大树:因为小树他性能有问题,所以要有个进程不断地将小树合并到大树上,这样大部分的老数据查询也可以直接使用log2N的方式找到,不需要再进行(N/m)*log2n的查询了

    参考链接:http://blog.csdn.net/map_lixiupeng/article/details/40897501

    展开全文
  • (一)分布式存储综述

    万次阅读 2017-03-17 23:36:20
    这篇博客主要来总结一下分布式存储系统的历史,发展以及特性,从而对分布式存储系统有一个大概的了解,主要从一下几个部分来介绍分布式存储分布式存储概念 分布式文件系统的发展 分布式存储系统的分类 分布式存储...
  • 什么是分布式存储

    千次阅读 2018-09-30 11:14:02
    传统定义:分布式存储系统是大量 PC 服务器通过 Internet 互联,对外提供一个整体的服务。 分布式存储系统具有以下的几个特性: 可扩展 :分布式存储系统可以扩展到几百台甚至几千台这样的一个集群规模,系统的 ...
  • 各类分布式存储系统简介

    万次阅读 2017-10-23 15:49:51
    本地文件系统如ext3,reiserfs等(这里不讨论基于内存的文件系统),它们管理本地的磁盘存储资源、提供文件到存储位置的映射,并抽象出一套文件访问接口供用户使用。但随着互联网企业的高速发展,这些企业对数据存储...
  • 分布式存储概述

    千次阅读 2015-12-22 20:44:24
    分布式存储是相对于单机存储而言,之所以要分布自然是因为互联网时代信息数据大爆炸,单机已经难以满足大型应用的数据存储需求。存储系统的关注点关于存储系统,一般我们关注下面几个方面: 数据分布与负载均衡 ...
  • 分布式存储原理

    千次阅读 2018-10-18 14:37:51
    分布式存储原理 1.当HDFS集群启动之时,DataNode会向NameNode发送信息,包括Block存储位置,DataNode地址。 2.Client向NameNode汇报当前上传文件的信息(Block数量、文件上传时间、文件权限、拥有着)。 2.1 Client将...
  • 很多人可能对分布式存储耳熟能详,但是,大多数人对其概念或者知识点却了解得都过于分散,看了很多却“只见树木,不见森林”,学了很多往往只能“知其然,却不能知其所以然”。因此,...
  • 对于分布式存储一直有一个疑问:横向扩展(Scale Out)、弹性伸缩、敏捷业务、开箱即用,外加成本优势……,无不针对传统存储的“罩门”,从技术分析上看,分布式存储理应所向披靡,但为什么现实市场并不是这样呢?...
  • 分布式存储系统是由大量廉价普通PC服务器通过Internet互联,对外作为一个整体提供服务的系统。它的规模大且成本低。 分布式存储系统的特性: 可扩展:分布式存储系统能扩展几百到几千台的规模,随着集群数量的提升...
  • 分布式存储与分布式计算

    千次阅读 2019-03-19 10:04:53
    3、黄金搭档:分布式存储+分布式计算 这篇文章聊一个话题:什么是分布式计算系统? (1)从一个新闻门户网站案例引入 现在很多同学经常会看到一些名词,比如分布式服务框架,分布式系统,分布式存储系统...
  • 为了克服上述缺点,满足海量数据的存储需求,市场上出现了分布式存储技术。 分布式存储系统,通常包括主控服务器、存储服务器,以及多个客户端组成。其本质是将大量的文件,均匀分布到多个存储服务器上。 当前,...
  • 大规模分布式存储系统架构概述 概念 大规模分布式存储系统的定义:“分布式存储系统是大量普通PC服务器通过Internet互联,对外作为一个整体提供存储服务”。 分布式存储系统具有如下几个特性: ????可扩展。...
  • 分布式存储的概念

    千次阅读 2017-02-26 14:19:00
    大规模分布式存储系统的传统定义:“分布式存储系统是大量PC服务器通过Internet互联,对外提供一个整体的服务”。 分布式存储系统具有以下的几个特性: 可扩展 。分布式存储系统可以扩展到几百台甚至几千台这样的一...
  • 《大规模分布式存储系统:原理解析与架构实战》是分布式系统领域的经典著作,由阿里巴巴高级技术专家“阿里日照”(OceanBase核心开发人员)撰写,阳振坤、章文嵩、杨卫华、汪源、余锋(褚霸)、赖春波等来自阿里、...
  • 分布式存储架构是一个复杂的系统工程,针对特定应用的数据存储有不同的系统架构解决方案。不同的存储方法会影响存储性能、存储成本、冗余度、工程复杂性等。 分布式存储的历史 分布式存储最早是由谷歌提出的,其...
  • 分布式存储技术及应用

    万次阅读 2012-04-12 13:54:36
    1百万亿亿 (1024)。毫无疑问,各个大型网站也都存储着海量的数据,这些...分布式存储技术就是为了解决这个问题而发展起来的技术,下面让将会详细介绍这个技术及应用。 分布式存储概念 与目前常见的集中式存储
  • 整个大数据处理的体系,按我的理解可以分为两个部分,一个是分布式存储系统、另一个是分布式计算框架。分布式存储系统主流是HadoopDFS,其他还有Ceph和Swift。分布式计算框架主流是MapReduce,Storm和Spark。 首先...
1 2 3 4 5 ... 20
收藏数 496,081
精华内容 198,432
关键字:

分布式存储