分布式文件系統(常用分布式文件系統比對)
1 分布式文件系統
1.1 什么是分布式文件系統?
分布式文件系統(Distributed File System,DFS)是指文件系統管理的物理存儲資源不一定直接連接在本地節點上,而是通過計算機網絡與節點(可簡單的理解為一台計算機)相連;或是若干不同的邏輯磁盤分區或卷標組合在一起而形成的完整的有層次的文件系統。DFS為分布在網絡上任意位置的資源提供一個邏輯上的樹形文件系統結構,從而使用戶訪問分布在網絡上的共享文件更加簡便。
1.2 分布式文件系統與一般文件系統對比
分布式文件系統 |
一般文件系統 |
|
存儲數據的方式 |
數據分散的存儲在多台服務器上 |
集中存放所有數據,在一台服務器上 |
特點 |
分布式網絡存儲系統采用可擴展的系統結構,利用多台服務器分擔負荷,利用位置服務器定位存儲信息,不但提高了系統的可靠性、可用性和存取效率,還易於擴展,避免單點故障。 |
傳統的網絡存儲系統采用集中的服務器存放所有數據,到一定程度服務器會成為系統性能的瓶頸,也是可靠性和安全性的焦點,不能滿足大規模存儲應用的需要。 |
2 根據需求選擇分布式文件系統
目前可用於文件存儲的網絡服務選擇有很多,比如阿里雲OSS、騰訊雲、百度雲等等,對於中小型企業,如果不選擇存儲上雲,或者為了幫解約成本,可自行部署文件系統。
本文主要介紹了根據需求來對常用分布式文件系統進行篩選。
2.1 需求說明:
目前要找的分布式文件系統至少滿足以下條件:
-
頻繁讀寫、從不修改、基本不刪除
-
能夠存儲圖片、音頻以及100MB以上的視頻等文件
-
非常穩定、高可用、可擴容、可運維部署、
-
上手簡單、易於維護、社區相對活躍
2.2篩選流程
常用的分布式文件系統有:GFS、TFS、HDFS、MooseFs、FastDfs、MogileFs、GridFs、MinIO、SeaweedFS、GlusterFS、Ceph、GlusterFS等。
第一步:常見分布式文件系統比對
1、GFS(Google File System)
Google公司為滿足公司需求而開發的基於Linux的可擴展的分布式文件系統,用於大型的、分布式的、對大數據進行訪問和應用,成本低,應用於廉價的普通硬件上,但不開源,暫不考慮。
2、TFS(Taobao File System)
阿里巴巴為滿足了淘寶對小文件存儲的需求而開發的一個可擴展、高可用、高性能、面向互聯網服務、開源的分布式文件系統,主要針對海量的非結構化數據,它構築在普通的Linux機器集群上,可為外部提供高可靠和高並發的存儲訪問。TFS為淘寶提供海量小文件存儲,通常文件大小不超過1M,這個也暫不考慮。
3、HDFS(Hadoop Distributed File System)
Hadoop分布式文件系統,適合運行在通用硬件上做分布式存儲和計算,因為它具有高容錯性和可擴展性的特點,可部署在廉價的機器上,適合大數據的處理,在離線批量處理大數據上有先天的優勢。
Hadoop是Apache Lucene創始人Doug Cutting開發的使用廣泛的文本搜索庫。它起源於Apache Nutch,后者是一個開源的網絡搜索引擎,本身也是Luene項目的一部分。Aapche Hadoop架構是MapReduce算法的一種開源應用,是Google開創其帝國的重要基石。
4、MooseFS
MooseFS 是來自波蘭的開源且具備冗余容錯功能的分布式 POSIX 文件系統,也是參照了 GFS 的架構,實現了絕大部分 POSIX 語義和 API,它支持通過FUSE方式將文件掛載操作,同時其提供的web管理界面非常方便查看當前的文件存儲狀態,對master服務器有單點依賴,用perl編寫,用於中、大型文件應用,但性能相對較差,由於可能會實時訪問所以暫不考慮。
備注:POSIX表示可移植操作系統接口(Portable Operating System Interface of UNIX,縮寫為 POSIX ),POSIX標准定義了操作系統應該為應用程序提供的接口標准
5、FastDFS
由淘寶的余慶先生所開發的一個開源分布式文件系統。它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。適合以文件為載體的在線服務,如相冊網站、視頻網站等等。FastDFS為互聯網量身定制,充分考慮了冗余備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用FastDFS搭建一套高性能的文件服務器集群提供文件上傳、下載等服務。但是FastDFS部署有點麻煩,且它的SKD是不全的。
6、MogileFS
MogileFS是一套高效開源的文件自動備份組件,由Six Apart開發,廣泛應用在包括LiveJournal等web2.0站點上。支持多節點冗余,可實現自動的文件復制。不需要RAID,應用層可以直接實現RAID,不共享任何東西,通過集群接口提供服務工作於應用層,沒有特殊的組件要求。使用HTTP方式通信。
國內所知道的使用 MogileFS 的公司有圖片托管網站 yupoo又拍,digg, 土豆, 豆瓣,1 號店, 大眾點評,搜狗,安居客等等網站.基本很多網站容量,圖片都超過 30T 以上。
7、GridFS
MongoDB是一種知名的NoSql數據庫,GridFS是MongoDB的一個內置功能,它用於存儲和恢復那些超過16M(BSON文件限制)的文件(如:圖片、音頻、視頻等),是文件存儲的一種方式,但是它是存儲在MonoDB的集合中。它可以直接利用已建立的復制或分片機制,所以對於文件存儲來說故障恢復和擴展都容易,且GridFS不產生磁盤碎片。
8、MinIO
MinIO 是一個基於Apache License v2.0開源協議的對象存儲服務。它兼容亞馬遜S3雲存儲服務接口,非常適合於存儲大容量非結構化的數據,例如圖片、視頻、日志文件、備份數據和容器/虛擬機鏡像等,而一個對象文件可以是任意大小,從幾kb到最大5T不等。它也是一個非常輕量的服務,可以很簡單的和其他應用的結合。MinIO的特色在於簡單、輕量級,對開發者友好,學習成本低,安裝運維簡單,開箱即用。
而MinIO是apache項目,它擁有着較高的性能,100%兼容s3,學習成本低、安裝運維簡單、開箱即用。
9、SeaweedFS
SeaweedFS是基於go語言開發高度可擴展開源的分布式存儲系統,能存儲數十億文件(最終受制於你的硬盤大小)、並且速度快,內存占用小。上手使用比fastDFS要簡單很多,自帶Rest API。對於中小型文件效率非常高,但是單卷最大容量被程序限制到30G,建議存儲文件以100MB以內為主。
10、Ceph
Ceph是Red Hat旗下一個成熟的分布式文件系統,而且還是一個有企業級功能的對象存儲生態環境。該系統具備高性能、高可用性、高可擴展性、實時存儲性等特點。雖然ceph很強大,但是學習成本高、安裝運維復雜。Ceph用C++編寫,存儲容量可輕松達到PB級別。
11、GlusterFS
GlusterFS 是由美國的 Gluster 公司開發的 POSIX 分布式文件系統(以 GPL 開源),它主要應用在集群系統中,具有高擴展性、高可用性、高性能、可橫向擴展等特點,並且其沒有元數據服務器的設計,讓整個服務沒有單點故障的隱患。該系統主要是為中大型文件設計的,存儲容量可輕松達到PB。它存在擴容縮容影響服務器較多、遍歷目錄下文件耗時、小文件性能較差的缺點。
第二步:功能分類
-
適合做通用文件系統的有:Ceph、MooseFS、MinIO;
-
適合做中小文件存儲的文件系統有:Ceph、FastDFS、MinIO、SeaweedFS;
-
適合做大文件存儲的文件系統有:HDFS、MinIO、Ceph、GridFS;
-
輕量級文件系統有:FastDFS、MinIO、SeaweedFS;
-
簡單易用,用戶活躍的文件系統有:HDFS、FastDFS;
-
綜上:Ceph目前不夠成熟穩定,官方也明確指出不要把ceph用在生產環境中,暫不考慮;
-
經初步篩選剩下的文件系統有:HDFS、FastDFS、MinIO、GridFS。
第三步:分布式文件系統再次比對
MinIO:上手簡單,適合存儲大容量非結構化的數據, 基本滿足當前業務需求但是目前沒有中文社區。
FastDFS:功能精簡,支持在線擴容、冗余備份,部分支持跨集群同步,不存在單點故障,性能較好。但是不支持FUSE掛載和POSIX訪問接口。
HDFS:適合批量數據處理.可以部署在廉價的機器上。可以部署在廉價的機器上,但是不適合大量小文件,通過犧牲響應延時來換取高的吞吐量。
GridFS:能夠簡化技術棧,如果已經使用了MongoDB,那么使用GridFS,就不需要其它獨 立的存儲工具了(很遺憾我們當前還沒有引入MongoDB),不過性能不如直接訪問文件系統快。無法修改文檔。如果要修改GridFS里面的文檔,只能是先刪除再添加(對我們當前業務沒有影響)
2.3 綜述
目前提供的建議選型參考為MinIO或FastDFS,
如果想減少技術棧的話可以考慮HDFS或GridFS,
如果不在乎響應時間可以考慮HDFS。
相關文章:高性能對象存儲MinIO學習
本文地址:https://www.gpbctv.com/swkx/202109/376884.html
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時候聯系我們修改或刪除,多謝。