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     下载完成后,解压出来直接运行。
相关定义意义说明

1
2
3
4
5
6
7
8
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

posted @ 2021-03-05 12:12  GaoYanbing  阅读(859)  评论(0编辑  收藏  举报