持久化存储发展目标:
单位体积的存储密度
存储容量
读写速度
存储成本
1.磁带
可提供高容量、高可靠(没有机械部件不易损坏)、可管理性,成本低廉。长期做为唯一数据备份(冷存储)首选。
2.磁盘
1956年第一款硬盘诞生,1吨,容量5M。2016年希捷推出10T机械硬盘,主要面向云存储数据中心。
3.磁盘阵列
磁盘的容量和I/O发展速度(每年7%),远远低于CPU发展速度(每年30%-50%)。为平衡磁盘效能和CPU运算能力,出现了磁盘阵列RAID,主要体现在两个方面:
(1)通过条带化提供I/O性能
(2)通过数据校验提供容错功能
4.DAS(Direct-attached Storage) 直连存储
DAS技术是最早被采用的存储技术,如同PC机的结构,是把外部的数据存储设备都直接挂在服务器内部的总线上,数据存储设备是服务器结构一部分。
无论直连式存储还是服务器主机的扩展,都会造成业务系统的停机。
5.SAN(Storage Area Network) 存储区域网络——是一个网络上的磁盘
通过光纤通道交换机连接存储阵列和服务器主机,最后成为一个专用存储网络。FC SAN(光纤)和IP SAN(以太网)。
6.NAS(Network Attached Storage) 网络附加存储——是一个网络上的文件系统
存储设备通过标准的网络拓扑结构(以太网)添加到一群计算机上,是一个独立的文件服务器。普通客户机也能充当NAS,需满足如下条件:
(1)NAS必须能访问卷或物理磁盘
(2)NAS必须有接入以太网能力,必须有以太网卡
NAS和SAN存储系统的区别就是NAS有自已的文件管理系统。
磁盘、磁盘阵列、DAS、SAN都属于块级存储设备,即它们是面向服务器提供物理存储块的读写指令。而NAS是面向高级用户提供文件读写服务(写入和读取二进制)。
7.经典网络文件系统NFS
最早的分布式文件系统,定位和目标是小型网络文件系统。NFS允许一个系统通过网络共享目录和文件,用户和程序可以像访问本地文件一样访问远端系统上的文件。
(1)基本架构
VFS(虚拟文件系统):NFS与Linux无缝对接,因为Linux内核层面设计的一套虚拟文件系统VFS(visual file system),所有文件系统必须实现对应的VFS,才能成为操作系统支持的文件系统。
RPC(远程过程调用):接口实现在远端服务器上(如文件内容存储、读取、磁盘空间管理等),服务器通过某种网络协议向用户暴露所实现的接口(可以在另一台机器上)。
RPC执行过程简述如下:用户程序调用某RPC接口,本地RPC运行时库负责解析、打包RPC接口名,参数类型及参数值;并将打包封装好的数据包通过网络传送到远端服务器。服务器端的RPC运行时库接受并解析数据包,调用服务器端的RPC接口实现。调用结果按照相反的方向返回给用户程序。
假设用户针对一个NFS文件发起文件操作如read或write,相应的系统调用会通过VFS层传到NFS底层实现。NFS底层会将该文件操作通过RPC输送至远端NFS文件服务器。NFS文件服务器负责处理这个文件操作,并向用户返回操作结果。
(2)客户端
NFS核心思想:远程server的目录挂载到本地文件系统某个目录上。例如将192.168.1.100的/usr/local/test目录挂载到本机的/usr/local/test目录
mount –f nfs 192.168.1.100: /usr/local/test /usr/local/test
8.分布式文件系统GPFS
IBM的General Parallel File System(GPFS),是一种专门为群集环境设计的高性能、可扩展的并行分布式文件系统。GPFS可以在群集中的多个节点间实现对共享文件系统中文件的快速存取操作,并提供稳定的故障恢复和容错机制。
GPFS文件系统由三层架构组成:磁盘、网络共享磁盘(NSD)和GPFS文件设备,如下图所示:
(1)磁盘
GPFS文件系统最底层的是物理磁盘设备。原则上可以采用系统上任何块设备,包括磁盘,磁盘分区,逻辑卷。
从物理连接上来看,GPFS支持使用所有方式连接的磁盘。包括本地 IDE 磁盘,本地 SCSI 磁盘,光纤 SAN 磁盘,iSCSI 磁盘,等等。
(2)网络共享磁盘(NSD)
NSD 是由磁盘映射出来的虚拟设备,NSD 与磁盘是一一对应的关系。NSD被标记了不同属性来区分其用途,我们可以将磁盘标记为 4 种用途:
Desc Only:只存储GPFS文件系统描述信息的磁盘。
Data Only:只存储文件系统中的数据信息。
Meta data only: 只存储文件系统中的目录结构 inode 信息。
Meta and data: 存储所有信息(默认)。
(3)GPFS文件设备(GPFS File System Device)
GPFS设备是一个可被系统挂载的文件设备,由 NSD 创建而成,可以并行的同时挂载在多个节点上
9.分布式文件系统GlusterFS
10.Ceph分布式存储系统
(1)支持三种存储类型
Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是块设备存储、文件系统服务和对象存储。
块设备存储:主要是将裸磁盘空间映射给主机使用的。典型设备有磁盘阵列、硬盘。多硬盘组合容量大、读写速率高,且RAID方式具备容错功能。但是SAN组网时光纤交换机价格较贵,且主机之间无法共享数据。适合docker容器、虚拟机磁盘存储分配、日志或文件。
文件系统:在服务器上架设FTP与NFS服务,就是文件存储。主要是为了克服块存储文件无法共享的问题。典型设备有FTP、NFS服务器。造价低,随便一台机器就可以了,且方便文件共享。但是读写速率较低,传输速度较慢。适合日志文件或有目录结构文件
对象存储:多台服务器内置大容量硬盘,安装上对象存储管理软件,对外提供读写访问功能。典型设备主要是内置大容量硬盘的分布式服务器(swift, s3)。具备块设备读写速度、具备文件系统共享特性。适合更新变动较少的数据,图像或视频存储。
(2)基础架构组件
从架构图中可以看到最底层的是RADOS,RADOS自身是一个完整的分布式对象存储系统,它具有可靠、智能、分布式等特性,Ceph的高可靠、高可拓展、高性能、高自动化都是由这一层来提供的,用户数据的存储最终也都是通过这一层来进行存储的,RADOS可以说就是Ceph的核心。RADOS系统主要由两部分组成,分别是OSD和Monitor。
基于RADOS层的上一层是LIBRADOS,LIBRADOS是一个库,它允许应用程序通过访问该库来与RADOS系统进行交互,支持多种编程语言,比如C、C++、Python等。
基于LIBRADOS层开发的又可以看到有三层,分别是RADOSGW、RBD和CEPH FS。
RADOSGW:RADOSGW是一套基于当前流行的RESTFUL协议的网关,并且兼容S3和Swift。
RBD:RBD通过Linux内核客户端和QEMU/KVM驱动来提供一个分布式的块设备。
CEPH FS:CEPH FS通过Linux内核客户端和FUSE来提供一个兼容POSIX的文件系统。
Ceph相比其它存储的优势点在于它不单单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡。
参考文档: