背景
本文主要对杨传辉(日照)《大规模分布式存储系统原理解析与架构实战》、大话存储、网络资源(具体参考文末链接)及个人理解进行整理,意在构建出存储发展基本轨迹和一些基本常识,让更多像我一样的初入者有个宏观上的认知。
存储发展史
从单机到互联网,存储作为的基础设施,主要发展都是围绕构建 低成本、高性能、可扩展、易用的目标进行演进,时至今日,在形态上存储分为单机存储、集中存储、分布式存储、云存储、云原生存储
各阶段存储的基本形态如下
各阶段基本形态
存储数据分类 & 模型
无论单机存储、分布式存储、云存储都是基于特定应用场景下,对指定数据类型构建对应的存储数据模型
数据分类
数据模型
存储类型
常见三种存储类型:块存储、文件存储、对象存储
块存储
基于Block块的存储模式,两种常见存储方式:
- DAS(Direct Attch Storage), 直连主机存储方式
- SAN (Storage Area Netowrk),高速网络链接主机存储方式
文件存储
依附网络提供文件存储服务
对象存储
构建于键值存储,核心是将数据通路(data)和控制通路(meta)分离,并且基于对象存储设备(Object-based Storage Device,OSD)构建存储系统,对外以RSETful API形式服务
单机存储
基本概念
单机存储系统是单机存储引擎(数据结构在机械磁盘、SSD等持久化介质上的实现)的一种封装,对外提供文件、键值、表格或者关系模型的存储服务。
存储引擎
存储引擎是存储系统的发动机,决定了存储系统能够提供的功能和性能, 提供功能包含:
- 增加(Create)
- 读取(Retrieve),随机读取和顺序扫描
- 更新(Update)
- 删除(Delete)
引擎间差异如下:
集中式存储
基本概念
集中式存储相对与单机存储而言,存储系统中包含了更多组件,除了机头(控制器)、磁盘阵列(JBOD)和交换机等设备外,还有管理设备等辅助设备。
参考:集中式存储的基本逻辑示意图
系统构成
- 机头,整个存储系统的核心部件,通常由控制器、前后端口组成,
- 控制器,通常有二,实现互备高可用,控制器中的软件实现对磁盘的管理,将磁盘抽象化为存储资源池,然后划分为LUN提供给服务器使用。
- 前后端口,前端端口用户为服务器提供存储服务,后端端口用于扩充存储系统的容量(连接更多的存储设备)
- 磁盘柜(Just a Bound Of Disk , JBOD),磁盘挂在服务器外的专用柜里,有独立电源、散热、接口等,内部线缆相连(SCSI),对机头后端端口统一挂载
分布式存储
基本概念
分布式存储系统,是将分散独立的存储设备通过网络互联,系统关联,对外作为一个整体提供存储服务。
系统分类
- 分布式文件系统
- 分布式键值系统
- 分布式表格系统
- 分布式数据库
云存储
基本概念
云存储,是一种云计算领域存储服务方式,底层构建在分布式存储基础之上,上层通过Internet形式提供存储服务,除具备分布式存储基础特性外,更兼具灵活性,通常由云厂商提供
参考产品
云原生存储
基本概念
云原生存储脱胎于云存储,除具备云存储的特性外、须满足具备云原生生态系统中其他所有组件具备相同的动态(公共云/专有云/混合云等场景)构建可扩展应用、S3 API 驱动、K8S油耗等
参考示例
Rook
CNCF首个云原生存储项目Rook,是将文件、数据块和对象存储系统引入到Kubernetes集群,与其他正在使用存储的应用程序和服务一起无缝运行。通过这种方式,云原生集群可以在公有云和本地部署中自给自足并且具备可移植性。该项目的开发目的是使企业能够通过动态应用编排,为在本地和公有云环境中运行的分布式存储系统实现数据中心现代化。
Rook Architecure
Ceph Rook integrates with Kubernetes
MinIO
MinIO是一款高性能、软件定义的,对象存储套件,帮助客户构建云原生数据基础设施。可与 Kubernetes 集成,允许操作员使用 Kubernetes 界面管理存储,而 Kubernetes 可以处理从存储提供到卷放置的所有事务。
本文为阿里云原创内容,未经允许不得转载。