uwolf 2019-06-20
容器云在使用分布式存储时,HDFS、CEPH、GFS、GPFS、Swift等分布式存储哪种更好?
【问题描述】目前,公司在进行容器云技术选型,计划采用商业产品,已接触华为、RANCHER、阿里等产品提供商,现想了解相应的分布式存储如何匹配,HDFS、CEPH、GFS、GPFS、Swift等分布式存储,采用哪种更好,主要场景是容器存储应用日志、配置文件、非结构化数据文件等,请各位大神持续指导。(@yin986 软件架构设计师 某保险)
@Steven99 软件架构设计师
日志文件随着时间会是个很大的量,所以建议考虑统一的日志中心存储处理,可以用es等,备份到hdfs。
配置文件在量上通常不是个问题,可以考虑配置中心统一管理,无需额外存储。
非结构化数据通常是大量的文件,可以采用传统nas或分布式对象存储,当然资金充裕可以采购好的存储,存储性能很重要,根据业务重要程度选择不同的存储。
@Garyy 某保险系统工程师
容器存储的持久化,对于有状态数据的容器使用场景来说至关重要。因此,在技术选型的时候,需要明确存储的具体需求。存储按照数据类型来分,可以分为块存储,对象存储,文件存储。我们传统的环境中,使用最多的还是块存储和文件存储。随着IT的更新换代,现在对于对象存储(非结构化数据)的需求日益旺盛,对象存储在对一些Key-Value型数据的存储有着天然的优势,再加上其分布式,副本/纠删码等可以匹配传统存储的特性,日益成为温数据/冷数据存储的不二之选。
HDFS/CEPH/GFS/GPFS/Swift这类分布式存储,按照存储的类型来区分,HDFS/GPFS/GFS属于文件存储,CEPH属于统一存储--即块/对象/文件统一体,Swift属于对象存储-目前属于OpenStack下面的一个子项目。
1.HDFS
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。
HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。
2.GFS
GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。
3.GPFS
GPFS(General Parallel File System ,GPFS) 是 IBM 公司第一个共享文件系统,起源于 IBM SP 系统上使用的虚拟共享磁盘技术( VSD )。作为这项技术的核心, GPFS 是一个并行的磁盘文件系统,它保证在资源组内的 所有节点可以并行访问整个文件系统;而且针对此文件系统的服务操作,可以同时安全地在 使用此文件系统的多个节点上实现。 GPFS 允许客户共享文件,而这些文件可能分布在不同节点的不同硬盘上;它提供了许多标准的 UNIX 文件系统接口,允许应用不需修改或者重新编辑就可以在其上运行。
4.CEPH
Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的cinder后端存储、Glance的镜像存储和虚拟机的数据存储,比较直观的是Ceph集群可以提供一个raw格式的块存储来作为虚拟机实例的硬盘。
Ceph相比其它存储的优势点在于它不单单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的良好设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。