分布式文件系统之Tfs是什么?
Tfs
概念:
TFS(Team Foundation Server)是一個高可擴展、高可用、高性能、面向互聯網服務的分布式文件系統,主要針對海量的非結構化數據,它構筑在普通的Linux機器集群上,可為外部提供高可靠和高并發的存儲訪問。
?
架構設計:
一個TFS集群由兩個NameServer節點(一主一備)和多個DataServer節點組成。以block(通常為64M,可配置)為單位存儲和組織數據。這些服務程序都是作為一個用戶級的程序運行在普通Linux機器上的。
NameServer主要管理維護Block和DataServer相關信息,包括DataServer加入,退出, 心跳信息, block和DataServer的對應關系建立,解除。正常情況下,一個塊會在DataServer上存在, 主NameServer負責Block的創建,刪除,復制,均衡,整理, NameServer不負責實際數據的讀寫,實際數據的讀寫由DataServer完成。
DataServer主要負責實際數據的存儲和讀寫。
TFS會將多個小文件存儲在同一個block中,并為block建立索引,以便快速在block中定位文件;每個block會存儲多個副本到不同的機架上,以保證數據的高可靠性。
?
為了考慮容災,NameServer采用了HA結構,即兩臺機器互為熱備,同時運行,一臺為主,一臺為備,主機綁定到對外vip,提供服務;當主機器宕機后,迅速將vip綁定至備份NameServer,將其切換為主機,對外提供服務。
TFS采用了HA架構和平滑擴容,保證了整個文件系統的可用性和擴展性。同時扁平化的數據組織結構,可將文件名映射到文件的物理地址,簡化了文件的訪問流程,一定程度上為TFS提供了良好的讀寫性能。
?
部署方式:
HA結構、平滑擴容
在TFS中,將大量的小文件(實際數據文件)合并成為一個大文件,這個大文件稱為塊(Block), 每個Block擁有在集群內唯一的編號(Block Id), Block Id在NameServer在創建Block的時候分配, NameServer維護block與DataServer的關系。Block中的實際數據都存儲在DataServer上。而一臺DataServer服務器一般會有多個獨立DataServer進程存在,每個進程負責管理一個掛載點,這個掛載點一般是一個獨立磁盤上的文件目錄,以降低單個磁盤損壞帶來的影響。
?
使用方法:
寫操作:
TFS系統中,nameserver會保證一個文件有多個副本存儲于不同的dataserver上以保證冗余。當由于dataserver服務器宕機或由于其他原因退出系統導致某些文件副本數量下降時,nameserver將會調度新的dataserver節點存儲文件備份。同樣為了保證數據一致性,當寫入一個文件時,只有所有參與的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的偏移量,從而讀取到正確的文件內容。
?
?
?
應用場景:
TFS為淘寶提供海量小文件存儲,通常文件大小不超過1M,滿足了淘寶對小文件存儲的需求,被廣泛地應用在淘寶各項應用中。主要針對海量的非結構化數據,構筑在普通的Linux機器集群上,可為外部提供高可靠和高并發的存儲訪問。
總結
以上是生活随笔為你收集整理的分布式文件系统之Tfs是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spark _09资源调度和任务调度
- 下一篇: 分布式文件系统之Hdfs是什么?