0.What is swift?
OpenStack Object Storage (Swift) 是用來創建冗余的、可擴展的對象存儲(引擎)的開源軟件。 swift使用標准化的服務器存儲 PB 級的訪問數據。它並不是文件系統或者實時的數據存儲系統 ,而是一個用於存儲永久類型的靜態數據的長期存儲系統 ,這些數據可以檢索、調整、必要時進行更新。最適合存儲的數據類型的首要例子是虛擬機鏡像,圖片存儲,郵件存儲,存檔備份。因為沒有中心單元或者主控結點,swift提供了更強的擴展性、冗余和持久性。
1.When did the swift start?
OpenStack Object Storage 最初由 Rackspace 開發,並於 2010 年 7 月貢獻給 OpenStack ,作為該開源項目的一部分。它的目的是用於托管 Rackspace的 Cloud Files service ,原始項目代號是 swift,所以沿用至今。
2.What’s the Advantages of swift?
Swift vs MogileFS
MogileFS是一個開源的分布式文件系統,用於組建分布式文件集群,主要由Tracker and Database 、Storage Nodes和Client 組成,其中系統的元數據都存儲在單一的數據庫中,寫操作只能在單個的master上,因此無法水平擴展數據庫的寫能力,這影響了的可擴展性。此外,在大並發訪問下,數據庫將成為瓶頸,所有的服務器和用戶都會受此影響。Swift的早期原型基於MogileFS-style,由於元數據數據庫無法擴展,該方案最終廢棄。
特性 |
優點 |
通過編程語言封裝的API來存儲和管理文件 |
使資源的管理和提取自動化 |
可以創建公共或私有的容器 |
更好的控制性。既允許數據共享也可以設為私有 |
使用商用硬件 |
沒有鎖定,每GB更低廉的價格 |
硬盤驅動器/結點不可預知的失效 |
具有自我修復的可靠性,數據冗余性來保護失效的影響 |
無限制的存儲 |
巨大且扁平的名稱空間,高度可伸縮的讀寫訪問能力,直接從存儲系統提供內容服務 |
多維可伸縮性(向外擴展的結構) 允許垂直和水平分布地調整存儲 |
以線性的性能來備份/存檔大量數據 |
帳號/容器/對象 沒有嵌套,不是傳統的文件系統 |
規模優化,允許百萬個PB級別的對象 |
內建復制 (帳號、容器、對象的N份拷貝) 3x+的數據冗余性與RAID的2x的對比 |
高可靠性 |
不同於RAID的大小調整,非常簡單的容量增減 |
簡單的彈性的數據調整 |
沒有中央數據庫 |
更高的性能,沒有瓶頸 |
不需要RAID |
允許更有效地處理大量小型、隨機的讀寫 |
內建Mgmt.工具 |
帳號管理:創建,增加,驗證,刪除用戶 容器管理:上傳,下載,驗證 監測:容量、主機、網絡、日子篩選、集群健康情況 |
驅動器檢查 |
允許檢測驅動器失效,盡早知悉數據受損 |
通過web瀏覽器使用VNC代理 |
快速、簡單的命令行管理 |
4.What’s good use cases for Swift?
· 存儲媒體庫(照片、音樂、視頻等)
· 視頻監控文件的存檔
· 電話呼叫音頻記錄的存檔
· 壓縮日志文件的存檔
· 備份存檔(每個對象<5GB)
· 存儲和加載系統的鏡像文件等
· 存儲數量不斷增加基數龐大的文件
· 存儲小型文件 (<50 KB). OpenStack Object Storage擅長於此.
· 存儲數以億計的文件.
· 存儲PB級別的數據.
5.What’s limitations of Swift?
不是文件系統
Swift使用REST API,因此不能使典型的POSIX 文件系統的語法如open(), read(), write(), seek()和close()。
沒有目錄結構
可以創建任意數量的容器,但是不支持嵌套
在文件中沒有寫入字節偏移量
The only way to update a file is to essentially overwrite it. The system creates a new version of an object each time you upload one with the same name.
上傳一個文件的唯一方式本質上就是重寫這個文件。當你上傳一個相同名字的對象時,系統就創建這個對象的新版本。
不是數據庫
不支持服務器上的數據查詢和處理。值可以列出指定容器內的對象,但是不能基於對象的元數據進行查詢。
不要嘗試頻繁地更新大對象
所有的更新將會產生對象的新版本,因為對象是不可變的。
不要在每個容器內存儲超過無限的對象
adrian otto 發現當容器的對象數超過100萬個對象時,將會影響性能。