cloudxy 新一代彈性云計算平臺

openkk 12年前發布 | 15K 次閱讀 云計算 分布式/云計算/大數據

CLOUDXY立足于實現虛擬子網(以太網)的彈性云計算平臺 該項目主要包含有兩個子項目:

  • HLFS - 虛擬機分布式鏡像存儲 (類似于亞馬遜EBS,首先發布出來)
  • ECMS - 虛擬環境管理系統

背景介紹

HLFS的使用場景是為彈性云平臺提供虛擬磁盤(類似amazon的EBS)提供后臺存儲服務。它需要滿足高可用性、高性能、能隨機讀寫、快速故障恢復、數據快照、回滾等特性。

實現簡述

hadoop dfs 可被看做一個可靠的、隨時可擴展的“磁盤”;但美中不足的是其不能隨機寫,只能追加寫入,因此還不能直接作為我們的鏡像存儲系統。那么我們需要借助log structrue filesystem的理念,使用追加方式在hdfs上實現隨機讀寫的要求。

特性描述

  • 用戶態文件系統 —— 和標準的內核態posix接口文件系統不同,HLFS實現于用戶態,以lib形式嵌入客戶端。 不必完全實現posix接口規范 ,按需實現pread\pwrite等主要語意即可。
  • 支持隨機讀寫 —— 文件要能支持隨機讀寫(按照offset定位位置)。
  • 支持超大文件存儲 —— 單個文件需可支持上T數據存儲(這里文件對應的是虛擬機的磁盤大小)。
  • 僅支持單文件 —— 在我們應用場景中每個虛擬磁盤對應一個HLFS實例,因此最簡化的設計就是只需要支持一個文件(對應虛擬機里一個磁盤)。
  • 面向客戶端一致性 (client - orient )—— 虛擬機磁盤同一時刻只能被掛載到一個虛擬機鏡像中,因此只需要對其掛載的虛擬機客戶保證數據一致
  • 支持快照、支持回滾 —— 文件可隨時進行現場快照、可按需進行回滾(對于host服務的虛擬機,快照回滾是防止網站被入侵或者誤操作造成數據污染、損壞的最有效手段)
  • 支持多數據多副本 —— 數據存儲多份,保證數據安全性和就近訪問優化(hadoop dfs為我們實現這點)
  • 集群系統可動態擴容 —— 存儲節點(PC服務器)可動態添加到集群中,而不影響集群正常服務(hadoop dfs為我們實現這點)
  • 集群系統可透明故障切換 —— 存儲節點出現故障,不影響服務,對用戶透明(hadoop dfs為我們實現這點)

概要設計

HLFS 的磁盤數據格式與一般文件系統(FFS—fast filesystem)無多大差異,都是借助于indirect block 、inode 、directory 等結構。 所不同之處在于LFS會將磁盤(我們這里是hdfs的存儲池)分割成有序的segment 進行管理,當前活躍的segment只有一個(也就是我們日志的邏輯尾的segment)。 這些segment 邏輯上頭尾相連組成一個線性log,任何的文件更新(數據塊、indirect block 、inode等等)都會以追加方式寫入到log尾部——顯然這么做的好處是保證了磁頭的順序移動,提高了吞吐;而帶來的麻煩是需要回收前期寫入的舊數據 (修改過的),否則磁盤遲早會寫滿。綜上所述我們設計的最基本思路是 —— 利用hadoop dfs為我們提供可靠的、分布式的存儲介質;然后在其上實現LFS。

下面就關鍵設計技術點做概要設計。

HLFS LOG 創建和檢索

LOG 是我們數據持久化的一個基本寫入單位,對于寫透需求來說,實際上每次寫入動作都會產生一個新的LOG,而每次的LOG大小不盡相同。

LOG的內容顯然必須包含被寫入的數據塊,還需要包含對應的元數據(索引塊等)信息,以及元數據的元信息(inode),這樣才能完成對一個信息的索引。

LOG創建

任何文件或者目錄的修改LFS都需要向log中寫入如下幾部分信息,而且要求嚴格“按照順序寫入(in-order semantics)”—— 其目的是為了崩潰時能盡可能恢復數據一致性。
  1. 任何修改或者新數據塊 (數據塊是數據實際操作的最小粒度;可配置;大小為8196字節或者更大)
  2. Indirect block 更新 (也叫做meta-data block ,是inode中的2/3/4級索引塊數據)
  3. Inode 更新 (每個inode對應一個文件,如果只支持單一文件,則只用一個inode)
  4. Inode map 更新 ( 單一文件則只有一個映射項)
cloudxy 新一代彈性云計算平臺

項目主頁:http://www.baiduhome.net/lib/view/home/1338895582734

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!