ceph计算数据分布的过程:
//要存储的文件对象
file=data.txt
//将文件切分成多个除最后一个外的等大的小对象
objects = splits(file)
for (i = 0; i < length(objects); i++)
{
//获取对象的哈希值
obj_hash_value = hash(objects[i])
//用对象的哈希值对pg_num取模,获取对应的pg_id
pg_id = obj_hash_value % pg_num
//通过crush算法计算该pg对应的一组osds
osds = crush(pg_id...)
}
注:file-map->objects-map->pg-map->osd,pg是虚拟的概念,不会因为硬件的变化而变化。
ceph CRUSH中的层级结构:
http://way4ever.com/?p=122
http://www.cnblogs.com/shanno/p/3958298.html?utm_source=tuicool&utm_medium=referral