SeaweedFS基本介紹


SeaweedFS是一種簡單的、高度可擴展的分布式文件系統。有兩個目標:  

  1. 存儲數十億的文件!     storage billions of files  
  2. 查看檔案快!                     serve the files fast

weed-fs起初是為了搞一個基於Fackbook的Haystack論文的實現,Haystack旨在優化Fackbook內部圖片存儲和獲取。

后來這個基礎上,weed-fs作者又增加了若干feature,形成了目前的weed-fs。

SeaweedFS最初作為一個對象存儲來有效地處理小文件。中央主服務器只管理文件卷,而不是管理中央主服務器中的所有文件元數據,它允許這些卷服務器管理文件及其元數據。這減輕了中央主服務器的並發壓力,並將文件元數據傳播到卷服務器,允許更快的文件訪問(只需一個磁盤讀取操作)。

每個文件的元數據只有40字節的磁盤存儲開銷。使用O(1)磁盤讀取非常簡單。
Githup地址為: https://github.com/chrislusf/seaweedfs
官方文檔:https://github.com/chrislusf/seaweedfs/wiki
相關背景技術論文:
  中文版: http://www.importnew.com/3292.html
  英文版: http://static.usenix.org/event/osdi10/tech/full_papers/Beaver.pdf
安裝
有兩種安裝方式,第一種下載編譯好的直接使用,第二種是下載源碼進行編譯。由於暫時不更改源碼, 故使用第一種方式運行
下載地址:https://github.com/chrislusf/seaweedfs/releases     下載完成后,解壓出來直接運行。
相關定義意義說明

master      存儲文件和fid映射關系
Node       系統抽象的節點,抽象為DataCenter、Rack、DataNode
DataCenter   數據中心,對應現實中的不同機房
Rack        機架,對應現實中的機櫃,一個機架屬於特定的數據中心,一個數據中心可以包含多個機架。
Datanode     存儲節點,用於管理、存儲邏輯卷
Volume      邏輯卷,存儲的邏輯結構,邏輯卷下存儲Needle
Needle      邏輯卷中的Object,對應存儲的文件
Collection   文件集,可以分布在多個邏輯卷上,如果在存儲文件的時候沒有指定collection,那么使用默認的""

所有包含模塊

Weed master    開啟一個master服務器
Weed volume    開啟一個volume 服務器
Weed filer     開啟一個指向一個或多個master服務器的file服務器
Weed upload    上傳一個或多個文件
Weed server    啟動一個服務器,包括一個volume服務器和自動選舉一個master服務器

以上為主要使用的模塊,以下為模塊的參數及使用說明
1.Weed master
  參數            類型     說明

-cpuprofile          String    Cpu profile輸出文件
-defaultReplication     String    如果沒有指定默認備份類型。默認”000-garbageThreshold        String    清空和回收空間的閾值(默認”0.3”)
-ip                String    Master 服務器ip地址(默認”localhost”)
-ip.bind             String    需要綁定的ip地址(默認”0.0.0.0”)
-maxCpu              Int       最大cpu數量。0表示所有可用的cpu
-mdir               String    存儲元數據的數據目錄(默認”/tmp”)
-memprofile           String    內存配置文件輸出文件
-peers               String    代表服務器集群,逗號分隔所有主節點ip:端口,,示例127.0.0.1:9093,127.0.0.1:9094
-port               Int      http監聽端口(默認9333)
-pulseSeconds          Int       心跳檢測的時間間隔單位為秒(默認5)
-secure.secret          String    加密json web token方法
-volumePreallocate       無       為volumes預先分配磁盤空間
-volumeSizeLimitMB       Uint      Master停止指向過量的volumes寫的限定(默認30000)
-whiteList            String    逗號分隔具有寫權限的Ip地址。如果是空的,沒有限制。即白名單
defaultReplication說明
000 不備份, 只有一份數據
001 在相同的rackj里備份一份數據
010 在相同數據中心內不同的rack間備份一份數據
100 在不同的數據中心備份一份數據
200 在兩個不同的數據中心各復制2次
110 在不同的rack備份一份數據, 在不同的數據中心備份一次
如果數據備份類型是 xyz形式  各自的意義
x   在別的數據中心備份的份數
y   不相同數據中心不同的racks備份的份數
z   在別的服務器相同的rack的備份份數

2.Weed volume

  參數            類型            說明
-cpuprofile       string     Cpu profile輸出文件 -dataCenter       string     當前volume服務的數據中心名稱 -dir           string     存儲數據文件的目錄dir[,dir]…(默認”/tmp”) -idleTimeout       Int       連接空閑時間秒數(默認30) -images.fix.orientation (true/false) 上傳時調整jpg方向 -index          string     選擇內存~性能平衡模式[memory|leveldb|boltdb|btree]。(默認”memory”) -ip            string     Ip地址或服務器名稱 -ip.bind         string     需要綁定的ip地址(默認”0.0.0.0”) -max           string     Volumes的最大值,count[,count]…(默認”7”) -maxCpu          Int       最大cpu數量。0表示所有可用的cpu -memprofile       string     內存配置文件輸出文件 -mserver         string     用逗號分隔的master服務器列表(默認”localhost:9333”) -port           Int       http監聽端口號(默認8080) -port.public       Int       端口對外開放 -publicUrl       string     公開訪問地址 -pulseSeconds       Int      心跳之間的秒數,必須小於或等於master 服務器設置(默認5) -rack           string     當前volume服務器的rack 名稱 -read.redirect      (true/false)   重新定向轉移或非本地 volumes -whiteList       string    逗號分隔具有寫權限的Ip地址。如果是空的,沒有限制。

3.Weed filer

  參數              類型        說明
collection             String    所有數據將存儲在這個集合中
dataCenter             String    首選在此數據中心寫入volumes
defaultReplicaPlacement     String     如果沒有指定默認復制類型(默認“000”)
dirListLimit            Int      限制子目錄列表大小
disableDirListing         無       關閉目錄清單
ip                  String    Filter服務器http監聽ip地址
master               String    用逗號分隔的master服務器(默認“localhost:9333”)
maxMB                Int       分割文件大於限制(默認32)
port                Int      Filer服務器htp監聽端口(默認8888)
port.grpc             Int      Filer grpc服務器監聽端口,默認為 http的端口+10000
port.public            Int      對外開放的端口
redirectOnRead          無       在文件GET請求期間是代理還是重定向到volumes服務器
secure.secret           String    加密Json Web令牌(JWT)的密鑰

 

4.Weed upload

  參數      類型     說明
collection string 可選的集合名稱 dataCenter String 可選的數據中心名稱 debug     無   顯示debug信息 dir      String 如果指定,則遞歸地上傳整個文件夾。 include   String 需要上傳的文件,跟-dir配合使用,例如*.pdf,*.html,ab?d.txt等 master    String Seaweedfs master服務器地址(默認”localhost:9333”) maxMB     Int 如果文件超過指定大小則進行分割 replication string 備份類型 secure.secret string 加密Json Web令牌(JWT)的密鑰 ttl      string 存活時間 1m,1h,1d,1M,1y

以上是maset volume upload filer 的所有參數說明。是主要的功能。

使用接口

申請一個fid        curl http://localhost:9333/dir/assign
上傳文件          curl -F file=@/home/chris/myphoto.jpg http://127.0.0.1:8080/3,01637037d6 刪除文件          curl -X DELETE http://127.0.0.1:8080/3,01637037d6 申請帶存活時間及設置集合的fid    curl http://localhost:9333/dir/assign?ttl=3m&collenction=xxx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM