1. 程式人生 > >Parallel File System 並行檔案系統

Parallel File System 並行檔案系統

storage stack

關於儲存棧的基礎:儲存棧包含了完整的伺服器、網路部分和伺服器虛擬化部分。

HPC I O Stack

目標:相比於直接使用並行檔案系統,提高效能和使用效率。同時可以減少運用端需要進行的優化。

–》運用
–》高層次 I/O庫:將應用的抽象對映到儲存的抽象;使資料提供更加方便。HDF5,netCDF~
–》中介軟體(MPI)組織多程序的訪問(MPI-IO)
–》I/O重定向:應用任務和儲存系統,並且集合unaccordinated IO
–》並行檔案系統:維護邏輯地址空間,並提供高效的資料訪問。
–》I/O 硬體部分

本次的重點就在於並行檔案系統~

Cloud Storage Stack

雲端儲存棧:

–》雲應用:基於服務的
–》負載均衡:從前端進行負載均衡
–》中介軟體:資料流的程式設計模型改進:Map Reduce
–》物件儲存:在資料中心進行chunk複製。
–》資料中心:許多伺服器和磁碟,共有的或者是私有的

那麼接下來主要對檔案系統部分進行詳細描述。

Storage System Models

本地檔案系統/並行/分散式檔案系統

本地檔案系統:將使用者檔案對映到資料/屬性。為的是進行單個裝置的優化,比如有:FFS,LFS,UFS,Ext2/3/4,ZFS,NTFS。。。

並行檔案系統:能夠支援多個執行緒同時訪問,將多個檔案和目錄同時對映到許多裝置。並行檔案系統將系統展現成單個,邏輯地址單元;將一個檔案進行stripe(分割)到不同的磁碟;有比較好的容錯性。在儲存本地,需要考慮的問題有:塊的分配;元資料管理;資料可靠性以及錯誤校正。之外,還有快取一致性;high availability;彈性儲存;效能。

分散式檔案系統:資料虛擬化和負載均衡。coordinate(鎖和同步):在使用者中共享檔案;在伺服器中共享物理儲存介質。錯誤容忍:磁碟的錯誤;斷電;軟體錯誤;網路錯誤;使用者錯誤。

NAS,SAN,物件儲存

為了實現以上功能,進行了如下的操作:
NFS(AFS,通過簡單的使用者/伺服器協議將檔案系統export出來);叢集NAS(解決擴容問題,提高容錯性);SAN FS(export檔案系統並且增加併發協議);Object FS(通過抽象資料容器重新思考協議)。

NAS全稱是Network attached storage;SAN:Storage Area Network。關於NAS/SAN的區別在於:NAS是檔案級別的儲存訪問;SAN是基於塊的儲存訪問。SAN更方便於擴容;NAS:其主要特徵是把儲存裝置、網路介面和乙太網技術整合在一起,直接通過乙太網網路存取資料。能夠快速實現部門級儲存容量需求與檔案傳輸需求。NAS網路儲存更具有獨立性與良好的相容性。不但擁有自己的作業系統,同時也無需改造即可用於混合Unix/Windows NT區域網內,與各種作業系統相容,同時具有很好的靈活性。

叢集NAS:重定向。將請求進行歸檔到對應的儲存介質(遠端儲存)。這裡本地儲存與使用者之前採用了無狀態的模式,在此模式下,避免了鎖和快取協議。使得本地儲存系統負載大大降低。

叢集NAS:集群后端。在遠端儲存系統中採用了快取機制,以及採用striping來提高頻寬,以及RAID來提供容錯效能。

SAN共享磁碟檔案系統:將本地檔案系統擴充套件到整個共享磁碟,需要對元資料和資料訪問進行加鎖協議;對稱性:在每個檔案的客戶端裡面有一個元資料服務;非對稱性:需要對應到專門的元資料伺服器上。工業界上的用處比如:GFS(Redhat),MPFSi(EMC),VMFS(Vmware),GPFS(IBM)等等。

coordination protocol:協調協議。用來處理鎖同步等等情況。在NFSv2/3的檔案裡面是沒有鎖的協議的,鎖的協議是由NLM協議來。元資料伺服器(所有檔案的元資料都在一個伺服器裡面,只能在裡面進行修改,在更新後會把layout發給客戶端);分散式鎖管理器(DLM):誰使用某個塊就就擁有它的鎖,別的想使用的客戶會被阻塞。針對一些特別的情況還有鎖協議,比如快取一致性;位元組範圍,資料範圍的鎖。

在DLM這裡需要進一步說明,一般在共享磁碟資料的時候就會有這個分散式鎖管理器。對共享資料中的inode,allocation info,block table等等加鎖。如果當有bad client的時候,就會造成巨大的破壞。

基於物件的儲存集群系統:(OSD,object storage devices)核心是將資料通路(資料讀或寫)和控制通路(元資料)分離,並且基於物件儲存裝置(Object-based Storage Device,OSD)構建儲存系統,每個物件儲存裝置具有一定的智慧,能夠自動管理其上的資料分佈。物件儲存同兼具SAN高速直接訪問磁碟特點及NAS的分散式共享特點。

所以,在網路儲存方面,SAN,NAS,OSD三種,當然DAS這裡沒說。可以看出OSD是最佳的選擇,可擴充套件性和效能上都是SAN和NAS的優點的結合。在網路儲存系統中,要考慮資料一致性,快取等等問題,所以才會有coordination協議。

並行檔案系統

並行檔案系統產品中,GPFS,PVFS, PanFs, Lustre是比較常見的。它們都採用了類似於OSD的儲存叢集管理,但是在元資料管理,容錯機制,特徵,“turn-key”佈置等方面差別很大。

GPFS

給儲存節點提供了基於塊的訪問,使用DLM進行協調;通過SAN儲存網路進行資料互動。

PVFS

使用者管理元資料,沒有元資料快取,便於管理;類似於OSD的API進行資料訪問;名稱空間一致性;缺乏容錯機制;單一管理節點,管理節點容易成為系統瓶頸。主要是在HPC的應用。

參考:

PanFS

CMU NASD組研發,正好是我的老師研發的。整個系統提供了基於Obejct的RAID的容錯機制。支援原生的Linux檔案介面,在硬體部分還集成了電源管理/UPS。整個儲存叢集分為兩類節點:Storage node 和 Manage Node,其比例一般是10:1, 該比例是可以設定。儲存節點實現了物件儲存。管理節點由四部分組成:PanFS實現了分散式的元資料管理。 SysMgr 通過實現了Paxos選舉演算法來提供了高可用的叢集管理,管理所有的節點。同時提供了PanFS提供了NFS/CIFS 匯出介面。PanFS的體系結構也是通常的三部分, 資料伺服器,元資料伺服器和客戶端三部分。 資料伺服器對應的StorageNode,元資料伺服器對應的是Manage node 裡面PanFS,在Manage Node 裡提供了SysMgr的管理節點。首先看一下物件儲存(Object Storage),所謂物件,就是資料(data)和屬性(attributes)的容器. 物件提供兩層名稱空間(partition Id / Object ID), 物件的介面提供了基本的物件操作:如建立/刪除物件,基於byte的讀寫物件。儲存節點用FreeBSD作業系統,使用OSDFS這個自己寫的特殊的本地檔案系統。資料是通過RAID1或者RAID5來實現容錯。小檔案用mirror,大檔案用strip後的RAID5檔案的資料通過在多個物件上strip來實現冗餘和高頻寬。檔案的元資料是通過物件的屬性來儲存。整個檔案系統的元資料是儲存在物件的屬性中的。SysMgr用來管理整個機器的配置,錯誤檢測。其高可用是通過Client-driven, per-file RAID 客戶端實現基於檔案的RAID。

參考:

這種系統比較適合HPC的應用。

Lustre檔案系統

在PanFS的基礎上進行修改,更適合RPC網路協議的使用者。

從ClusterFS->SUN->Oracle

以上的設計可以總結如下圖:
這裡寫圖片描述

MPI-IO

應用使用適當的模型在它們的領域,I/O系統使用簡單的資料模型。基於樹的層次化容器;檔案:位元流;目錄:別的容器的集合。

MPI-IO是專門針對多執行緒的IO。資料模型和Posix一樣,檔案都是位元流表示。但是這個IO會進行IO彙集,非連續IO的操作(不是同一個檔案),非阻塞IO,針對更底層的設計。因為大多數的IO訪問是對多個檔案的隨機訪問,這樣直接執行的話,效率底下。所以講非連續的IO變成連續的IO就顯得很有意義。這樣可以大大提高頻寬。連續的含義一個是指在程序中的檔案的連續,另外一個是儲存物理空間塊之間的連續。所以我們最想要的就是兩個同時都是連續的,所以這裡會對訪問順序進行一定的調整。有ROMIO、MPI-IO/GPFS IBM,NEC的MPI。

參考連結:

為什麼講檔案系統沒有提及GFS和HDFS?下節再講。