目录
存储分类
01 块存储
https://www.bilibili.com/video/BV1WE41177Kp?from=search&seid=1887114199876544924
存储发展史
(https://zhuanlan.zhihu.com/p/164775822)
企业中使用存储按照其功能,使用场景,一直在持续发展和迭代,大体上可以分为四个阶段:
- DAS:Direct Attached Storage,即直连存储,第一代存储系统,通过SCSI总线扩展至一个外部的存储,磁带整列,作为服务器扩展的一部分;
- NAS:Network Attached Storage,即网络附加存储,通过网络协议如NFS远程获取后端文件服务器共享的存储空间,将文件存储单独分离出来;
- SAN:Storage Area Network,即存储区域网络,分为IP-SAN和FC-SAN,即通过TCP/IP协议和FC(Fiber Channel)光纤协议连接到存储服务器;
- Object Storage:即对象存储,随着大数据的发展,越来越多的图片,视频,音频静态文件存储需求,动则PB以上的存储空间,需无限扩展。
存储的发展,根据不同的阶段诞生了不同的存储解决方案,每一种存储都有它当时的历史诞生的环境以及应用场景,解决的问题和优缺点。
综上、企业中不同场景使用的存储,使用表现形式无非是这三种:磁盘(块存储设备),挂载至目录像本地文件一样使用(文件共享存储),通过API向存储系统中上传PUT和下载GET文件(对象存储)。
块存储:
文件存储:
对象存储:
什么是Ceph?Ceph则是一个统一分布式存储系统,具有优异的性能、可靠性和可扩展性。Ceph底层是RADOS,它是分布式对象存储系统,由自修复、自管理、智能的存储节点组成。可以通过LIBRADOS直接访问到RADOS的对象存储系统。RBD(块设备接口)、RADOS Gateway(对象存储接口)、Ceph File System(POSIX接口)都是基于RADOS的。
Ceph能够提供企业中三种常见的存储需求:块存储、文件存储和对象存储,正如Ceph官方所定义的一样“Ceph uniquely delivers object, block, and file storage in one unified system.”,Ceph在一个统一的存储系统中同时提供了对象存储、块存储和文件存储,即Ceph是一个统一存储,能够将企业企业中的三种存储需求统一汇总到一个存储系统中,并提供分布式、横向扩展,高度可靠性的存储系统,Ceph存储提供的三大存储接口:
更详细:https://zhuanlan.zhihu.com/p/164775822
Ceph存储架构Ceph 独一无二地用统一的系统提供了对象、块、和文件存储功能。 Ceph还拥有大规模可扩展(PB、甚至EB级的存储空间)、基于CRUSH算法的自我管理和修复、灵活的架构等优点,并且支持OpenStack、CloudStack、OpenNebula、Hadoop等云平台。 Ceph 节点以普通硬件和智能守护进程作为支撑点, Ceph 存储集群组织起了大量节点,它们之间靠相互通讯来复制数据、并动态地重分布数据。
Ceph的主要目标是提供高可扩展性和提供对象存储、块存储和文件系统的存储机制,是一个高扩展、高容错、高一致的开源分布式存储平台。
接下来,我们先来看一下Ceph的存储架构,了解Ceph的分布式架构,功能组件和涉及相关概念。Ceph分布式集群是建立在RADOS算法之上的,RADOS是一个可扩展性,高可靠的存储服务算法,是Ceph的实现的基础。Ceph有两个重要的组件组成:Ceph Monitors(Ceph监视器)和Ceph OSDs(Ceph OSD 守护进程)。
其中Ceph Monitor作为集群中的控制中心,拥有整个集群的状态信息,Ceph Monitor肩负起整个集群协调工作;
同时Ceph Monitor还负责将集群的指挥工作,将集群的状态同步给客户端。
除了Ceph Monitor之外,还有一个重要的组件是OSD,集群中通常有多个OSD组成,OSD即Object Storage Daemon,负责Ceph集群中真正数据存储的功能,也就是我们的数据最终都会写入到OSD中。除了Monitor之外,根据Ceph提供的不同功能,还有其他组件,包括:
- Ceph Monitors(ceph-mon);
- Ceph OSDs(ceph-osd);
- Ceph MDS(ceph-mds),用于提供CephFS文件存储,提供文件存储所需元数据管理;
- Ceph RGW(ceph-rgw),用于提供Ceph对象存储网关,提供存储网关接入;
- Ceph Manager(ceph-mgr),提供集群状态监控和性能监控。
注:Ceph Monitor监视器维护着集群运行图的主副本。一个监视器集群确保了当某个监视器失效时的高可用性。存储集群客户端向 Ceph Monitor 监视器索取集群运行图的最新副本。而Ceph OSD 守护进程检查自身状态、以及其它 OSD 的状态,并报告给监视器们。存储集群的客户端和各个 Ceph OSD 守护进程使用 CRUSH 算法高效地计算数据位置,而不是依赖于一个中心化的查询表。它的高级功能包括:基于 librados的原生存储接口、和多种基于 librados 的服务接口。
Ceph数据的存储Ceph中一切皆对象,不管是RBD块存储接口,RGW对象存储接口还是文件存储CephFS接口,其存储如到Ceph中的数据均可以看作是一个对象,一个文件需要切割为多个对象(object),然后将object存储到OSD中,如下图:
未完待续…… https://zhuanlan.zhihu.com/p/164775822
MinIO和ceph(http://slack.minio.org.cn/question/5)
之前一直使用MongoDB的GirdFS存储文件,在并发处理能力和扩容能力上没有遇到问题。但是使用总是不够便利,各种功能都需要自己开发。存储上是wt文件,无法直接识别。
所以,希望找一款替代产品。目前开源的文件存储系统比较多,比较了多个,我们的要求是要支持S3存储,最终选定了minio。
从对比中,目前文件存储在ceph和minio中进行比较选型
ceph优缺点
优点
- 成熟
- 红帽继子,ceph创始人已经加入红帽
- 国内有所谓的ceph中国社区,私人机构,不活跃,文档有滞后,而且没有更新的迹象。
- 从git上提交者来看,中国有几家公司的程序员在提交代码,星辰天合,easystack, 腾讯、阿里基于ceph在做云存储,但是在开源社区中不活跃,阿里一位叫liupan的有参与
- 功能强大
- 支持数千节点
- 支持动态增加节点,自动平衡数据分布。(TODO,需要多长时间,add node时是否可以不间断运行)
- 可配置性强,可针对不同场景进行调优
缺点
- 学习成本高,安装运维复杂。(或者说这个不是ceph的缺点,是我水平不行)
minio优缺点
优点
- 学习成本低,安装运维简单,开箱即用
- 目前minio论坛推广给力,有问必答
- 有java客户端、js客户端
缺点
- 社区不够成熟,业界参考资料较少
- 不支持动态增加节点,minio创始人的设计理念就是动态增加节点太复杂,后续会采用其它方案来支持扩容。
- 其缺点是目前不支持动态在线扩容。我们业务的使用量不会很大,所以这个问题先不考虑。
当然是用MinIO呀,MinIO的维护特别简单,并且性能和扩展也比Ceph要简单。
Ceph 维护起来多麻烦呀。运维成本太高了。
公司运维每年不投个几千万,ceph玩都别玩。
并且Ceph这玩意是超大型公司才玩玩的。
ceph和hadoop通过本文你将了解:
- 块存储
- 文件存储
- 对象存储
01 块存储
1.1 概述
块存储是将裸磁盘空间整个映射给主机使用的,比如磁阵中有3块1T硬盘,可以选择直接将裸设备给操作系统使用(此时识别出3个1T的硬盘),也可以划分经过RAID、逻辑卷等方式划分出多个逻辑的磁盘供系统使用(比如划分为6个500G的磁盘),主机层面操作系统识别出硬盘,但是操作系统无法区分这些映射上来的磁盘到底是真正的物理磁盘还是二次划分的逻辑磁盘,操作系统接着对磁盘进行分区、格式化,与我们服务器内置的硬盘没有什么差异。
块存储不仅仅是直接使用物理设备,间接使用物理设备的也叫块设备,比如虚机创建虚拟磁盘。VMware、VirtualBox都可以创建虚拟磁盘,虚机创建的磁盘格式包括raw、qcow2等,这与主机使用的裸设备不一样,且有不同的应用场景。
1.2 特点
优点
1、通过RAID与LVM等手段,对数据提供了保护(RAID可实现磁盘的备份和校验,LVM可以做快照);
2、RAID将多块廉价的硬盘组合起来,构建大容量的逻辑盘对外提供服务,性价比高;
3、写数据时,由于是多块磁盘组合成的逻辑盘,可以并行写入,提升了读写效率;
4、很多时候块存储采用SAN架构组网,传输速率以及封装协议的原因,使得传输速度与读写速率得到提升。
缺点
1、采用SAN架构组网时,需要额外为主机购买光纤通道卡,还要买光纤交换机,造价成本高;
2、不利于不同操作系统主机间的数据共享,因为操作系统使用不同的文件系统,格式化完成后,不同文件系统间的数据是无法共享的。
1.3 典型设备
磁盘,磁盘阵列
1.4 应用场景
一般用于主机的直接存储空间和数据库应用的存储分两种形式:
DAS:一台服务器一个存储,多机无法直接共享,需要借助操作系统的功能,如共享文件夹;
SAN:金融电信级别,成本较高,但是可提供高性能和高可靠服务。
云存储的块存储:具备SAN的优势,成本低,可提供弹性拓容,存储介质可选普通硬盘和SSD。
1.5 主流技术
Microsoft:Azure Block Storage
Google:Google Block Storage
Amazon:Elastic Block Storag(EBS)
OpenStack:Cinder
其他:Ceph RBD、sheepdog
02 文件存储
2.1 概述
为了克服块存储无法共享的问题,所以就有了文件存储。
文件存储也有软硬一体化的设备,用一台普通服务器/笔记本,只要安装上合适的操作系统与软件,就可以对外提供FTP与NFS服务。
2.2 特点
优点
1、造价较低:只需要普通机器和普通网络即可满足需求,不需要专用的SAN网络;
2、方便文件共享。
缺点
1、读写速率低,传输速率慢:以太网,上传下载速度较慢,另外读写操作都分布到单台服务器,与磁阵的并行写相比性能差距较大。
2.3 典型设备
FTP、NFS服务器
2.4 应用场景
与偏向底层的块存储不同,文件存储上升到了应用层,一般指的是NAS。
一套网络存储设备,通过TCP/IP进行访问,协议为NFSv3/v4由于通过网络,且采用上层协议,因此开销大,延时肯定比块存储高,一般用于多个云服务器共享数据,如存放共享文件等。
2.5 主流技术
Microsoft;Windows Azure文件共享存储
Google:Google FileStorage(GFS)
Amazon:Elastic File Storage(EFS)
OpenStack:Swift
其他:CephFS、HDFS、NFS、CIFS、Samba、FTP
03 对象存储
3.1 概述
之所以出现对象存储,是为了克服块存储与文件存储的缺点,发扬他俩各自的优点。简单地说,块存储读写块,不利于共享,文件存储读写慢,利于共享。
为什么对象存储兼具块存储与文件存储的好处,还要使用块存储或文件存储呢?
1、有一类应用是需要存储直接裸盘映射的,例如数据库。因为数据库需要存储裸盘映射给自己后,再根据自己的数据库文件系统来对裸盘进行格式化,所以是不能够采用其他已经被格式化为某种文件系统的存储的。数据库更适合使用块存储。
2、对象存储的成本比普通的文件存储高,需要购买专门的对象存储软件以及大容量硬盘。
3.2 特点
优点
1、结合了块存储与文件存储的优点。
缺点
1、数据库等追求高性能的应用更适合采用块存储。
2、对象存储的成本比普通的文件存储还是较高。
3.3 典型设备
内置大容量硬盘的分布式服务器
3.4 应用场景
对象具备块存储的高速以及文件存储的共享等特性,有自己的CPU、内存、网络和磁盘,比块存储和文件存储更上层。云服务商一般提供用户文件上传下载读取的REST API,方便应用集成此类服务。
3.5 主流技术
Microsoft:Azure Storage
Google:Google Cloud Storage
Amazon:Simple Storage Service(S3)
OpenStack:Swift
其他:Ceph OSD
04 三种存储的区别和对比
这三者的本质差别是使用数据的“用户”不同:块存储的用户是可以读写块设备的软件系统,例如传统的文件系统、数据库;文件存储的用户是自然人;对象存储的用户则是其它计算机软件。
块存储、文件存储、对象存储这三者的本质差别是什么? https://www.zhihu.com/question/21536660/answer/1159036357
4.1 块存储 vs 文件存储
物理块与文件系统之间的关系图:映射关系:扇区->物理块->逻辑块->文件系统
块级备份:块级备份是指物理块复制,效率高,实时性强,备份时间短,且增量备份时,只备份修改过的物理块。
文件级备份:文件级备份是指在指定某些文件进行备份时,首先会查找每个文件逻辑块,其次物理块,由于逻辑块是分散在物理块上,而物理块也是分散在不同扇区上。需要一层一层往下查找,最后才完成整个文件复制。文件级备份比较费时间,效率不高,实时性不强,备份时间长,且增量备份时,单文件某一小部分修改,不会只备份修改部分,而是整个文件都备份。
4.2 文件存储 vs 对象存储
对象存储:
1、大多数对象存储的实现本质是键值对存储系统;
2、采用扁平化的管理方式(根据键找到值);
3、值可以是任何东西,可以是小文件(小二进制片段),可以是大文件;
4、对象存储一般不支持追加写和更新,面向的是一次写入,多次读取的需求场景;
5、多采用Restful API。
文件存储:
1、不考虑底层到底是怎么实现的;
2、采用目录结构管理数据;
3、一般要尽可能兼容Posix文件系统API。
https://zhuanlan.zhihu.com/p/280128756