天天看點

Ceph分布式存儲實戰3.1 引言

智能分布crush

<b>3.1 引言</b>

<b></b>

資料分布是分布式存儲系統的一個重要部分,資料分布算法至少要考慮以下3個因素。

1)故障域隔離。同份資料的不同副本分布在不同的故障域,降低資料損壞的風險。

2)負載均衡。資料能夠均勻地分布在磁盤容量不等的存儲節點,避免部分節點空閑,部分節點超載,進而影響系統性能。

3)控制節點加入離開時引起的資料遷移量。當節點離開時,最優的資料遷移是隻有離線節點上的資料被遷移到其他節點,而正常工作的節點的資料不會發生遷移。

對象存儲中一緻性hash和ceph的crush算法是使用比較多的資料分布算法。在aamzon的dyanmo鍵值存儲系統中采用一緻性hash算法,并且對它做了很多優化。openstack的swift對象存儲系統也使用了一緻性hash算法。

crush(controlled replication under scalable hashing)是一種基于僞随機控制資料分布、複制的算法。ceph是為大規模分布式存儲系統(pb級的資料和成百上千台儲存設備)而設計的,在大規模的存儲系統裡,必須考慮資料的平衡分布和負載(提高資源使用率)、最大化系統的性能,以及系統的擴充和硬體容錯等。crush就是為解決以上問題而設計的。在ceph叢集裡,crush隻需要一個簡潔而層次清晰的裝置描述,包括存儲叢集和副本放置政策,就可以有效地把資料對象映射到儲存設備上,且這個過程是完全分布式的,在叢集系統中的任何一方都可以獨立計算任何對象的位置;另外,大型系統存儲結構是動态變化的(存儲節點的擴充或者縮容、硬體故障等),crush能夠處理儲存設備的變更(添加或删除),并最小化由于儲存設備的變更而導緻的資料遷移。

繼續閱讀