開源Distributed File System

來源:互聯網
上載者:User

FastDFS是一個開源的輕量級Distributed File System,她對檔案進行管理,功能包括:檔案儲存體、檔案同步、檔案訪問(檔案上傳、檔案下載)等,解決了大型存放區和負載平衡的問題。特別適合以檔案為載體的線上服務,如相簿網站、視頻網站等等。

FastDFS服務端有兩個角色:跟蹤器(tracker)和儲存節點(storage)。跟蹤器主要做調度工作,在訪問上起負載平衡的作用。

儲存節點隱藏檔,完成檔案管理的所有功能:儲存、同步和提供存取介面,FastDFS同時對檔案的metadata進行管理。所謂檔案的meta data就是檔案的相關屬性,以索引值對(key valuepair)方式表示,如:width=1024,其中的key為width,value為1024。檔案metadata是檔案屬性列表,可以包含多個索引值對。

FastDFS系統結構如所示:

跟蹤器和儲存節點都可以由一台多台伺服器構成。跟蹤器和儲存節點中的伺服器均可以隨時增加或下線而不會影響線上服務。其中跟蹤器中的所有伺服器都是對等的,可以根據伺服器的壓力情況隨時增加或減少。

為了支援大容量,儲存節點(伺服器)採用了分卷(或分組)的組織方式。儲存系統由一個或多個卷組成,卷與卷之間的檔案是相互獨立的,所有卷的檔案容量累加就是整個儲存系統中的檔案容量。一個卷可以由一台或多台儲存伺服器組成,一個卷下的儲存伺服器中的檔案都是相同的,卷中的多台儲存伺服器起到了冗餘備份和負載平衡的作用。
在卷中增加伺服器時,同步已有的檔案由系統自動完成,同步完成後,系統自動將新增伺服器切換到線上提供服務。

當儲存空間不足或即將耗盡時,可以動態添加卷。只需要增加一台或多台伺服器,並將它們配置為一個新的卷,這樣就擴大了儲存系統的容量。
FastDFS中的檔案標識分為兩個部分:卷名和檔案名稱,二者缺一不可。


  FastDFS file upload
上傳檔案互動過程:
1. client詢問tracker上傳到的storage,不需要附加參數;
2. tracker返回一台可用的storage;
3. client直接和storage通訊完成檔案上傳。

  FastDFS file download
下載檔案互動過程:
1. client詢問tracker下載檔案的storage,參數為檔案標識(卷名和檔案名稱);
2. tracker返回一台可用的storage;
3. client直接和storage通訊完成檔案下載。

需要說明的是,client為使用FastDFS服務的調用方,client也應該是一台伺服器,它對tracker和storage的調用均為伺服器間的調用。

google code地址:http://code.google.com/p/fastdfs/
google code:http://code.google.com/p/fastdfs/downloads/list

MogileFS一個開源的Distributed File System

1.應用程式層——沒有特殊的組件要求
2.無單點失敗——MogileFS啟動的三個組件(儲存節點、跟蹤器、跟蹤用的資料庫),均可運行在多個 機器上,因此沒有單點失敗。(你也可以將跟蹤器和儲存節點運行在同一台機器上,這樣你就沒有必要用4台機器)推薦至少兩台機器。
3.自動的檔案複製——檔案是基於他們的“類”,檔案可以自動的在多個儲存節點上複製,這是為了盡量少的複製,才使用“類”的。加入你有的圖片網站有 三份JPEG圖片的拷貝,但實際只有1or2份拷貝,那麼Mogile可以重建立立遺失的拷貝數。用這種辦法,MogileFS(不做RAID)可以節約 在磁碟,否則你將儲存同樣的拷貝多份,完全沒有必要。
4.“比RAID好多了”——在一個非存放區域網路的RAID(non-SAN RAID)的建立中,磁碟是冗餘的,但主機不是,如果你整個機器壞了,那麼檔案也將不能訪問。 MogileFS在不同的機器之間進行檔案複製,因此檔案始終是可用的。
5.傳輸中立,無特殊協議——MogileFS用戶端可以通過NFS或HTTP來和MogileFS的儲存節點來通訊,但首先需要告知跟蹤器一下。
6.簡單的命名空間——檔案通過一個給定的key來確定,是一個全域的命名空間。你可以自己產生多個命名空間,只要你願意,但是這樣可能在同一MogileFS中,會造成衝突key。
7.不用共用任何東西——MogileFS不需要依靠昂貴的SAN來共用磁碟,每個機器只用維護好自己的磁碟。
8.不需要RAID——在MogileFS中的磁碟可以是做了RAID的也可以是沒有,如果是為了安全性著想的話RAID沒有必要買了,因為MogileFS已經提供了。
9.不會碰到檔案系統本身的不可知情況——在MogileFS中的儲存節點的磁碟可以被格式化成多種格(ext3,reiserFS等等)。MogilesFS會做自己內部目錄的雜湊,所以它不會碰到檔案系統本身的一些限制,比如一個目錄中的最大檔案數。你可以放心的使用。

FastFDS和MogileFS的對比

FastDFS設計時借鑒了MogileFS的一些思路。FastDFS是一個完善的分布式檔案儲存體系統,通過用戶端API對檔案進行讀寫。可以說,MogileFS的所有功能特性FastDFS都具備,MogileFS網址:http://www.danga.com/mogilefs/。

另外,相對於MogileFS,FastDFS具有如下特點和優勢:
1. FastDFS完善程度較高,不需要二次開發即可直接使用;
2. 和MogileFS相比,FastDFS裁減了跟蹤用的資料庫,只有兩個角色:tracker和storage。FastDFS的架構既簡化了系統,同時也消除了效能瓶頸;
3. 在系統中增加任何角色的伺服器都很容易:增加tracker伺服器時,只需要修改storage和client的設定檔(增加一行tracker配置);增加storage伺服器時,通常不需要修改任何設定檔,系統會自動將該卷中已有檔案複製到該伺服器;
4. FastDFS比MogileFS更高效。表現在如下幾個方面:
  1)參見上面的第2點,FastDFS和MogileFS相比,沒有檔案索引資料庫,FastDFS整體效能更高;
  2)從採用的開發語言上看,FastDFS比MogileFS更底層、更高效。FastDFS用C語言編寫,代碼量不到2萬行,沒有依賴其他開源軟體或程式包,安裝和部署特別簡潔;而MogileFS用perl編寫;
  3)FastDFS直接使用socket通訊方式,相對於MogileFS的HTTP方式,效率更高。並且FastDFS使用sendfile傳輸檔案,採用了記憶體零拷貝,系統開銷更小,檔案傳輸效率更高。
5. FastDFS有著詳細的設計和使用文檔,而MogileFS的文檔相對比較缺乏。
6. FastDFS的日誌記錄非常詳細,系統運行時發生的任何錯誤資訊都會記錄到記錄檔中,當出現問題時方便管理員定位錯誤所在。
7. FastDFS還對檔案附加屬性(即meta data,如檔案大小、圖片寬度、高度等)進行存取,應用不需要使用資料庫來儲存這些資訊。
8. FastDFS從V1.14開始支援相同檔案內容只儲存一份,這樣可以節省儲存空間,提高檔案訪問效能。

 

FastDFS是一個開源的Distributed File System,純C語言編寫。她對檔案進行管理,功能包括:檔案儲存體、檔案同步、檔案訪問(檔案上傳、檔案下載)等,解決了大型存放區和負載平衡的問題。特別適合以檔案為載體的線上服務,如相簿網站、視頻網站等等。

詳情請參閱:FastDFS簡介
FastDFS官方網站:FastDFS官方網站

http://www.cnblogs.com/lzjsky/archive/2011/06/28/2092231.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.