TFS分布式檔案系統應用

2021-09-23 01:29:05 字數 2996 閱讀 8495

tfs是**開源的一套高效能檔案儲存系統,在阿里廣泛應用,

除了自建檔案系統,在應用上雲的大趨勢下,還可以使用阿里雲的物件儲存oss服務:

阿里雲物件儲存oss首頁

tfs(taobao file system)是乙個高可擴充套件、高可用、高效能、面向網際網路服務的分布式檔案系統,主要針對海量的非結構化資料,它構築在普通的linux機器集群上,可為外部提供高可靠和高併發的儲存訪問。

tfs為**提供海量小檔案儲存,通常檔案大小不超過1m,滿足了**對小檔案儲存的需求,被廣泛地應用在**各項應用中。

tfs採用了ha架構和平滑擴容,保證了整個檔案系統的可用性和擴充套件性。同時扁平化的資料組織結構,可將檔名對映到檔案的實體地址,簡化了檔案的訪問流程,一定程度上為tfs提供了良好的讀寫效能。

tfs開源首頁:

tfs集群由namserver和dataserver組成,以block(通常為64m,可配置)為單位儲存和組織資料。

nameserver主要管理維護block和dataserver相關資訊,包括dataserver加入,退出, 心跳資訊, block和dataserver的對應關係建立,解除。

正常情況下,乙個塊會在dataserver上存在, 主nameserver負責block的建立,刪除,複製,均衡,整理, nameserver不負責實際資料的讀寫,實際資料的讀寫由dataserver完成。

nameserver採用了ha結構,即兩台機器互為熱備,同時執行,一台為主,一台為備,主機繫結到對外vip,提供服務;當主機器宕機後,迅速將vip繫結至備份!nameserver,將其切換為主機,對外提供服務。

2)dataserver

dataserver主要負責實際資料的儲存和讀寫。

tfs會將多個小檔案儲存在同乙個block中,並為block建立索引,以便快速在block中定位檔案;每個block會儲存多個副本到不同的機架上,以保證資料的高可靠性。

tfs系統中,nameserver會保證乙個檔案有多個副本儲存於不同的dataserver上以保證冗餘。當由於dataserver伺服器宕機或由於其他原因退出系統導致某些檔案副本數量下降時,nameserver將會排程新的dataserver節點儲存檔案備份。同樣為了保證資料一致性,當寫入乙個檔案時,只有所有參與的dataserver均寫入成功時,該操作才算成功。

tfs的寫運算元據流圖如下所示:

1)客戶端向nameserver發起寫請求,nameserver返回乙個dataserver列表

客戶端首先向nameserver發起寫請求,nameserver需要根據dataserver上的可寫塊,容量和負載加權平均來選擇乙個可寫的block。並且在該block所在的多個dataserver中選擇乙個作為寫入的master,這個選擇過程也需要根據dataserver的負載以及當前作為master的次數來計算,使得每個dataserver作為master的機會均等。master一段選定,除非master宕機,不會更換,一旦master宕機,需要在剩餘的dataserver中選擇新的master。返回乙個dataserver列表。

2)客戶端向master dataserver開始資料寫入操作

master server將資料傳輸為其他的dataserver節點,只有當所有dataserver節點寫入均成功時,master server才會向nameserver和客戶端返回操作成功的資訊。

1)獲得block id和file id

根據tfs檔名解析出block id和block中的file id。

2)獲取dataserver位址

向nameserver傳送查詢請求得到block id所在的dataserver位址。

由於nameserver中維護了block和dataserver的對應關係,所以nameserver能夠提供相應的資訊。

note: 由於tfs是把大量小檔案放在乙個block裡面,

所以tfs的檔案複製是基於block的,而且複製出來的block的block id應該是一致的。

3)請求檔案

通過傳送block_id、file_id和offset為引數的讀請求到對應的dataserver,得到檔案內容。

dataserver會根據本地記錄的資訊來得到file id所在block的偏移量,從而讀取到正確的檔案內容。

常見的分布式檔案系統有,gfs、hdfs、lustre 、ceph 、gridfs 、mogilefs、tfs、fastdfs等。各自適用於不同的領域。它們都不是系統級的分布式檔案系統,而是應用級的分布式檔案儲存服務。

lustre是乙個大規模的、安全可靠的,具備高可用性的集群檔案系統,它是由sun公司開發和維護的。

該專案主要的目的就是開發下一代的集群檔案系統,可以支援超過10000個節點,數以pb的資料量儲存系統。

目前lustre已經運用在一些領域,例如hp sfs產品等。

由memcahed的開發公司danga一款perl開發的產品,目前國內使用mogielfs的有託管**yupoo等。

mogilefs是一套高效的檔案自動備份元件,由six apart開發,廣泛應用在包括livejournal等web2.0站點上。

官方論壇

fastdfs google code

分布式檔案系統fastdfs架構剖析

mongodb是一種知名的nosql資料庫,gridfs是mongodb的乙個內建功能,它提供一組檔案操作的api以利用mongodb儲存檔案,gridfs的基本原理是將檔案儲存在兩個collection中,乙個儲存檔案索引,乙個儲存檔案內容,檔案內容按一定大小分成若干塊,每一塊存在乙個document中,這種方法不僅提供了檔案儲存,還提供了對檔案相關的一些附加屬性(比如md5值,檔名等等)。

Taobao自主研發分布式檔案系統TFS

taobao自主研發分布式檔案系統tfs taobao file system 的訊息早有耳聞,最初來自網路上的一篇報道 或稱軟文 深度揭秘 自主研發的檔案系統tfs 因為個人研究興趣和工作內容相關的緣故,對tfs產生了很大的興趣,很是期待和關注。tfs前面一直傳說大致在2010.09月進行開源發布...

Taobao分布式檔案系統TFS簡析

taobao自主研發分布式檔案系統tfs taobao file system 的訊息早有耳聞,最初來自網路上的一篇報道 或稱軟文 深度揭秘 自主研發的檔案系統tfs 因為個人研究興趣和工作內容相關的緣故,對tfs產生了很大的興趣,很是期待和關注。tfs前面一直傳說大致在2010.09月進行開源發布...

分布式檔案系統

分布式檔案系統 概述 系統管理員可以利用分布式檔案系統 dfs 使使用者訪問和管理那些物理上跨網路分布的檔案更加容易。通過 dfs,可以使分布在多個伺服器上的檔案在使用者面前顯示時,就如同位於網路上的乙個位置。使用者在訪問檔案時不再需要知道和指定它們的實際物理位置。例如,如果您的銷售資料分散在某個域...