1、存储类型

  • 块存储
    • 块存储在裸盘上划分逻辑卷,将逻辑卷格式化成任意文件系统。
    • 支持多种文件系统,传输速度快,提供硬件容错机制。
  • 文件存储
    • 在格式化的磁盘上存储文件。
    • 一般可提供网络共享功能,如NFS等。
  • 对象存储

    • 以灵活的对象为存储单元,元数据服务器提供快速并发寻址。
    • 实现读写速度快的同时支持网络共享,对象定义等功能。

      1、存储设备

      1.1、DAS直接附加存储

  • 直接附加存储与服务器直接通过磁盘接口连接,其他主机不能使用这个存储设备。提供块设备级别的服务。

  • IDE,SATA,SCSI,USB

    1.2、NAS网络附加存储

  • 存储设备通过网络拓扑结构添加到多个服务器节点上,可提供跨平台文件存储功能,提供文件系统级别的服务。

  • NFS,CIFS

    1.3、SAN存储区域网络

  • IP-SAN

    • IP-SAC由iSCSI卡存储组成,将SCSI协议封装在IP协议中,依托IP网络,不需要像SAN需要独立的存储网络。
  • FC-SAN

    • 通过光纤交换机组成专用的存储网络,提高传输带宽,拥有稳定可靠,技术成熟的特点。

      2、分布式存储

      分布式存储通过网络将大量的文件均匀分布到多个存储服务器上,分布式存储需要满足数据的一致性、可用性、分区容错性等要求。目前分布式存储有多重实现技术,如HDFS,GFS,Swift,Ceph等。其中HDFS/GFS属于文件存储,Swift属于对象存储,而Ceph支持块存储,文件存储和对象存储。

      2.1、HDFS

      一个HDFS集群主要由一个NameNode和多个DataNode组成,
  • NameNode:负责管理文件系统的名称空间以及对客户端文件的访问

  • DataNode:存储实际的数据。

存储时一个文件被分成一个或多个数据块后存储在一组DataNode上,NameNode执行文件系统的名称空间操作,如打开,关闭,重命名文件或目录,也负责确定数据块到DataNode节点的映射,DataNode在NameNode的统一调度下进行数据块的创建,删除和复制。
因此HDFS适用于大文件,大数据的处理,适合流文件访问,一次写入,多次读取,因为NameNode的局限性,不适合大量小文件的存储、并发写入和文件随机读取。会造成NameNode瓶颈。

2.2、GFS

一个GFS集群一般由一个Master、多个ChunkServer和多个Clients组成,在GFS中,文件被切分成若干个Chunk,每个Chunk在创建时,由Master分配,拥有唯一不变的标识,所有Chunk被存储在ChunkServer磁盘上,同时每个Chunk会被复制到多个ChunkServer。

  • GFS master元数据服务器:管理所有文件系统的元数据,包括命令空间(目录层级)、访问控制信息、文件到chunk的映射关系,chunk的位置等。同时 master 还管理系统范围内的各种活动,包括chunk 创建、复制、数据迁移、垃圾回收等;
  • GFS chunksever存储节点:用于所有 chunk的存储。一个文件被分割为多个大小固定的chunk(默认64M),每个chunk有全局唯一的chunk ID。

GFS适合大文件应用场景,因其中心化架构的设计,只有一个Master处于active状态,因此也会造成Master瓶颈。

2.3、Ceph

  • Ceph是一种软件定义存储,是一个对象式存储系统,把每一个待管理的数据流切分成一个到多个固定大小的对象数据,并以其为原子单元完成数据存取。
  • Ceph相比其它分布式存储技术,其优势点在于:它不单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡。同时,由于采用了CRUSH、HASH等算法,使得它不存在传统的单点故障,且随着规模的扩大,性能并不会受到影响。

    2.3.1、功能

  • 存储和检索数据

  • 复制数据
  • 监控和报告集群健康状况
  • 动态重新分配数据(重新映射和回填)
  • 确保数据完整性(清理)
  • 检测故障并从中恢复