写在前面的话(一些基本概念)
块存储&文件存储&对象存储
- 块存储:传统的存储结构,典型的代表是SAN。对于用户而言,块存储好比一块大磁盘,用户可以根据需要将裸设备格式化成想要的文件系统来使用。其可扩展性较差。
- 文件存储:典型代表是NAS。对于用户而言,文件存储好比一个共享文件夹,文件系统已存在,用户的数据以文件的形式存在于系统中。但由于以文件为传输协议,开销较大,不适用于高性能的集群搭建。
- 对象存储:典型代表是swift、s3。用户的每个数据对象既包含文件的元数据又包含存储数据。
数据结构
Ring
(环):
用于记录存储对象与物理位置间的映射关系。在涉及查询
Account、Container、Object
信息时,就需要查询集群的
Ring
信息。
Ring
使用
Zone
、
Device
、
Partition
和
Replica
来维护这些映射信息。
Ring
中每个
Partition
在集群中都(默认)有
3
个
Replica
。每个
Partition
的位置由
Ring
来维护,并存储在映射中。
Ring
文件在系统初始化时创建,之后每次增减存储节点时,需要重新平衡一下
Ring
。
(Zone:物理位置分区
,Device
:
物理设备,Partition
:
虚拟出的物理设备,Replica
:
冗余副本)
算法(一致性哈希)
网上抄来的一张图,具体的算法原理网上资料很多,不再赘述
角色
- 认证节点:用户身份认证,