存储系统那些事

合集下载

存储的核心概念

存储的核心概念

存储的核心概念存储是计算机系统中的一个重要组成部分,用于存储和管理数据和程序。

它允许计算机在执行指令和处理数据时进行读写操作,并且可以长期保存数据以供以后使用。

存储的核心概念包括存储层次结构、存储器层次、主存储器和辅助存储器。

一、存储层次结构计算机中的存储层次结构是根据存取速度和容量来划分的,它分为多个层次,每个层次都有自己的特点和功能。

存储层次结构从上到下分为:寄存器、高速缓存、主存储器、辅助存储器。

下面我将逐一介绍这些层次。

1. 寄存器:寄存器是存储器层次结构中最接近CPU 的一层,也是最快的一层。

它用于存放CPU 需要立即访问的数据和指令。

寄存器的容量很小,一般只有几十个字节,但是它的读写速度非常快,能够满足CPU 对数据和指令的高速处理需求。

2. 高速缓存:高速缓存是位于CPU 和主存储器之间的一层存储器,作为主存储器和寄存器之间的缓冲区,用于加速CPU 对数据和指令的访问。

高速缓存的容量比寄存器大,但比主存储器小,一般几十到几百个千字节。

它的读写速度比主存储器快,但比寄存器慢。

它通过缓存一部分主存储器中的数据和指令,提高了CPU 对存储器的访问效率。

3. 主存储器:主存储器(也叫内存)是计算机系统中最重要的存储器,用于存放程序和数据。

它的容量比高速缓存大,一般几十到几百个千兆字节。

主存储器的读写速度比高速缓存慢,但比辅助存储器快。

它能够提供给CPU 进行读写操作。

4. 辅助存储器:辅助存储器(也叫外存)是计算机系统中最大的存储器,负责长期保存数据和程序。

它的容量比主存储器大,可以达到几百个千兆字节或者更大。

辅助存储器的读写速度比主存储器慢,但它具有永久存储的特点,即使计算机断电,数据也不会丢失。

以上是存储层次结构中的几个层次,不同层次的存储器在容量、读写速度、价格等方面都有所不同,通过合理地利用这些存储器,可以提高计算机系统的性能和效率。

二、存储器层次存储器层次是指存储器在层次结构中的位置和关系。

存储器的工作原理

存储器的工作原理

存储器的工作原理存储器是计算机系统中的重要组成部份,用于存储和检索数据。

它可以分为主存储器(内存)和辅助存储器(硬盘、固态硬盘等)两大类。

本文将详细介绍存储器的工作原理,包括主存储器和辅助存储器的工作原理、数据存储和检索过程等。

一、主主存储器是计算机中用于存储数据和程序的地方,它的工作原理可以简单地分为存储和检索两个过程。

1. 存储过程当计算机需要存储数据时,首先会将数据传输到主存储器中。

主存储器由一系列存储单元组成,每一个存储单元都有一个惟一的地址。

计算机通过地址线将数据传输到指定的存储单元中。

存储单元通常是由触发器构成,可以存储一个或者多个位的数据。

在存储过程中,计算机会根据数据的类型和大小,将数据划分为不同的存储单元。

例如,一个整数可能需要多个存储单元来存储,而一个字符只需要一个存储单元。

2. 检索过程当计算机需要访问存储器中的数据时,它会根据数据的地址,通过地址线将数据传输到计算机的其他部件中。

检索过程与存储过程相反,计算机通过地址线找到存储单元,并将存储单元中的数据传输到其他部件中进行处理。

主存储器的工作原理可以总结为:根据地址存储数据,根据地址检索数据。

二、辅助辅助存储器是计算机中用于长期存储数据和程序的设备,例如硬盘、固态硬盘等。

辅助存储器相对于主存储器来说,容量更大,但访问速度较慢。

辅助存储器的工作原理主要包括数据的存储和检索过程。

1. 存储过程在存储过程中,计算机将数据传输到辅助存储器中。

辅助存储器通常由磁盘或者闪存芯片组成,数据存储在磁盘的扇区或者闪存芯片的存储单元中。

计算机通过磁头或者控制电路将数据写入到指定的扇区或者存储单元中。

2. 检索过程当计算机需要访问辅助存储器中的数据时,它会根据数据的地址,通过磁头或者控制电路将数据从磁盘或者闪存芯片中读取出来,并传输到计算机的其他部件中进行处理。

辅助存储器的工作原理可以总结为:根据地址存储数据,根据地址检索数据。

三、数据存储和检索过程无论是主存储器还是辅助存储器,数据的存储和检索过程都是通过地址来完成的。

存储子系统中的存储资源分配和管理

存储子系统中的存储资源分配和管理

存储子系统中的存储资源分配和管理在现代计算机系统中,存储子系统是承担着存储资源分配和管理的关键角色。

存储子系统负责管理计算机系统中的存储资源,并为其他子系统(例如处理器和输入输出系统)提供高效可靠的存储服务。

存储资源的分配和管理对于计算机系统的性能和可靠性至关重要。

本文将重点讨论存储子系统中存储资源分配和管理的相关问题。

首先,存储资源的分配是存储子系统中的一个重要任务。

计算机系统中的存储资源包括主存(RAM)和辅助存储(例如硬盘、固态硬盘和光盘等)。

主存被用于存储当前运行的程序和数据,而辅助存储则用于永久保存大量的程序和数据。

在存储子系统中,管理者需要根据系统的需求有效地分配存储资源,以提高系统的性能和效率。

存储资源的分配主要涉及到两个方面,即内存分配和磁盘空间分配。

在内存分配方面,存储子系统需要根据进程的需求分配合适的内存空间。

在多任务操作系统中,存储管理器需要为每个进程分配足够的内存,以保证进程能够正常运行。

而在磁盘空间分配方面,存储子系统需要根据文件系统的需求分配合适的磁盘空间。

为了提高磁盘的利用率,存储管理器通常会使用文件系统来管理磁盘空间,对文件进行组织和分配。

其次,存储资源的管理是存储子系统中的另一个关键任务。

存储资源的管理包括内存管理和文件系统管理两个方面。

在内存管理方面,存储子系统需要跟踪和管理内存的使用情况,及时回收不再使用的内存空间,并为新的内存请求提供合适的内存。

内存管理还需要处理内存碎片问题,以提高可用内存的利用率。

在文件系统管理方面,存储子系统需要管理磁盘上的文件和目录结构,包括创建、删除、修改文件和目录等操作。

文件系统管理器还需要确保文件的安全性和可靠性,通过备份和恢复机制来保护文件的完整性。

为了提高存储子系统的性能和可靠性,存储资源分配和管理还需要考虑以下几个方面。

首先,存储资源的分配和管理需要考虑系统的负载情况。

随着计算机系统中的任务数量和数据量的增加,存储资源的需求也会相应增加。

存储基础知识培训

存储基础知识培训

存储基础知识培训一、存储概述存储是计算机系统中非常重要的组成部分,用于保持数据和程序的持久性。

在大数据时代的背景下,存储的重要性愈发凸显。

本文将介绍存储的基础知识,以帮助读者全面了解存储的相关概念和技术。

二、存储类型1.主存储器主存储器(Main Memory)是计算机系统中最直接与CPU交互的存储设备,也被称为内存。

主存储器的容量决定了系统同时存储的数据和程序大小。

2.辅助存储器辅助存储器(Secondary Storage)用于长期存储大量的数据和程序,例如硬盘、光盘、固态硬盘等。

辅助存储器的容量一般远大于主存储器,可用于大数据存储和备份。

三、存储技术1.磁盘存储磁盘存储是一种机械存储技术,通过将数据存储在旋转的磁盘上来实现数据的读写。

磁盘以扇区为单位进行数据的存储和访问,随机存取速度较慢,但容量较大。

2.固态存储固态存储(Solid State Storage)采用闪存芯片作为存储介质,相对于传统磁盘存储具有更快的读写速度和较好的耐用性。

固态硬盘(SSD)已逐渐取代传统机械硬盘成为存储系统的主力。

3.网络存储网络存储(Network Storage)指的是通过网络连接远程存储设备的存储技术。

常见的网络存储技术有网络附加存储(NAS)和存储区域网络(SAN),可实现数据的共享和备份。

四、存储管理1.存储器层次结构计算机系统的存储器层次结构由多级存储构成,层次结构越高,存取速度越快,成本越高。

常见的存储器层次结构包括高速缓存、主存储器和辅助存储器。

2.存储系统管理存储系统管理涉及存储资源的分配和管理,包括存储容量的规划、文件系统的设计与管理、数据备份与还原等。

合理的存储系统管理能够提高存储系统的效率和可靠性。

五、存储安全1.数据安全存储安全是指对存储中的数据进行保护和控制,以防止非法访问、损坏或泄露。

常见的数据安全措施包括数据加密、访问权限控制和备份恢复。

2.存储设备安全存储设备安全涉及到存储设备的管理和防护。

存储系统方案

存储系统方案

存储系统方案概述存储系统方案是指为了满足数据存储和管理需求而设计的一种系统架构。

随着数据规模的不断增长和多样化的存储需求,存储系统的设计变得越发重要。

本文将介绍存储系统方案的基本原理、常见的存储类型和架构,并探讨存储系统方案设计的一些关键要素。

存储类型在设计存储系统方案之前,我们首先需要了解不同的存储类型。

下面列举了几种常见的存储类型:1.本地存储:本地存储是指将数据存储在本地设备上,例如硬盘、固态硬盘等。

本地存储具有高性能和低延迟的特点,适合对数据快速读写的场景。

然而,本地存储也存在容量有限、单点故障等问题。

2.网络存储:网络存储是指将数据存储在网络上的存储设备上,例如网络附加存储(NAS)、存储区域网络(SAN)等。

网络存储可以提供高可用性和可伸缩性,适合多节点访问的场景。

但是,网络存储也存在网络带宽和延迟的限制。

3.分布式存储:分布式存储是指将数据分散存储在多台机器上,通过分布式算法实现数据的高可用性和可靠性。

分布式存储可以提供数据备份和容错机制,适合大规模数据存储和处理的场景。

然而,分布式存储的设计和实现比较复杂,需要考虑数据一致性和负载均衡等问题。

4.云存储:云存储是指将数据存储在云服务提供商的存储设备上,用户可以通过互联网访问数据。

云存储提供了弹性扩展和按需付费的特点,适合需要灵活调整存储容量的场景。

但是,云存储也存在数据隐私和安全性的问题。

存储架构存储系统方案的设计需要考虑数据的访问模式、扩展性、性能和可靠性等因素。

下面列举了几种常见的存储架构:1.集中式存储架构:集中式存储架构将数据存储在一个中心存储设备上,并通过网络提供对数据的访问。

集中式存储架构具有集中管理和维护的优点,但也存在单点故障和性能瓶颈的问题。

2.分布式存储架构:分布式存储架构将数据分散存储在多台机器上,通过分布式算法实现数据的高可用性和可靠性。

分布式存储架构可以通过水平扩展来提升存储容量和性能,但需要解决数据一致性和负载均衡的问题。

存储原理及基本知识

存储原理及基本知识

存储原理及基本知识:当前流行的计算机系统中,广泛采用由三种运行原理不同、性能差异很大的存储介质,来分别构建高速缓冲存储器、主存储器和虚拟存储器,再将它们组成通过计算机硬软件统一管理与调度的三级结构的存储器系统。

为了便于存放,每个存储单元必须有唯一的编号(称为“地址”),通过地址可以找到所需的存储单元,取出或存入信息。

这如同旅馆中每个房间必须有唯一的房问号,才能找到该房间内的人.软盘存储器由软盘、软盘驱动器和软盘驱动卡三部分组成。

通常每8个二进制位组成一个字节。

字节的容量一般用KB、MB、GB、TB来表示,它们之间的换算关系:1KB=1024B;1MB=l024KB:1GB=l024MB;1TB=1024GB。

20GB=20×1024MB。

每一个能代表0和1的电子线路称为一个二进制位,是数据的最小单位。

现代计算机中采用二进制数制是因为二进制数的优点是物理上容易实现且简单可靠;运算规则简单;适合逻辑运算。

存储容量大小是计算机的基本技术指标之一。

通常不是以二进制位、字或双字来表示,因为这些表示不规范,一般约定以字节作为反映存储容量大小的基本单位。

在微机中,信息的最小单位为二进制位,用bit来表示;8位二进制构成一个字节,用Byte来表示;一个或一个以上字节可组成一个二进制表示的字,字长可以是8位、16位、32位或64位;两个字长的字,称为双字。

在计算机内部,电路中常用的器件具有两种不同的稳定状态:高电平和低电平。

这两种状态之间能相互转换。

因此,在计算机内部,一切信息的存放、处理和传送都采用二进制数的形式。

因为计算机内部的计数基本单位是2,2的10次幂是1024。

所以1024个字节为1K字节,写做1KB。

1024×1024个字节为1M字节,记做1MB。

一个完整的计算机硬件系统包括运算器、控制器、存储器、输入设备和输出设备,运算器和控制器合称中央处理器或微处理器,中央处理器与内存储器合在一起称为主机。

存储服务器基础知识

存储服务器基础知识

存储服务器基础知识概述:存储服务器是一种用于存储和管理数据的设备,它提供了高容量、高可靠性和高性能的数据存储能力。

本文将介绍存储服务器的基础知识,包括其工作原理、存储技术、常见的存储协议等。

一、存储服务器的工作原理存储服务器通过硬盘阵列、存储控制器和网络连接等组件实现数据的存取和管理。

其工作原理如下:1. 硬盘阵列(RAID):存储服务器通常采用RAID技术,将多个硬盘组合成一个逻辑磁盘组,在数据存储和读取时提供冗余和性能优化。

2. 存储控制器:存储控制器是存储服务器的核心组件,负责管理硬盘阵列、处理数据读写请求,并提供高可靠性和高性能的存储服务。

3. 网络连接:存储服务器通过网络连接与客户端或其他存储设备通信,支持各种存储协议。

二、存储技术存储服务器采用多种存储技术,以满足不同的存储需求。

以下是几种常见的存储技术:1. 磁盘存储:存储服务器使用硬盘作为主要的存储介质,提供高容量、高性能、可靠性。

硬盘可以分为机械硬盘(HDD)和固态硬盘(SSD)两种类型,HDD适用于大容量存储,而SSD适用于高性能存储。

2. 网络存储:存储服务器通过网络连接提供存储服务,包括网络附加存储(NAS)和存储区域网络(SAN)两种模式。

NAS通过文件共享协议(如NFS和SMB)提供文件级别的存储服务,而SAN基于块级别的存储协议(如FC和iSCSI)提供更高性能的存储服务。

3. 对象存储:对象存储是一种新型的存储技术,将数据作为对象进行管理,适应了大规模、分布式存储的需求。

对象存储通过访问对象的唯一标识符进行数据的读写操作,具有高扩展性、可靠性和低成本的特点。

三、存储协议存储服务器支持多种存储协议,用于与客户端或其他存储设备进行通信。

以下是几种常见的存储协议:1. NFS(网络文件系统):NFS是一种文件级别的存储协议,用于在网络上共享文件。

它提供了简单的访问控制和文件锁定机制,适用于共享文件的存储场景。

2. SMB(服务器消息块):SMB也是一种文件级别的存储协议,常用于Windows操作系统。

计算机体系结构存储系统的认识与理解

计算机体系结构存储系统的认识与理解

计算机体系结构存储系统的认识与理解计算机体系结构是计算机科学中的一个重要概念,涉及到计算机硬件和软件之间的关系、计算机的逻辑结构和功能等方面。

存储系统是计算机体系结构中的重要组成部分,负责存储和管理系统的数据和程序。

本文将介绍计算机体系结构存储系统的认识与理解,并探讨其重要性和实现方法。

一、计算机体系结构存储系统的认识与理解计算机存储系统是指为计算机提供存储数据和程序的地方,通常包括主存储器、辅助存储器和输入输出设备等组成部分。

其中,主存储器是计算机中最重要的存储系统之一,用于存储计算机程序和数据。

主存储器通常分为三种类型:随机访问存储器(RAM)、只读存储器(ROM)和闪存。

RAM是随机访问的存储器,可以在任何时候进行读写操作,但是其容量有限。

ROM是一种只读存储器,只能读取其编程内容,因此其容量非常大,但不可修改。

闪存是一种非易失性存储器,具有快速读写速度和大容量等优点,但是较为昂贵。

辅助存储器包括外置存储器和内置存储器。

外置存储器通常包括硬盘、软盘、USB存储器等,用于存储临时数据和文件。

内置存储器则包括内存、EEPROM、FRAM等,用于存储系统配置文件、程序代码等。

输入输出设备用于将数据和程序传输到计算机外部,例如显示器、键盘、鼠标等。

计算机存储系统的重要性不言而喻。

存储系统的配置和优化对计算机的性能、可靠性和安全性都有着重要的影响。

合理的存储系统可以提高计算机的运行效率,减少存储空间的占用,提高数据传输速度,降低系统出错率。

二、计算机体系结构存储系统的实现方法计算机体系结构存储系统的实现方法可以分为以下几种:1. 基于硬件的存储系统:这种存储系统直接将存储芯片嵌入到计算机系统中,通过硬件连接实现数据的存储和读取。

2. 基于软件的存储系统:这种存储系统使用操作系统提供的软件存储功能,通过操作系统的存储管理功能实现数据的存储和读取。

3. 基于网络的存储系统:这种存储系统通过网络进行数据存储和传输,可以通过分布式存储技术实现数据的大容量存储和高效性访问。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

存储系统从其与生俱来的使命来说,就难以摆脱复杂系统的魔咒。

无论是从单机时代的文件系统,还是后来C/S或B/S结构下数据库这样的存储中间件兴起,还是如今炙手可热的云存储服务来说,存储都很复杂,而且是越来越复杂。

存储为什么会复杂,要从什么是存储谈起。

存储这个词非常平凡,存储+ 计算(操作)就构成了一个朴素的计算机模型。

简单来说,存储就是负责维持计算系统的状态的单元。

从维持状态的角度,我们会有最朴素的可靠性要求。

比如单机时代的文件系统,机器断电、程序故障、系统重启等常规的异常,文件系统必须可以正确地应对,甚至对于磁盘扇区损坏,文件系统也需要考虑尽量将损失降到最低。

对于大部分的业务程序而言,你只需要重点关注业务的正常分支流程就行,对于出乎意料的情况,通常只需抛出一个错误,告诉用户你不该这么玩。

但是对于存储系统,你需要花费绝大部分精力在各种异常情况的处理上,甚至你应该认为,这些庞杂的、多样的错误分支处理,才是存储系统的“正常业务逻辑”。

到了互联网时代,有了C/S或B/S结构,存储系统又有了新指标:可用性。

为了保证服务质量,那些用户看不见的服务器程序必须时时保持在线,最好做到逻辑上是不宕机的(可用性100%)。

服务器程序怎么才能做到高可用性?答案是存储中间件。

没有存储中间件,意味着所有的业务程序,都必须考虑每做一步就对状态进行持久化,以便自己挂掉后另一台服务器(或者自己重启后),知道之前工作到哪里了,接下去应该做些什么。

但是对状态进行持久化(也就是存储)会非常繁琐,如果每个业务都自己实现,负担无疑非常沉重。

但如果有了高可用的存储中间件,服务器端的业务程序就只需操作存储中间件来更新状态,通过同时启动多份业务程序的实例做互备和负载均衡,很容易实现业务逻辑上不宕机。

所以,数据库这样的存储中间件出现基本上是历史必然。

尽管数据库很通用,但它决不会是唯一的存储中间件。

比如业务中用到的富媒体(图片、音视频、Office文档等),我们很少会去存储到数据库中,更多的时候我们会把它们放在文件系统里。

但是单机时代诞生的文件系统,真的是最适合存储这些富媒体数据的么?不,文件系统需要改变,因为:1. 伸缩性。

单机文件系统的第一个问题是单机容量有限,在存储规模超过一台机器可管理的时候,应该怎么办。

2. 性能瓶颈。

通常,单机文件系统在文件数目达到临界点后,性能会快速下降。

在4TB的大容量磁盘越来越普及的今天,这个临界点相当容易到达。

3. 可靠性要求。

单机文件系统通常只是单副本的方案,但是今天单副本的存储早已无法满足业务的可靠性要求。

数据需要有冗余(比较经典的做法是3副本),并且在磁盘损坏时及早修复丢失的数据,以避免所有的副本损坏造成数据丢失。

4. 可用性要求。

单机文件系统通常只是单副本的方案,在该机器宕机后,数据就不可读取,也不可写入。

在分布式存储系统出现前,有一些基于单机文件系统的改良版本被一些应用采纳。

比如在单机文件系统上加RAID5 做数据冗余,来解决单机文件系统的可靠性问题。

假设RAID5 的数据修复时间是1天(实际上往往做不到,尤其是业务系统本身压力比较大的情况下,留给RAID 修复用的磁盘读写带宽很有限),这种方案单机的可靠性大概是100年丢失一次数据(即可靠性是2个9)。

看起来尚可?但是你得小心两种情况。

一种是你的集群规模变大,你仍然沿用这个土方法,比如你现在有100 台这样的机器,那么就会变成1年就丢失一次数据。

另一种情况是如果实际数据修复时间是3 天,那么单机的可靠性就直降至4年丢失一次数据,100台就会是15天丢失一次数据。

这个数字显然无法让人接受。

Google GFS 是很多人阅读的第一份分布式存储的论文,这篇论文奠定了3 副本在分布式存储系统里的地位。

随后Hadoop 参考此论文实现了开源版的GFS —— HDFS。

但关于Hadoop 的HDFS 实际上业界有不少误区。

GFS 的设计有很强的业务背景特征,本身是用来做搜索引擎的。

HDFS 更适合做日志存储和日志分析(数据挖掘),而不是存储海量的富媒体文件。

因为:1. HDFS 的block 大小为64M,如果文件不足64M 也会占用64M。

而富媒体文件大部分仍然很小,比如图片常规尺寸在100K 左右。

有人可能会说我可以调小block 的尺寸来适应,但这是不正确的做法,HDFS 的架构是为大文件而设计的,不可能简单通过调整block 大小就可以满足海量小文件存储的需求。

2. HDFS 是单Master 结构,这决定了它能够存储的元数据条目数有限,伸缩性存在问题。

当然作为大文件日志型存储,这个瓶颈会非常晚才遇到;但是如果作为海量小文件的存储,这个瓶颈很快就会碰上。

3. HDFS 仍然沿用文件系统的API 形式,比如它有目录这样的概念。

在分布式系统中维护文件系统的目录树结构,会遭遇诸多难题。

所以HDFS 想把Master 扩展为分布式的元数据集群并不容易。

分布式存储最容易处理的问题域还是单键值的存储,也就是所谓的Key-Value 存储。

只有一个Key,就意味着我们可以通过对Key 做Hash,或者对Key 做分区,都能够让请求快速定位到特定某一台存储机器上,从而转化为单机问题。

这也是为什么在数据库之后,会冒出来那么多NoSQL 数据库。

因为数据库和文件系统一样,最早都是单机的,在伸缩性、性能瓶颈(在单机数据量太大时)、可靠性、可用性上遇到了相同的麻烦。

NoSQL 数据库的名字其实并不恰当,他们更多的不是去SQL,而是去关系(我们知道数据库更完整的称呼是关系型数据库)。

有关系意味着有多个索引,也就是有多个Key,而这对数据库转为分布式存储系统来说非常不利。

七牛云存储的设计目标是针对海量小文件的存储,所以它对文件系统的第一个改变也是去关系,也就是去目录结构(有目录意味着有父子关系)。

所以七牛云存储不是文件系统(File System),而是键值存储(Key-Value Storage),用时髦点的话说是对象存储(Object Storage)。

不过七牛自己喜欢把它叫做资源存储(Resource Storage),因为它是用来存储静态资源文件的。

蛮多七牛云存储的新手会问,为什么我在七牛的API 中找不到创建目录这样的API,根本原因还是受文件系统这个经典存储系统的影响。

七牛云存储的第一个实现版本,从技术上来说是经典的3 副本的键值存储。

它由元数据集群和数据块集群组成。

每个文件被切成了4M 为单位的一个个数据块,各个数据块按3 副本做冗余。

但是作为云存储,它并不仅仅是一个分布式存储集群,它需要额外考虑:1. 网络问题,也就是文件的上传下载问题。

文件上传方面,我们得考虑在相对比较差的网络条件下(比如2G/3G网络)如何确保文件能够上传成功,大文件(七牛云存储的单文件大小理论极限是1TB)如何能够上传成功,如何能够更快上传。

文件下载加速方面,考虑到CDN 已经发展了10 多年的历史,非常成熟,我们决定基于CDN 来做下载加速。

2. 数据处理。

当用户文件托管到了七牛,那么针对文件内容的数据处理需求也会自然衍生。

比如我们第一个客户就给我们提了图片缩略图相关的需求。

在音视频内容越来越多的时候,自然就有了音视频转码的需求。

可以预见在Office文档多了后,也就会有Office 文档转换的需求。

所以从技术上来说,七牛云存储是这样的:七牛云存储= 分布式存储集群+ 上传加速网络(下载外包给CDN)+ 数据处理集群网络问题并不是七牛要解决的核心问题,只是我们要面对的现实困难。

所以在这个问题上如果能够有足够专业的供应商,能够外包我们会尽可能外包。

而分布式存储集群的演进和优化,才是我们最核心的事情。

早在2012 年2 月,我们就启动了新一代基于纠删码算术冗余的存储系统的研发。

新存储系统的关注焦点在:1. 成本。

经典的3 副本存储系统虽然经典,但是代价也是高昂的,需要我们投入3 倍的存储成本。

那么有没有保证高可靠和高可用的前提下把成本做下来?2. 可靠性。

如何进一步提升存储系统的可靠性?答案是更高的容错能力(从允许同时损坏2块盘到允许同时损坏4块盘),更快的修复速度(从原先3小时修复一块坏盘到30分钟修复一块坏盘)。

3. 伸缩性。

如何从系统设计容量、IO吞吐能力、网络拓扑结构等角度,让系统能够支持EB级别的数据存储规模?关于伸缩性这个话题,涉及的点是全方位的,本文不展开讨论,后面我们另外独立探讨这个话题(让我们把焦点放在成本和可靠性上)。

在经过了四个大的版本迭代,七牛新一代云存储(v2)终于上线。

新存储的第一大亮点是引入了纠删码(EC)这样的算术冗余方案,而不再是经典的3 副本冗余方案。

我们的EC 采用的是28 + 4,也就是把文件切分为28 份,然后再根据这28 份数据计算出4 份冗余数据,最后把这32 份数据存储在32 台不同的机器上。

这样做的好处是既便宜,又提升了可靠性和可用性。

从成本角度,同样是要存储1PB 的数据,要买的存储服务器只需3 副本存储的36.5%,经济效益相当好。

从可靠性方面,以前3 副本只能允许同时损坏2块盘,现在能够允许同时损坏4块盘,直观来说这大大改善了可靠性(后面讨论可靠性的时候我们给出具体的数据)。

从可用性角度,以前能够接受2 台服务器下线,现在能够同时允许4 台服务器下线。

新存储的第二大亮点是修复速度,我们把单盘修复时间从 3 小时提升到了30 分钟以内。

修复时间同样对提升可靠性有着重要意义(后面讨论可靠性的时候我们给出具体的数据)。

这个原因是比较容易理解的。

假设我们的存储允许同时坏M 块盘而不丢失数据,那么集群可靠性,就是看在单位修复时间内,同时损坏M+1 块盘的概率。

例如,假设我们修复时间是3 小时,那么3 副本集群的可靠性就是看3 小时内同时损坏3 块盘的概率(也就是丢数据的概率)。

让我们回到存储系统最核心的指标——可靠性。

首先,可靠性和集群规模是相关的。

假设我们有1000 块磁盘的集群,对于3 副本存储系统来说,这1000 块盘同时坏3 块就会发生数据丢失,这个概率显然比3 块盘同时坏3 块要高很多。

基于这一点,有些人会想这样的土方法:那我要不把集群分为3 块磁盘一组互为镜像,1000 块盘就是333 组(不好意思多了1块,我们忽略这个细节),是不是可以提升可靠性?这些同学忽略了这样一些关键点:1. 3 块盘同时坏3 块盘(从而丢失数据)的概率为p,那么333 组这样的集群,丢失数据的概率是1-(1-p)^333 ≈ p * 333,而不是p。

2. 互为镜像的麻烦之处是修复速度存在瓶颈。

坏一块盘后你需要找一个新盘进行数据对拷,而一块大容量磁盘数据对拷的典型时间是15 小时(我们后面将给出15 小时同时坏3 块盘的概率)。

相关文档
最新文档