软件定义存储SDS

一、存储技术发展演变

1.DAS(开放系统的直连式存储,Direct-Attached Storage)

    直连式存储与服务器主机之间的连接通道通常采用SCSI连接,随着服务器CPU的处理能力越来越强,存储硬盘空间越来越大,阵列的硬盘数量越来越多,SCSI通道将会成为IO瓶颈;服务器主机SCSI ID资源有限,能够建立的SCSI通道连接有限。

大容量存储 RAID磁盘阵列 磁盘文件系统

2.NAS(网络附属存储,Network Attached Storage)

    它是一种专用数据存储服务器。它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者。目前国际著名的NAS企业有Netapp、EMC、OUO等。

优点:

① NAS产品是真正即插即用的产品。NAS设备一般支持多计算机平台,用户通过网络支持协议可进入相同的文档,因而NAS设备无需改造即可用于混合Unix/Windows NT局域网内。

② NAS设备的物理位置灵活。它们可放置在工作组内,靠近数据中心的应用服务器,或者也可放在其他地点,通过物理链路与网络连接起来。无需应用服务器的干预,NAS设备允许用户在网络上存取数据,这样既可减小CPU的开销,也能显著改善网络的性能。

缺点:

① NAS没有解决与文件服务器相关的一个关键性问题,即备份过程中的带宽消耗。NAS仍使用网络进行备份和恢复。NAS 的一个缺点是它将存储事务由并行SCSI连接转移到了网络上。

② 由于存储数据通过普通数据网络传输,因此易受网络上其它流量的影响。当网络上有其它大数据流量时会严重影响系统性能;由于存储数据通过普通数据网络传输,因此容易产生数据泄漏等安全问题;

③ 存储只能以文件方式访问,而不能像普通文件系统一样直接访问物理数据块,因此会在某些情况下严重影响系统效率,比如大型数据库就不能使用NAS。

数据共享 网络文件系统 NFS/CIFS/FTP

3.SAN(存储区域网络,Storage Area Network)

    SAN专注于企业级存储的特有问题。当前企业存储方案所遇到问题的两个根源是:数据与应用系统紧密结合所产生的结构性限制,以及小型计算机系统接口(SCSI)标准的限制。

    SAN采用网状通道(Fibre Channel ,简称FC,区别与Fiber Channel光纤通道)技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。

    SAN实际是一种专门为存储建立的独立于TCP/IP网络之外的专用网络。目前一般的SAN提供2Gb/S到4Gb/S的传输数率,同时SAN网络独立于数据网络存在,因此存取速度很快,另外SAN一般采用高端的RAID阵列。

目前常见的SAN有FC-SAN和IP-SAN,其中FC-SAN为通过光纤通道协议转发SCSI协议,IP-SAN通过TCP协议转发SCSI协议。

(1)SAN 和NAS的区别:

① SAN是一种网络,NAS产品是一个专有文件服务器或一个只读文件访问设备。

② SAN是在服务器和存储器之间用作I/O路径的专用网络。

③ SAN包括面向块(iSCSI)和面向文件(NAS)的存储产品。

④ NAS产品能通过SAN连接到存储设备

(2)优点:

① SAN提供了一种与现有LAN连接的简易方法,并且通过同一物理通道支持广泛使用的SCSI和IP协议。SAN不受现今主流的、基于SCSI存储结构的布局限制。特别重要的是,随着存储容量的爆炸性增长,SAN允许企业独立地增加它们的存储容量。

② SAN的结构允许任何服务器连接到任何存储阵列,这样不管数据置放在那里,服务器都可直接存取所需的数据。因为采用了光纤接口,SAN还具有更高的带宽。

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

(3)缺点:成本和复杂性,特别是在光纤信道中这些缺陷尤其明显。

存储区域网络   SAN文件系统 存储虚拟化

4.集群存储

Scale-Out扩展  分布式文件系统  非结构化数据

5.云存储

对象存储  DaaS数据即服务 S3/Swift RSET接口

6.融合存储

软件定义存储 标准通用硬件 Scale-Out扩展 计算存储融合

7.智能存储

机器/深度学习  智能存储  智能运维   智能应用

 

二、软件定义存储

 

  • SDS1.0分布式存储—— •数据存储 •以存储为中心  •存储创新技术
  • SDS 2.0 超融合存储——•数据管理 •以虚拟化为中心 •软件定义基础架构
  • SDS 3.0 智能存储—— •数据智能 •以智能为中心  •AI人工智能技术

1、SDS分类

(1)控制平面——负责数据的流向、调度,存储服务的调用,存储策略的设定和分发;

(2)数据平面——负责数据的处理、优化,存储功能的提供与实现;

 

  • 分离模式:计算资源和存储资源分开,存储服务器不运行应用程序
  • 融合模式:计算资源和存储资源在一起,存储服务器同时运行应用程序

2、OpenStack Cinder

(1)Cinder

 

  • Cinder是Openstack云平台中的块存储服务组件,只提供块存储服务,通过存储插件实现对存储资源的管理;
  • Cinder把块存储设备进行池化,并对终端用户提供自服务的HTTP API 去请求和使用存储资源。终端用户无需了解存储部署在哪里,也不需要知道是那种存储设备;
  • Cinder为虚拟机提供块存储,提供统一的API接口,屏蔽异构设备和产品。

Cinder、Swift、Ceph的区别:

① Cinder——软件定义存储控制器(SDS Controller),管理块存储资源,对外提供块存储服务;

② Swift——开源分布式存储系统,对外提供对象存储服务;

③ Ceph——开源分布式存储系统,具有多种接口,可以对外提供独享存储服务、块存储资源;

Cinder的自动化部署——Fuel

(2)Openstack

Openstack是一套开源软件,通过标准化的API接口来管理整个底层架构资源的一套平台,用来构建私有云和公有云。其非常适合异构的基础设施架构。

 

3、EMC ViPR——控制平面

ViPR Controller 是软件定义存储的控制平面,其从底层存储介质中抽象出存储控制路径用以负责管理数据存储的存储策略,而数据路径执行实际读取、写入和数据服务。

应用场景:存储自动化;作为存储私有云平台。

4、先智数据Federator SDS
5、飞康软件FreeStor
6、VMware VSAN

VSAN是一种基于软件的分布式存储解决方案,基于服务器端存储的共享分不是对象存储。

7、EMC ScaleIO

EMC ScaleIO 是一款软件,软件组件——ScaleIO 数据客户端(SDC)、ScaleIO 数据服务端(SDS)、元数据管理(MDM)

 

三、认识ceph

1、CEPH简介

Ceph 通过实现类POSIX接口的对象存储接口来构建底层通用的存储系统,上层通过堆叠不同存储标准(eg. POSIX,块接口和S3/Swift)来实现不同存储场景的应用。

 Ceph 存储集群至少需要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必须要有元数据服务器( Metadata Server )。

Monitor——主要负责群内的节点生命周期管理,数据分布策略计算并维护集群的成员和状态等工作,Monitor通过实现Paxos算法来提供强一致性的选举决策。

OSD——主要负责存储盘的生命周期管理,每一个Disk、SSD、或者RAID Group,任何一个物理存储设备都应成为一个OSD,其实现了对象数据的存储和查找,并且负责向该对象的负直接点分发和恢复,也是客户端IO的服务者,保证数据的完整性、高可靠性和恢复一致性。

若干个Monitor和OSD通过部署在服务器互联形成一个RADOS集群。

 

守护进程——守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。

 

  • Ceph OSDs: Ceph OSD 守护进程( Ceph OSD )的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD 守护进程的心跳来向 Ceph Monitors 提供一些监控信息。当 Ceph 存储集群设定为有2个副本时,至少需要2个 OSD 守护进程,集群才能达到 active+clean 状态( Ceph 默认有3个副本,但你可以调整副本数)。
  • Monitors: Ceph Monitor维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着发生在Monitors 、 OSD 和 PG上的每一次状态变更的历史信息(称为 epoch )。
  • MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使得 POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如 ls、find 等基本命令。

2、CEPH部署

 

  • LInux系统;
  • Ceph集群部署;
  • Bluestore——OSD存储后端,采用块设备提示存储性能;其直接管理裸设备(裸分区,是一种没有经过格式化,不被Unix通过文件系统来读取的特殊块设备文件),抛弃了本地文件系统;
  • Mds——创建mds工作目录,注册mds的密钥,启动mds进程;
  • 创建pool;
  • 创建ceph文件系统——一个ceph文件系统需要至少两个rados存储池,一个用于数据,一个用于元数据;
  • 把ceph FS挂载为FUSE;
  • 创建mgr的数据目录;

3、CephFS

CephFS——提供共享文件系统服务,兼容严格Posix语意实现传统文件服务。CephFS提供了一个额外的组件MDS(Meta Data Server),MDS本身并不会存储维护元数据,而是将所有元数据也像数据一样存储到RADOS集群中。使用MDS这样一个额外的组件去负责文件系统元数据访问,而不是直接内置到RADOS的OSD逻辑中,因为Posix语意本身是一个去中心化并且带状态的语意,大量的文件系统操作会涉及多文件、跨目录的原子性操作,此时需要相对去中心化的MDS来维护这个操作的事务性。

4、RADOS(Reliable Autonomous Distributed Objectstore)

(1)Rados数据分布计算

典型的分布式存系统一般采用元数据服务器中心化提供(缺点:在中心化集群视图后需要避免单点故障和元数据“瓶颈问题”)或者一致性哈希进行完全无中心化处理(缺点:缺少集群一致性视图,对于数据迁移和扩容会存在非常复杂并且很难保证强一致性的痛点)。因此,以上方式无法解决致力于提供PB级的集群存储能力的Ceph需要的自动故障恢复以及扩容和缩容的要求。

Monitor 作为Ceph的集群元数据服务维护了整个集群的视图信息,它包括了6个Map,分别是MONMap,OSDMap,PGMap,LogMap,AuthMap,MDSMap。

Ceph通过复杂的OSDMap灰度发布机制解决“雪崩效应”(在大规模集群下,OSDMap的震荡会导致Monitor压力你骤升,使得集群骤停)。

(2)Rados数据管理

Rados中的对象可以理解为由对象名、属性、数据和扩展数据组成的一个实体。对象是Ceph数据读写的基本单位,单个对象的操作可以有多个但须保证事务性。

5、PG

PG是一堆对象的集合,在控制平面,比如集群的数据迁移、控制指令下发、数据统计都是将PG作为最小粒度,对象在控制平面是不可见的。

在数据平面,所有客户端的数据读写都是对PG透明的,实际上在底层会发生对象到PG的映射,然后再计算PG的所属OSD再访问。

而pool 起到了逻辑隔离的作用。

6、备份与容灾

(1)备份

① RDB(Rados block device,块设备)增量备份机制——快照/已备份数据的差异

② 在Jewel出现的集群间针对卷的镜像复制机制

 

四、闪存存储与SDS

闪存属于非易失性存储,但是属于不可靠介质;

闪存写操作的最小单位失page,大小是4KB或者8KB;

闪存不能覆盖写,需要擦除后才能再次存储信息,故闪存具有先擦后写的特性;

闪存存储在SDS中主要的作用是提供高性能的IO能力,主要有两种方式:作为缓存使用;将闪存存储直接作为数据存储设备来使用。

 

五、其它

(1)心跳机制

发送方按照一定规则(周期性发送、空闲发送等等)向接收方发送固定格式的消息,接受方收到消息后回复一个固定格式的消息,如果长时间没有收到,比如心跳周期的3倍,则认为当前连接失效,将其断开。 

注:发送方可以是客户端或者服务端,根据实际情况而定,常见是客户端作为发送方。

应用场景——判断长连接是否存活:当长连接没有流量时,无法判断是通信异常引起还是通信正常没有业务流量引起,通过发送心跳包进行判断。

实现技术

方式一:应用层实现心跳机制(推荐)

 

  • 优点:实现策略灵活,能及时检测到连接状态; 
  • 缺点:每个应用都需要有一套,无法底层共用;

方式二:利用TCP的KeepAlive机制

    TCP协议本身提供了心跳机制,需要通过SO_KEEPALIVE开启。默认情况下,当连 接空闲2小时后,每隔75s发送一次心跳包,如果连续9次没有收到响应则关闭连接。 

 

  • 优点:不需要二次开发,简单配置参数即可; 
  • 缺点:网络环境的复杂性使得KeepAlive机制容易失效;

(2)Crush算法——PG到OSD的映射过程

    ceph设计了CRUSH(一个可扩展的伪随机数据分布算法),用在分布式对象存储系统上,可以有效映射数据对象到存储设备上(不需要中心设备)。因为大型系统的结构式动态变化的,CRUSH能够处理存储设备的添加和移除,并最小化由于存储设备的的添加和移动而导致的数据迁移。它能够在层级结构的存储集群中有效的分布对象的副本。CRUSH需要cluster map(描述存储集群的层级结构)、和副本分布策略(rule)。

支持各种各样的数据安全机制,包括多方复制(镜像),RAID奇偶校验方案或者其他形式的校验码,以及混合方法(比如RAID-10)。

   CRUSH有两个关键优点:

 

  • 任何组件都可以独立计算出每个object所在的位置(去中心化)。
  • 只需要很少的元数据(cluster map),只要当删除添加设备时,这些元数据才需要改变。

(Pool,PG)→ OSD set的映射由四个因素决定:

 

  • CRUSH算法
  • OSD MAP:包含当前所有pool的状态和OSD的状态。
  • CRUSH MAP:包含当前磁盘、服务器、机架的层级结构。
  • CRUSH Rules:数据映射的策略。

(3)故障域

故障域指任何导致不能访问一个或多个 OSD 的故障,可以是主机上停止的进程、硬盘故障、操作系统崩溃、有问题的网卡、损坏的电源、断网、断电等等。规划硬件需求时,要在多个需求间寻求平衡点,像付出很多努力减少故障域带来的成本削减、隔离每个潜在故障域增加的成本。

(4)EC(Erasure Code)

副本策略和纠删码是存储领域常见的两种数据冗余技术。相比于副本策略,纠删码具有更高的磁盘利用率。 Reed-Solomon码是一种常见的纠删码。

多副本策略即将数据存储多个副本(一般是三副本,比如HDFS),当某个副本丢失时,可以通过其他副本复制回来。三副本的磁盘利用率为1/3。

纠删码技术主要是通过纠删码算法将原始的数据进行编码得到冗余,并将数据和冗余一并存储起来,以达到容错的目的。其基本思想是将n块原始的数据元素通过一定的计算,得到m块冗余元素(校验块)。对于这n+m块的元素,当其中任意的m块元素出错(包括原始数据和冗余数据)时,均可以通过对应的重构算法恢复出原来的n块数据。生成校验的过程被成为编码(encoding),恢复丢失数据块的过程被称为解码(decoding)。磁盘利用率为n/(n+m)。基于纠删码的方法与多副本方法相比具有冗余度低、磁盘利用率高等优点。

EC最常用的编码RS(k,m),k块数据块,编码为m块检验块,可以容忍任意m块丢失。为保证数据一致性,EC的写至少需要k块完成,才算写成功。

EC的缺点:恢复速度缓慢。

你可能感兴趣的:(测试开发)