ceph

ceph

  • ceph是一個分佈式存儲系統
  • Ceph提供了三種存儲類型:塊存儲、文件存儲和對象存儲,本文主要介紹對象存儲的RGW基本原理和應用場景。

CRUSH算法

  • 通常的分佈式系統都會採用一個或者多箇中心服務用來控制數據的分佈,這種機制使得每次IO操做都會先去一個地方查詢數據在集羣中的元數據信息。當集羣的規模變大或者系統的workload比較大時,這些中心服務器必然會成爲性能上的瓶頸。Ceph摒棄了這種作法,而是經過引入CRUSH算法,將數據分佈的查詢操做變成了計算操做,而且是在client端完成。算法

  • CRUSH是受控複製的分佈式hash算法,是ceph裏面用於控制數據分佈的一種方法,可以高效穩定的將數據分佈在普通的結構化的集羣中。它是一種僞隨機的算法,在相同的環境下,類似的輸入獲得的結果之間沒有相關性,相同的輸入獲得的結果是肯定的。它只須要一個集羣的描述地圖和一些規則就能夠根據一個整型的輸入獲得存放數據的一個設備列表。Client在有IO操做的時候,可能會執行CRUSH算法。swift

對象存儲——RGW基本原理

  • 對象存儲(雲存儲)是面向對象/文件的、海量的互聯網存儲。
  • 對象存儲裏的對象是通過封裝了的文件,在對象存儲系統裏, 不能直接打開/修改文件,但能夠像ftp同樣上傳文件,下載文件等。
  • 另外,對象存儲沒有像文件系統那樣有一個不少層級 的文件結構,而是隻有一個「桶」(bucket)的概念(也就是存儲空間),「桶」裏面所有都是對象,是一種很是扁平化的存儲方式。
  • 其最大的特色就是它的對象名稱就是一個域名地址,一旦對象被設置爲「公開」,全部網民均可以訪問到

RGW

  • RGW在librados之上嚮應用提供訪問ceph集羣的RestAPI, 支持Amazon S3和openstack swift兩種接口。對RGW最直接的理解就是一個協議轉換層,把從上層應用符合S3或Swift協議的請求轉換成rados的請求, 將數據保存在rados集羣中。

外部概念

  • user:對象存儲的使用者,默認狀況下,一個用戶只能建立1000個存儲桶。服務器

  • bucket:存儲桶,用來管理對象的容器。分佈式

  • object:對象,泛指一個文檔、圖片或視頻文件等,儘管用戶能夠直接上傳一個目錄,可是ceph並不按目錄層級結構保存對象, ceph全部的對象扁平化的保存在bucket中。性能

相關文章
相關標籤/搜索