关于OpenStack Swift环功能的两个问题

时间:2018-04-24 15:06:41

标签: openstack-swift consistent-hashing

我是Swift的新手,我正在努力学习它的功能。关于环和一致的散列算法,我有两个问题。

当我们想要存储一个对象时,我们采用它的路径(例如“... / v1 / account_name / container_name / object_name.ext”),用这个路径提供MD5哈希函数,然后我们得到一个哈希值。从这个哈希值我们取前n位,其中n是部分功率,并使用这些位来获得分区号。现在,如果我们使用分区号访问环,我们可以发现分区所在的节点并以这种方式存储对象。

第一个问题:如果该分区已满,该怎么办?

现在假设swift将对象存储在正确的节点中,第二个问题是:swift如何决定存储副本的位置?

谢谢大家!

1 个答案:

答案 0 :(得分:0)

  

swift如何决定存储副本的位置?

当您创建一个响铃通知所有节点和您拥有的所有磁盘时,它会自动定义每个副本的位置以及发生故障时要使用的切换节点。所以,当你问戒指在哪里找到/存储一个带有哈希ABC123DEF的对象时......它会回答你:

Look at here:
SERVER1/DISK2/PATH/TO/FILE
SERVER2/DISK4/PATH/TO/FILE
SERVER4/DISK1/PATH/TO/FILE

And if you don't find, look at here.
Handoff: SERVER2/DISK2/PATH/TO/FILE
Handoff: SERVER8/DISK7/PATH/TO/FILE
Handoff: SERVER3/DISK1/PATH/TO/FILE