一 分布式存储概述
1.1 存储分类:
- 单机存储
- SCSI/IDE/SATA//SAS/USB/PCI-E/SSD/M.2 NVME 协议(提升性能)
- 网络存储(带文件系统)
- NFS、NAS、SAN、samba。
- 商业解决方案 EMC、Netapp、戴尔、华为、浪潮。
- 分布式存储
- Ceph、GlusterFS、Sheepdog、Lustre、Swift、TFS、HDFS、MooseFS、FastDFS、MogileFS。
存储系统 | Ceph | GlusterFS | Sheepdog | Lustre | Swift | TFS | HDFS | MooseFS | FastDFS | MogileFS |
开发语言 | C++ | C | C | C | Python | C++ | Java | C | C | Perl |
开源协议 | LGPL | GPL V3 | GPL V2 | GPL | Apache | GPL V2 | Apache | GPL V3 | GPL V3 | GPL |
数据存储方式 | 对象/文件/块 | 文件/块 | 块 | 对象 | 对象 | 文件 | 文件 | 块 | 文件/块 | 文件 |
集群节点通信协议 | 私有协议(TCP) | 私有协议(TCP)/RDAM(远程直接访问内存) | totem协议 | 私有协议(tcp)/RDAM(远程直接访问内存) | TCP | TCP | TCP | TCP | TCP | HTTP |
专用元数据存储点 | 占用MDS | 无 | 无 | 双MDS | 无 | 占用NS | 占用MDS | 占用MFS | 无 | 占用DB |
在线扩容 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
冗余备份 | 支持 | 支持 | 支持 | 无 | 支持 | 支持 | 支持 | 支持 | 支持 | 不支持 |
单点故障 | 不存在 | 不存在 | 不存在 | 存在 | 不存在 | 存在 | 存在 | 存在 | 不存在 | 存在 |
易用性 | 安装简单 | 安装简单 | - | 安装复杂 | - | 安装复杂 | 安装简单 | 安装简单 | 安装简单 | 安装简单 |
使用场景 | 单集群的大中小文件 | 跨集群云存储 | 弹性块存储虚拟机 | 大文件读写 | OpenStack块存储 | 夸集群的小文件 | Mapreduce使用的文件存储 | 单集群的大中小文件 | 单集群的中小文件 | - |
- 开源协议说明
GPL: 不允许修改后和衍生的代码做为闭源的商业软件发布和销售,修改后该软件产品必须也采用GPL协议。
GPL V2:修改文本的整体就必须按照GPL流通,不仅该修改文本的源码必须向社会公开,而且对于这种修改文本的流通不准许附加修改者自己作出的限制。
GPL V3:要求用户公布修改的源代码,还要求公布相关硬件。
LGPL:更宽松的GPL。
1.2 数据分类
- 数据分为数据和元数据:
- 元数据即是文件的属性信息(文件名、权限(属主、属组)、大小、时间戳等),在分布式存储中当客户端或者应用程序产生的客户端数据被写入到分布式存储系统的时候,会有一个服务(Name Node)提供文件元数据路由功能,即告诉应用程序去哪个服务器去请求文件内容。然后在有(Data Node)提供数据的读写请求及数据的高可用功能。