云计算原理与实践PrinciplesandPracticeofCloudComputingOutline•5.1分布式存储的基础•5.2文件存储•5.3从单机存储系统到分布式存储系统•5.4实践:分布式存储系统Ceph5.1分布式存储的基础5.1.1基本概念5.1.2分布式存储分类5.1.3分布式存储的发展历史5.1.1基本概念•分布式存储系统的定义:分布式存储系统是将为数众多的普通计算机或服务器通过网络进行连接,同时对外提供一个整体的存储服务。•分布式存储系统包括以下几个特性:–高性能–可扩展–低成本–易用性•分布式存储系统的技术挑战包括:数据和状态信息的持久化、数据的自动迁移、系统的自动容错、并发读写的数据的一致性等方面。5.1.2分布式存储分类•分布式存储面临的应用场景和数据需求都比较复杂,根据数据类型,可以将其分为非结构化数据、结构化数据、半结构化数据三类。•正因为数据类型的多样性,不同的分布式存储系统适合处理不同类型的数据,因此可以将分布式存储系统分为四类:1.分布式文件系统2.分布式键值(Key-Value)系统3.分布式表系统4.分布式数据库1.分布式文件系统•分布式文件系统存储三种类型的数据:Blob对象、定长块以及大文件。图5.1数据块与Blob对象、定长块、大文件之间的关系2分布式键值(Key-Value)系统•分布式键值系统用于存储关系简单的半结构化数据,它提供基于主键的CRUD(Create/Read/Update/Delete)功能,即根据主键创建、读取、更新或者删除一条键值记录。典型的系统有AmazonDynamo。•分布式键值系统是分布式表系统的一种简化,一般用作缓存,比如Memcache。•从数据结构的角度看,分布式键值系统支持将数据分布到集群中的多个存储节点。•一致性散列是分布式键值系统中常用的数据分布技术,由于在众多系统中被采用而变得非常有名。3分布式表系统•分布式表系统主要用于存储半结构化数据。•与分布式键值系统相比,分布式表系统不仅仅支持简单的CRUD操作,而且支持扫描某个主键范围。•分布式表系统以表格为单位组织数据,每个表格包括很多行,通过主键标识一行,支持根据主键的CRUD功能以及范围查找功能。•典型的分布式表系统包括GoogleBigtable、MicrosoftAzureTableStorage、AmazonDynamoDB等。4分布式数据库•分布式数据库是从传统的基于单机的关系型数据库扩展而来,用于存储大规模的结构化数据。•分布式数据库采用二维表格组织数据,提供经典的SQL关系查询语言,支持嵌套子查询、多表关联等复杂操作,并提供数据库事务以及并发控制。•关系数据库是目前为止最为成熟的存储技术,功能丰富,有完善的商业关系数据库软件的支持。•随着大数据时代的到来,为了解决关系数据库面临的可扩展性、高并发以及性能方面的问题,各种各样的非关系数据库不断涌现,这类被称为NoSQL的系统,可以理解为“NotOnlySQL”的含义。图5.2分布式文件系统的发展5.1.3分布式存储的发展历史1.20世纪80年代的代表:AFS、NFS、Coda(1)AFS:1983年CMU和IBM共同合作开发了Andrew文件系统(AndrewFileSystem,AFS)(2)NFS:1985年,Sun公司基于UDP开发了网络共享文件系统(NetworkFileSystem,NFS)(3)Coda:1987年,CMU在基于AFS的基础上开发了Coda文件系统5.1.3分布式存储的发展历史2.20世纪90年代的代表:XFS、TigerShark、SFS5.1.3分布式存储的发展历史XFS:加州大学伯克利分校(UCBerkeley)开发了XFS文件系统,克服了以往分布式文件系统只适用于局域网而不适用于广域网和大数据存储的问题,提出了广域网进行缓存较少网络流量设计思想,采用层次命名结构,减少Cache一致性状态和无效写回Cache一致性协议,从而减少了网络负载,在当时获得了一定的成功。3.20世纪末的代表:(1)SAN(StorageAreaNetwork)(2)NAS(NetworkAttachedStorage)(3)GPFS(GeneralParallelFileSystem)(4)GFS(GoogleFileSystem)(5)HDFS(HadoopDistributedFileSystem)5.1.3分布式存储的发展历史(1)SAN(StorageAreaNetwork)•通过将磁盘存储系统和服务器直接相连的方式提供一个易扩展、高可靠的存储环境,高可靠的光纤通道交换机和光纤通道网络协议保证各个设备间链接的可靠性和高效性。设备间的连接接口主要是采用FC或者SCSI。图5.3SAN网络结构(2)NAS(NetworkAttachedStorage)•通过基于TCP/IP的各种上层应用在各工作站和服务器之间进行文件访问,直接在工作站客户端和NAS文件共享设备之间建立连接,NAS隐藏了文件系统的底层实现,注重上层的文件服务实现,具有良好的扩展性图5.4NAS存储网络结构(3)GPFS(GeneralParallelFileSystem)•GPFS是IBM公司开发的共享文件系统,起源于IBMSP系统上使用的虚拟共享磁盘技术。•GPFS是一个并行的磁盘文件系统,它保证在资源组内的所有节点可以并行访问整个文件系统。•GPFS允许客户共享文件,而这些文件可能分布在不同节点的不同硬盘上。它同时还提供了许多标准的UNIX文件系统接口,允许应用不需修改或者重新编辑就可以在其上运行。(4)GFS(GoogleFileSystem)图5.5GFS架构图(5)HDFS(HadoopDistributedFileSystem)图5.6HDFS总体结构示意图4.21世纪的代表:Cassandra、HBase、MongoDB、DynamoDB(1)Cassandra:是一套开源分布式NoSQL数据库系统,最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与AmazonDynamo的完全分布式的架构于一身。(2)HBase:列存储数据库,擅长以列为单位读取数据,面向列存储的数据库具有高扩展性,即使数据大量增加也不会降低相应的处理速度,特别是写入速度。5.1.3分布式存储的发展历史4.21世纪的代表:Cassandra、HBase、MongoDB、DynamoDB(3)MongoDB:文档型数据库同键值(Key-Value)型的数据库类似,是键值型数据库的升级版,允许嵌套键值,Value值是结构化数据,数据库可以理解Value的内容,提供复杂的查询,类似于RDBMS的查询条件。(4)DynamoDB:Amazon公司的一个分布式存储引擎,是一个经典的分布式Key-Value存储系统,具备去中心化、高可用性、高扩展性的特点。5.1.3分布式存储的发展历史5.2文件存储5.2.1单机文件系统5.2.2网络文件系统5.2.3并行文件系统5.2.4分布式文件系统5.2.5高通量文件系统5.2.1单机文件系统•现代文件系统的起源要追溯到分时操作系统时期。1965年,在Multics操作系统中首次提出使用树型结构来组织文件、目录以及访问控制的思想。这些思想被后来的UNIX文件系统(1973年)所借鉴。从结构上看,它包括四个模块:引导块、超级块、索引节点和数据块。•为解决UNIX文件系统I/O性能低的问题,先后出现了1984年的快速文件系统(FastFileSystem,FFS)和1992年的日志结构文件系统(Log-StructuredFile,LFS)。•20世纪90年代至今,出现了很多单机文件系统。包括SGI公司于1994年发布的XFS,以及Sun公司于2004年发布的ZFS。5.2.2网络文件系统•NFS(NetworkFileSystem,网络文件系统)由Sun公司在1984年开发,被认为是第一个广泛应用的现代网络文件系统。NFS的设计目标是提供跨平台的文件共享系统。由于NFS的实现和设计思想都相对简单,该协议很快被纳入到RFC标准,并开始大量应用。然而,NFS单一服务器的结构也决定了它的扩展性有限。•AFS(AndrewFileSystem)是美国卡耐基·梅隆大学1982年开发的分布式文件系统。其设计目标是支持5000~10000个节点的集群,扩展性是首要考虑的因素。与NFS等系统不同的是,AFS中有多个服务器,整个命名空间被静态地划分到各个服务器上,因此,AFS具有更好的扩展性。5.2.3并行文件系统•早期的并行文件系统有BFS(BridgeFileSystem)和CFS(ConcurrentFileSystem)等。它们运行在MPP(MassivelyParallelProcessing,MPP)结构的超级计算机上。。•20世纪90年代中期,开源的Linux操作系统逐渐成熟并得到广泛使用,为了能在越来越多的Linux集群上运行,出现了以PVFS和Lustr为代表的Linux集群上的并行文件系统。它们吸收了MPP并行文件系统的很多思想,包括采用一个专门的元数据服务器来维护和管理文件系统的命名空间,以及将文件数据条带化并分散存储在所有的存储服务器上等。5.2.4分布式文件系统•20世纪90年代后期,随着互联网的发展,出现了搜索引擎这样的海量文本数据检索工具。搜索引擎需要高吞吐率、低成本、高可靠的系统,而非高峰值处理性能的系统。于是产生了以谷歌的GoogleFileSystem(GFS)、MapReduce为代表的新型数据处理架构。•GFS的底层平台是大规模(数千台到数万台)的、廉价的、可靠性较低的PC集群,存储设备是集群中每个节点上的多块IDE磁盘•谷歌架构被互联网企业广泛采用,现在流行的Hadoop就是GFS和MapReduce的一种开源实现,被很多企业采用。5.2.5高通量文件系统•高通量文件系统是为大型数据中心设计的文件系统,它将数据中心中大量低成本的存储资源有效地组织起来,服务于上层多种应用的数据存储需求和数据访问需求。•随着云计算技术的发展,数据中心的数据存储需求逐渐成为数据存储技术和文件系统发展的主要驱动力,高通量文件系统将成为一种重要的文件系统。•大型数据中心在数据存储和数据访问方面有着与先前的应用非常不同的需求特征,主要包括:数据量庞大、访问的并发度高、文件数量巨大、数据访问语义和访问接口不同于传统的文件系统、数据共享与数据安全的保障越来越重要等。表5.1文件系统的发展脉络阶段产生的技术背景负载特征典型代表主要的创新技术性能评价标准单机文件系统分时操作系统多用户共享磁盘多用户并发访问多进程并发访问UnixFSFFSLFSJFSWAFLXFSZFS树型目录结构索引节点(i-node)流式访问接口柱面组元数据修改日志B+树组织写时复制存储池I/O请求响应时间聚合I/O带宽网络文件系统局域网TCPP/IP协议RAIDFC网络多客户端共享访问多用户共享访问NFSAFSNASSAN文件系统XDRRPCVFS无状态服务器多服务器结构聚合I/O带宽并行文件系统MPP超级计算机高性能互连网络并行编程一个作业的多任务对同一文件不现位置的并行访问一个I/O请求的并行处理ConcurrentFileSystemVestaPVFSLustre文件的条带化存储并行I/O接口元数据管理与数据存储分离并行I/O带宽分布式文件系统搜索引擎互联网服务Google架构大规模PC集群数千万在线并发访问数万并发大粒度访问GoogleFSHDFSHaystackTFS非POSIX接口和语义集中管理、分散存储全内存元数据处理多个复本I/O请求响应时间并发访问吞吐率聚合I/O带宽5.3从单机存储系统到分布式存储系统5.3.1单机存储系统5.3.2分布式存储系统5.3.1单机存储系统1.硬件基础•简单来说,单机存储就是散列表、B树等数据结构在机械硬盘、SSD等持久化介质上的实现。单机存储系统的理论来源于关系数据