云存儲系統OpenStack Object Storage(Swift)介紹
OpenStack是一個美國國家航空航天局和Rackspace合作研發的開源云計算項目,并成為Apache下的一個重要開源項目,目前已經發展到了180家公司參與其中。
OpenStack Object Storage(Swift)是OpenStack開源云計算項目的子項目之一。Swift的目的是使用普通硬件來構建冗余的、可擴展的分布式對象存儲集群,存儲容量可達PB級。OpenStack Object Storage 最初由 Rackspace 采用Python語言開發,并于 2010 年 7 月貢獻給 OpenStack ,作為該開源項目的一部分。它的目的是用于托管 Rackspace的 Cloud Files service ,原始項目代號是 swift,所以沿用至今。
在分布式對象存儲中的一個關鍵問題是數據該如何存放。Ring是Swift中最重要的組件,用于記錄存儲對象與物理位置間映射關系。在涉及查詢account、container、object信息時就需要查詢集群的ring信息。
先來看一下Swift文檔中關于Ring的描述:
Ring用來確定數據駐留在集群中的位置。有單獨對應于Account數據庫、container數據庫和單個object的ring。
Ring中每個partition在集群中都(默認)有3個replica。每個partition的位置由ring來維護,并存儲在映射中。
Ring使用zone的概念來保證數據的隔離。每個partition的replica都確保放在了不同的zone中。一個zone可以是一個硬盤,一個服務器,一個機架,一個交換機,甚至是一個數據中心............
.......
在上述Ring的特性描述中提到了Ring使用zone、device、partition和replica等等來維護數據和磁盤間的映射信息。那么在Ring的背后采用什么算法,使用了什么機制來保證數據的安全、高效和可擴展呢?這些概念對于數據存儲帶來了什么好處?本文逐步深入探討了Swift如何通過Ring組件來實現冗余的、可擴展的目的。