1. 程式人生 > >網盤系列:企業網盤開發基礎知識

網盤系列:企業網盤開發基礎知識

  1. 前言

網盤,首先要學習現有的商業和私有的網盤實現方式。其次要根據客戶提供硬體環境來選擇合理檔案儲存方案,例如使用商業儲存,還是使用分散式儲存系統。

網盤的主要分為兩大部分,一部分是網盤業務部分。例如:檔案上傳,網盤管理,許可權設定等內容。另外一部分是檔案儲存部分。例如:檔案上傳後存到那個伺服器上,伺服器如何維護,如何做到可擴充套件。

要做到以上內容。我們必須先學習和了解商業網路儲存、分散式檔案系統、網盤實現原理。

  1. 商業網路儲存概念

商業儲存產品主要分為三種:

  • DAS(Direct Attached Storage—直接附加儲存)是指將儲存裝置通過SCSI介面或光纖通道直接連線到一臺計算機上。
  • 儲存區域網路(SAN)是一種高速網路或子網路,提供在計算機與儲存系統之間的資料傳輸。
  • 網路連線儲存(NAS)是一種可以接受的選擇方案。它是一臺功能強大的資料伺服器,能在檔案級別上處理資料。
  1. DAS:直接附加儲存

伺服器在地理分佈上很分散,通過SANNAS在它們之間進行互連非常困難時(商店或銀行的分支便是一個典型的例子);

儲存系統必須被直接連線到應用伺服器(MicrosoftCluster Server或某些資料庫使用的“原始分割槽”)上時;

包括許多資料庫應用和應用伺服器在內的應用,它們需要直接連線到儲存器上,群件應用和一些郵件服務也包括在內。

當伺服器在地理上比較分散,很難通過遠端連線進行互連時,直接連線儲存是比較好的解決方案,甚至可能是唯一的解決方案。利用直接連線儲存的另一個原因也可能是企業決定繼續保留已有的傳輸速率並不很高的網路系統。

  1. 技術選擇參考

這可以從字面上來理解:直接連線到伺服器,這是最早的磁碟和主機相互連線的方式。對小規模安裝而言,這種方法可能仍是最佳選擇。DAS價格低廉,安裝和支援方便,但DAS的伸縮性不好,而且基礎安裝缺少以下兩類產品具有的資料冗餘性。不過,既然你所購買的只是一堆磁碟,就不要有太多奢望了。

可以改進DAS的效能,即採用硬體RAID SCSI卡來增強冗餘性,或者是採用光纖通道連線的磁碟,以獲得更高的可伸縮性。不過,你真這麼做,還不如考慮採用下述解決方案:NAS或者SAN

注意:DAS主要是通過一個光仟線直接連結一個主機,不能被多個主機所共享。通常用於當主機需要大容量硬碟的時候(大於4TB

以上),而主機由沒有多餘SATA等埠擴充套件使用,可以使用DAS來擴充套件。

現階段瞭解到DASDell的產品支援96TB

  1. NAS:網路附加儲存

NAS(Network Attached Storage—網路附加儲存)即將儲存裝置通過標準的網路拓撲結構(例如乙太網),連線到一群計算機上。NAS是部件級的儲存方法,它的重點在於幫助工作組和部門級機構解決迅速增加儲存容量的需求。需要共享大型CAD文件的工程小組就是典型的例子。

NAS產品包括儲存器件(例如硬碟驅動器陣列、CDDVD驅動器、磁帶驅動器或可移動的儲存介質)和整合在一起的簡易伺服器,可用於實現涉及檔案存取及管理的所有功能。簡易伺服器經優化設計,可以完成一系列簡化的功能,例如文件儲存及服務、電子郵件、網際網路快取等等。整合在NAS裝置中的簡易伺服器可以將有關儲存的功能與應用伺服器執行的其他功能分隔開。

這種方法從兩方面改善了資料的可用性。第一,即使相應的應用伺服器不再工作了,仍然可以讀出資料。第二,簡易伺服器本身不會崩潰,因為它避免了引起伺服器崩潰的首要原因,即應用軟體引起的問題。

NAS產品具有幾個引人注意的優點。首先,NAS產品是真正即插即用的產品。NAS裝置一般支援多計算機平臺,使用者通過網路支援協議可進入相同的文件,因而NAS裝置無需改造即可用於混合Unix/Windows NT區域網內。其次,NAS裝置的物理位置同樣是靈活的。它們可放置在工作組內,靠近資料中心的應用伺服器,或者也可放在其他地點,通過物理鏈路與網路連線起來。無需應用伺服器的干預,NAS裝置允許使用者在網路上存取資料,這樣既可減小CPU的開銷,也能顯著改善網路的效能。

NAS沒有解決與檔案伺服器相關的一個關鍵性問題,即備份過程中的頻寬消耗。與將備份資料流從LAN中轉移出去的儲存區域網(SAN)不同,NAS仍使用網路進行備份和恢復。NAS的一個缺點是它將儲存事務由並行SCSI連線轉移到了網路上。這就是說LAN除了必須處理正常的終端使用者傳輸流外,還必須處理包括備份操作的儲存磁碟請求。

 

  1. 技術選擇參考

網路連線儲存(NAS)是通過IP網路訪問的儲存系統,採用NFS或者CIFS協議(NFSUnix協議,CIFSWindows協議)。這兩種協議實際上都可以在檔案層面對資料進行操作,所以你在改動資料時,就是在改動整個檔案。這有助於編輯改動不大頻繁的電子表格(因為電子表格放在本地PC的記憶體中)的使用者,不過並不適合大規模資料庫,因為這種資料庫可能會有容量達到數百兆的諸多檔案。對這些大規模需求而言,就需要儲存基礎設施的重要角色:SAN

注意:NAS儲存裝置,通常安裝作業系統,通過NFS或者CIFS協議作為檔案系統,通過區域網絡被其他系統使用。通過使用RAID來進行資料備份。HP,DELL等廠家的產品,據瞭解他們的硬體通過擴充套件,最大支援2PB容量。

擴充套件性、災難恢復能力不足。因為他就是一個非高效能的大容量磁碟的一個系統,擴充套件都是通過在伺服器上插入更多的硬碟。

  1. SAN:儲存區域網路

SAN(儲存區域網路)通過光纖通道連線到一群計算機上。在該網路中提供了多主機連線,但並非通過標準的網路拓撲。

SAN則專注於企業級儲存的特有問題。當前企業儲存方案所遇到問題的兩個根源是:資料與應用系統緊密結合所產生的結構性限制,以及目前小型計算機系統介面(SCSI)標準的限制。大多數分析都認為SAN是未來企業級的儲存方案,這是因為SAN便於整合,能改善資料可用性及網路效能,而且還可以減輕管理作業。


  1. 技術選擇參考

儲存區域網路可以讓眾多儲存部件和主機利用名為光纖通道的一種基礎設施,相互連線起來。光纖通道包括多個交換機和光纖線纜,實施方式類似IP網路。

不過,SAN的配置在結構上往往更為嚴密,其設計考慮到了冗餘性,並且儘量減少主機和磁碟之間交換機連線的數量。遺憾的是,SAN這種基礎設施實施起來成本最高昂,因而支援費用也最高昂。至於優點,SAN有著極好的伸縮性。如果實施得當,還具有非常強的靈活性。

猛一看,這種解決方案的成本似乎低於實施專用的SAN。不過,大多數管理員出於效能上的考慮,選擇實施的反而是專用的iSCSI網路。SAN刀片可以讓NAS裝置為儲存區域網路(SAN)提供磁碟。對於降低磁碟子系統成本至關重要的場合而言,譬如在開發環境,這種方案絕對具有潛力。

注意:SAN不同與NAS提供遠端訪問檔案系統(NFS),而是直接提供“磁碟(block device)”給主機使用(磁碟就是如同大硬碟,需要作業系統進行格式化)。主機需要對SAN提供的大磁碟進行分割與格式化等操作。

Linux上,我們可以使用邏輯卷、物理捲來載入對應的SAN提供的大磁碟。大磁碟最大值預設是256GB,而通過修改PE(物理擴充套件)來提高相應的最大容量。可以獲得1PB大小。(這依賴於Linux版本)

  1. 分散式檔案系統


 

分散式檔案系統,作為網盤的基礎,應用底層檔案管理。而分散式檔案系統之上,使用者檔案的許可權,使用者目錄管理都是由非分散式檔案系統管理。

分散式檔案系統需要關心的主要內容:

  • 檔案分佈/資料分佈:檔案是否分片,檔案儲存按照什麼演算法來儲存(DHT
  • 冗餘保護/副本:是否有綴於,綴於是否可以回覆。
  • 資料可靠性:當資料出現問題,是否可以發現,如何回覆。
  • 備份:如何提供被被封工作。
  • 故障恢復:出現問題是否可以回覆。
  • 擴充套件性:當容量不夠時,是否可以無限增加容量。
  • 安裝/部署:是否需要修改核心,部署是否方便。
  • 開發語言:是否使用常用開發語言。
  • 適合場景:對不同檔案大小有常用的支援。

除了一下檔案系統,還有HDFS等分散式檔案儲存系統,MongoDBGridFs等檔案系統。

MooseFS(MFS)

CephSwfit

GlusterFS(類似的有FastDFS

Lustre

Metadata server

單個MDS。存在單點故障和瓶頸。

多個MDS,不存在單點故障和瓶頸。MDS可以擴充套件,不存在瓶頸。

無,不存在單點故障。靠執行在各個節點上的動態演算法來代替MDS,不需同步元資料,無硬碟I/O瓶頸。

MDS(互相備份)MDS不可以擴充套件,存在瓶頸。

FUSE(使用者態檔案訪問)

支援

支援

支援

支援

訪問介面

POSIX

POSIX

POSIX

POSIX/MPI

檔案分佈/資料分佈

檔案被分片,資料塊儲存在不同的儲存伺服器上。

檔案被分片,每個資料塊是一個物件。物件儲存在不同的儲存伺服器上。

Cluster Translators(GlusterFS叢集儲存的核心)包括AFRDHT(和Stripe三種類型。

AFR相當於RAID1,每個檔案都被複制到多個儲存節點上。Stripe相當於RAID0,檔案被分片,資料被條帶化到各個儲存節點上。

Translators可以組合,即AFRstripe可以組成RAID10,實現高效能和高可用。

可以把大檔案分片並以類似RAID0的方式分散儲存在多個儲存節點上。

冗餘保護/副本

多副本

多副本

映象

資料可靠性

由資料的多副本提供可靠性。

由資料的多副本提供可靠性。

由映象提供可靠性。

由儲存節點上的RAID1RAID5/6提供可靠性。假如儲存節點失效,則資料不可用。

備份

提供備份工具。支援遠端備份。

故障恢復

手動恢復

當節點失效時,自動遷移資料、重新複製副本。

當節點、硬體、磁碟、網路發生故障時,系統會自動處理這些故障,管理員不需介入。

擴充套件性

增加儲存伺服器,可以提高容量和檔案操作效能。但是由於不能增加MDS,因此元資料操作效能不能提高,是整個系統的瓶頸。

可以增加元資料伺服器和儲存節點。容量可擴充套件。檔案操作效能可擴充套件。元資料操作效能可擴充套件。

容量可擴充套件。

可增加儲存節點,提高容量可檔案操作效能,但是由於不能增加MDS,因此元資料操作效能不能提高,是整個系統的瓶頸。

安裝/部署

簡單

簡單

簡單

複雜。而且Lustre嚴重依賴核心,需要重新編譯核心。

開發語言

C

C++

C

C

適合場景

大量小檔案讀寫

小檔案

適合大檔案。

對於小檔案,無元資料服務設計解決了元資料的問題。但GlusterFS並沒有在I/O方面作優化,在儲存伺服器底層檔案系統上仍然是大量小檔案,本地檔案系統元資料訪問是瓶頸,資料分佈和並行性也無法充分發揮作用。因此,GlusterFS的小檔案效能還存在很大優化空間。

大檔案讀寫

產品級別

小型

中型

中型

重型

應用

國內較多

較多使用者使用

HPC領域。

優缺點

實施簡單,但是存在單點故障。

不穩定,目前還在實驗階段,不適合於生產環境。

無元資料伺服器,堆疊式架構(基本功能模組可以進行堆疊式組合,實現強大功能)。具有線性橫向擴充套件能力。

由於沒有元資料伺服器,因此增加了客戶端的負載,佔用相當的CPU和記憶體。

但遍歷檔案目錄時,則實現較為複雜和低效,需要搜尋所有的儲存節點。因此不建議使用較深的路徑。

很成熟、很龐大。

  1. 雲端儲存平臺學習
  1. Seafile


包含:群組功能,使用者可以建立和加入群組
, 在群組中共享檔案。這對團隊協作很有用。 

檔案組織成資料庫。每個資料庫可以單獨同步和共享。

線上檔案協作,包括檔案線上預覽、評論、推薦等等。 Markdown, text,原始碼等文字格式可以直接線上編輯。

SeaFile主要是“檔案屬性、路徑管理系統”。底層儲存系統可以採用SwiftCept

  1. 360等網盤底層

lustre更加適合分散式運算方面的,比如高效能運算節點什麼的,在網盤業務這塊,個人覺得mooseFSglusterfs更加靠譜一些吧。Lustre不適合做類似網盤的使用。首先Lustre沒有磁碟容錯功能;即使實現服務容錯也需要交叉互連的盤陣,構建成本較高。其次我認為在網盤服務中,對於儲存系統不需要有太強的一致性語義;而lustre採用的是POSIX強一致性語義。lustre靠的資料分條來提高IO效能的,不知道這個和網盤的IO訪問模式是否相容。還有就是lustre是核心態系統,比較複雜,維護較困難。

115網盤用了fastdfs

  1. 參考資料列表