對分佈式存儲系統設計架構的理解

1傳統存儲

今天和大家淺談一下分佈式存儲設計方面我個人的一些理解。首先聲明我本人不是做研發的,只是一個有着10年左右存儲行業經驗的普通工程師和產品經理。最早接觸存儲是在2010年,那時候說起存儲大多指的是雙控制器的磁盤陣列,比如:EMC、IBM、HDS等,除了雙控制器架構還有多控制器的所謂高端存儲,這些統稱企業級存儲。不過不管是中端的還是高端的,對於普通工程師來說都是一個黑盒子,我們並不知道其內部架構是什麼樣的,是怎麼設計的,所瞭解的也只不過是產品的規格參數啦,功能特性啦,基本上把這些跟用戶講明白,也就夠了。小編我曾經做過產品經理,和公司研發的同事瞭解過控制器架構的存儲底設計的一些關鍵技術,比如Non Transparent Bridge(非透明橋):簡單的理解就是通過PCIE把兩個控制器連接在一起了。而爲了使兩個機器連接在一起,就發明了一種特殊的設備叫做非透明橋,橋的兩端是連接在兩個控制器的PCIE的總線上的,但是從任意一端,只能看到這個橋,看不到這個橋後面接的下一級設備,這就是所謂的“非透明”(因爲一般的橋是透明的,你能看到橋後面的東西)。非透明橋就是用來做雙控制器的cache mirror,所謂的緩存鏡像,而現在的分佈式架構很少有人用到這個技術。
傳統磁盤陣列架構

2分佈式存儲與傳統存儲的區別

然而,時過境遷,隨着網絡技術、分佈式文件系統、計算機硬件的蓬勃發展,目前的存儲系統除了剛纔提到的控制器架構的產品,基於X86通用服務器平臺的分佈式存儲系統逐漸成爲主流的存儲形態。區別於控制器架構的存儲系統的專用硬件,分佈式存儲系統是運行在通用的X86 PC上的,在軟件層面上基於分佈式文件系統(ceph、Lustre、Gluster、GPFS等),節點間一致性同步通過(ETCD、Zookeeper等)技術實現。現在我們通常把之前控制器架構的存儲成爲傳統存儲,以區別於現在的分佈式存儲系統,我簡單把二者的區別羅列了一下,如下表:
傳統存儲與分佈式存儲區別

2分佈式存儲與傳統存儲的區別

分佈式存儲系統設計架構
上圖是我和研發的同事聊出來的關於分佈式存儲系統設計的宏觀架構,大體上可以分爲Base Platform(基礎平臺)、Platform Service(平臺服務)、Data Path(數據路徑)和Control Path(控制路徑)這幾個層面。其中:

  1. Base Platform(基礎平臺):主要實現對物理的盤的管理,如:監控、故障處理、系統出現故障後的降級處理以及對熱備磁盤的管理等;另外通過ETCD或者Zookeeper等技術實現在所有節點間的配置信息同步,集羣狀態緩存,一致性,心跳等功能。同時在這一層還要實現對於服務的監控、用戶的管理以及系統鏡像文件的管理;
  2. Platform Service(平臺服務):這一層主要功能有兩方面,一是會爲整個存儲系統提供各種的服,如:NTP、SNMP、DNS、浮動IP 域 (表示IP浮動的範圍)等;二是會提供日誌收集、回滾、磁盤LED、Core dump等支持組件;
  3. Data Path(數據路徑):中存儲前端服務提供的是協議和語義,比如文件,塊,nfs,smb;而後端提供地址空間,也就是把一堆盤竄成一個大存儲池子;
  4. Control Path(控制路徑):這一層提供的就是存儲系統對外的管理方式,當然目前通常要支持全中文圖形化的管理、對於高級功能要提供命令行的管理等方式了。
    以上是一個分佈式存儲系統大體的一個設計架構,當然也是一個比較宏觀的架構,其實具體還有很多的細節沒有展現。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章