790 likes | 1.28k Views
云存储技术和应用. 提纲. 存储发展历史 云存储概念和技术 云存储应用. 存储的发展历史. 直连存储 DAS 存储区域网络 SAN 网络附着存储 NAS 对象存储设备 OSD. 存储发展历史 - 直连存储 DAS. Direct-Attached Storage 概念:存储设备是通过电缆(通常是 SCSI 接口)直接到服务器的, I/O (输入 / 输入)请求直接发送到存储设备。. 存储发展历史 - 直连存储 DAS. Direct-Attached Storage 备份和恢复:占用服务器资源,数据量越大,备份和恢复的时间就越长
E N D
提纲 • 存储发展历史 • 云存储概念和技术 • 云存储应用
存储的发展历史 • 直连存储DAS • 存储区域网络SAN • 网络附着存储NAS • 对象存储设备OSD
存储发展历史-直连存储DAS • Direct-Attached Storage • 概念:存储设备是通过电缆(通常是SCSI接口)直接到服务器的,I/O(输入/输入)请求直接发送到存储设备。
存储发展历史-直连存储DAS • Direct-Attached Storage • 备份和恢复:占用服务器资源,数据量越大,备份和恢复的时间就越长 • CPU发展速度比存储发展速度快,磁盘阵列容量增大,IO成为瓶颈 • 服务器或磁盘阵列扩展都需要停业务,电信和银行无法忍受 • 服务器SCSI插槽数量有限,存储资源和数据无法服务器之间共享
存储发展历史-存储区域网络SAN • Storage Area Network • 概念: SAN的概念是允许存储设备和CPU(服务器)之间建立直接的高速网络(与LAN相比)连接,通过这种连接实现只受光纤线路长度限制的集中式存储。 • 光纤交换机
存储发展历史-存储区域网络SAN • Storage Area Network • 独立于服务器网络的高速光纤存储网,适合大数据高速处理 • 存储资源全局多主机动态共享 • 备份与恢复:不需要服务器参与 • IO带宽:多个服务器可以并行访问统一存储设备 • 在线升级:在线增加服务器或存储设备 • 扩展性:光纤交换机提供很多接口,也可以连接其他交换机
存储发展历史-网络附着存储NAS • Network Attached Storage • 概念NAS由SUN公司在上个世纪80年代中期推出NFS开始,是一种面向用户提供文件级服务的专用数据存储设备,存储系统不再通过I/O总线附属于某个特定的服务器或客户机,而是直接通过网络接口与网络直接相连,由用户通过网络访问。
存储发展历史-网络附着存储NAS • Network Attached Storage • 容易部署:不需要依赖任何其他设备,只要有一个网络端口就可以在任何能上网的设备上使用 • 易于使用:文件接相对块接口更容易使用 • 文件共享:方便多个主机共享数据 • 长距离传输:基于IP网络 • 易于扩展:简单的增加NAS设备到网络中即可 • 低成本:相对SAN价格便宜
存储发展历史-文件访问 文件的Inode包含多个块,为了提高大文件操作效率还会将两个或三个块组合起来提供访问。
存储发展历史-本地文件系统 文件/目录管理 10%工作量 块管理90%工作量
存储发展历史-分布式文件系统 通过NFS/CIFS接口访问
存储发展历史-对象存储设备OSD CPU Applications System Call Interface CPU File System User Component Applications System Call Interface File System User Component File System Storage Component File System Storage Component Block I/O Manager Block I/O Manager Storage Device Storage Device Object Interface Block Interface • SCSI
存储发展历史-对象存储设备OSD Access Request DATA SECRET KEY Validate Capability SECRET KEY SECRET KEY Client SAN Eth switch Managers MANAGEMENT Object-based Storage Devices
存储发展历史-对象存储vs文件存储 • 存储自治: • 容量扩展 • 负载均衡 • 备份 • QoS、SLA • 感知和数据分组 • 预取 • 压缩/去冗余 • 强安全/加密 • Compliance、Retention、secure delete • 可用性、副本 • 自治愈
存储发展历史-对象定义 • 对象的定义 • ObjectID:对象唯一标示 • UserData:对象的数据 • Metadata:元数据,空间管理信息 • Attributes:对象属性
提纲 • 存储发展历史 • 云存储概念和技术 • 云存储应用
云存储需求 2011年全球数据量将达1.8ZB,这人类将开始进入ZB时代
云存储需求 • 高容量:海量,且可扩展 • 高性能:快速的访问、定位 • 高可用:个别磁盘失效,甚至整个中心被毁 • 低成本:传统的NAS、SAN技术构建大规模存储系统成本很高
云存储概念和特点 • 云存储是在云计算(cloud computing)概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。 • 高可用、可扩展、按需付费
云存储有哪些? Google Cloud Amazon Cloud Microsoft Azure IBM Blue Cloud Google File System S3 Live Services Hadoop BigTable SimpleDB SQL Services DB2 Google App Engine EC2 .NET Services Xen & PowerVM MapReduce Simple Queue Sharepoint Services Websphere EBS Dynamic CRM Services Tivoli Software
云存储的热点 • 分布式文件系统(GoogleGFS、HadoopHDFS。。) • NoSQL数据库(GoogleBigTable、FacebookCassandra。。) • 对象存储(AmazonS3) • 分布式块存储(AmazonEBS)
分布式文件系统应用场景 • Google: • 搜索、AppEngine、Gmail、Youtube、Map。。 • Baidu: • HadoopHDFS搜索、数据分析 • Taobao: • TFS存储图片网页 • HadoopHDFS数据分析
GFS-需求分析 • 组件失效是常态 • 文件规模一般都在几个G以上 • Write once read many负载模型 • 文件写入后,基本不需要重写操作 • 文件被大量地连续读操作,随机读很少发生 • 允许大量客户端并行追加写同一个文件,追加写操作必须是原子操作 • 对海量数据处理来说,带宽是稀缺资源
GFS-接口(API) • 提供文件系统接口 • 非标准的POSIX API • 仅仅提供几种最基本的操作–create, delete, open, close, read, write • 利用写时拷贝( copy-on-write)技术实现快照功能
GFS-体系结构 • 文件被切割成固定大小的块(Chunk) • 一个主Master,多个Shadow Master • 多个Chunkserver • 多client
GFS- Master设计 • 主master • 将所有元数据保存在内存中,实现快速访问 • 同时提供chunk令牌管理、孤立块垃圾回收、块迁移、副本管理功能 • 定期与chunkserver发送心跳消息,收集chunkserver状态 • 任何对元数据的写操作都会保存到日志中 • 元数据在一段时间内会缓存在clients中 • Shadow masters • Master的状态(checkpoint和log)会定期复制到shadow masters中,以保证系统的可靠性。 • 当master失效后,系统会尝试从shadow master中读取checkpoint和log进行数据恢复,恢复周期一般为秒级 • 即使master失效,shadow也能提供文件的只读访问。
GFS- ChunkServer设计 • 在linux系统中以实体文件存放chunk • 默认放置3个chunk副本,2个在同一个机架的不同机器,1个在另外的机架 • 平衡访问负载 • 平衡存储空间 • 提供可用性和可靠性 • 块数据不缓存 • 块大小为64MB • 减少元数据,每chunk对应64Bytes元数据,2P数据需要2G内存 • 减少网络开销,因为client往往对一个chunk进行多次操作,所以chunkserver可以在一段时间之类保持住一个client和chunkserver之间的TCP连接 • 小文件容易形成访问热点,解决方案:为小文件准备更多的副本
GFS- client设计 • client是一组供上层应用调用文件系统的API,它向master请求元数据,向client请求数据 • client在有限时间内缓存元数据 • client不缓存数据,因为用户请求的数据往往很大或者是流式写操作,缓存没有意义
AmazonS3 • 概念 • 数据模型 • 接口
对象存储(应用场景) • Amazon S3 • Facebookhystack • 盛大云分布式key-value存储 • 各种媒体文件,如图片,音乐,视频等等; • 最终用户数据的存储,比如文档,数据表格,数据文件等; • 数据备份和存档,如交易数据,log数据,用户访问的数据等; • 阿里云 • 基于OSS,用户可以搭建出各种多媒体分享网站、网盘、个人企业数据备份等基于大规模数据的服务。 • 开通赠送5GB空间,按使用付费。 • 提供类S3RESTAPI接
S3存储的发展 1020 数据来源:http://www.snia.org
S3简介 • S3(Simple Storage Service)是Amazon推出的简单存储服务,它提供简单的Web服务接口,随时随地地在网络上存取数据, 使得开发人员进行网络规模的计算更容易 • S3基于高扩展性、可靠、快速、廉价的数据存储基础设施运行它自己的全球站点网络
容器 容器 容器 容器 • S3数据模型 • 对象Objects • 存储数据的基本实体,包含 对象数据部分和元数据部分 • 桶Buckets • 容器是对象的集合,容器可以包含子容器 • 一个容器可以包含多个对象和子容器 • 关键字Keys • 桶或对象的唯一标识 • 示例:访问容器photos下的对象family.jpg: • http://www.amazon.com/webdisk/photos/family.jpg 对象存储 客户端 对象存储 客户端 对象存储 客户端 HTTP RESTfulRequest&Response 数据对象 容器 云存储
Objects • 对象是存储在 Amazon S3上的基本实体,这一实体包含对象数据部分和元数据部分 • 元数据是一套描述对象名-值(name-value)对。元数据包括一些默认的元数据和标准HTTP元数据,如:最后一次修改时间和内容类型等,开发人员可以在对象存储时指定自定义的元数据
Buckets • 一个桶就是一个存储在Amazon S3上的对象的容器, 每个对象都包含在一个桶内。 • 一个桶的所有权属于创建它的AWS帐户。每个AWS帐户能一次拥有多达100个桶,桶的所有权不可转移。但是,如果一个桶是空的,它可以被删除并且名字可以重新使用。 • 一个桶中存储对象的数量没有限制而且使用多少个桶性能并没有变化。你可以把你所有的对象都存在一个桶中也可以把他们安排在多个桶中。 • 桶不能嵌套,也就是说,不能在桶中创建桶。 例如: 如果名为photos/puppy.jpg的对象存储在johnsmith桶中,那么可以用http://johnsmith.s3.amazonaws.com/photos/puppy.jpg来访问它.
Keys • 一个关键字是一个对象在一个桶中的唯一标识符。每一个Amazon S3中的对象都可以通过服务端点、桶名和关键字的组合唯一地找到 例如: 在 http://doc.s3.amazonaws.com/2006-03-01/AmazonS3.wsdl中, “doc”是一个桶名,"2006-03-01/AmazonS3.wsdl"是一个关键字
S3接口:RESTfulAPI • HTTP协议不仅仅可以用来进行网络传输,而且可以用以下几种API来实现所有的Web操作 • PUT = "here's some new info" (Create) • GET = "give me some info" (Retrieve) • POST = "here's some update info" (Update) • DELETE = "delete some info" (Delete) • HTTP API符合CRUD (Create, Retrieve, Update, and Delete)原则
REST GET示例 GET /Nelson HTTP/1.1 Host: quotes.s3.amazonaws.com Date: Wed, 01 Jun 2010 12:00:00 GMT Authorization: AWS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE= Request HTTP/1.1 200 OK x-amz-id-2: j5ULAWpFbJQJpukUsZ4tfXVOjVZExLtEyNTvY5fe+hHIegsN5p578JLTVpkFrpLx-amz-request-id: BE39A20848A0D52B Date: Wed, 01 Jun 2010 12:00:00 GMT x-amz-meta-family: Muntz Last-Modified: Sun, 1 Jan 2010 12:00:00 GMTE Tag: "828ef3fdfa96f00ad9f27c383fc9ac7f“ Content-Type: text/plain Content-Length: 5 Connection: close Server: AmazonS3 ha-ha Response
NOSQL数据库 • 概念 • Key-value • Column • Document • Graphy
What is NoSQL? • NoSQL=Non relational或者Not only SQL • NoSQL是相对于RDBMS的,具有以下特征 • 非关系 • 分布式 • 开源 • 水平扩展 • schema-free • easy replication support • simple API • 最终一致性 • 支持海量数据(Huge Data) • 不支持ACID • NoSQL于2009年发展迅速(http://nosql-database.org)
Why NoSQL? • web2.0时代,数据量激增,对数据库技术提出了新的需求: • High performance —— 对数据库高并发读写的需求 • Huge Storage —— 对海量数据的高效率存储和访问的需求 • High Scalability && High Availability —— 对数据库的高可扩展性和高可用性的需求 • Low cost —— 对数据库低成本的需求 • 传统RDBMS无法满足,而一些关系特性无用武之地却严重限制了性能: • 数据库事务一致性 • 数据库的写实时性和读实时性 • 复杂的SQL查询,特别是多表关联查询 • NoSQL放弃关系模型,弱化RDBMS一些非必要功能,提高扩展性、可用性,实现海量存储