Seaweeds

default

概述

GitHub - seaweedfs/seaweedfs

结构图

  • Master

    Master 是 SeaweedFS 集群的控制节点,负责管理集群中的所有卷(Volumes),以及卷的分配和复制。Master 还负责维护文件的元数据信息。

  • Volume

    Volume 是 SeaweedFS 中存储实际文件数据的组件。每个 Volume 存储一部分文件数据,并且可以根据需要进行动态扩展或收缩。Volume 中每个 Needle 对应一个文件。

文件上传

文件同步

文件下载

安装

二进制文件

单机部署

1
2
3
4
5
6
# 启动 master
nohup ./weed master -ip=10.254.193.105  -mdir=/home/work/service/weedfs/master -defaultReplication=000   > /home/work/service/weedfs/master/master.log 2>&1&

# 启动 volume
nohup ./weed volume -port=8081 -dir=/home/work/service/weedfs/volume01 -max=7 -fileSizeLimitMB=200 -mserver=10.254.193.105:9333  -dataCenter=dc1 -rack=rack1 >/home/work/service/weedfs/master/volume1.log 2>&1&

集群部署

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 启动 master
nohup ./weed master -ip=10.254.193.105 -port=9333 -mdir=/home/work/service/weedfs/master  -peers=10.254.193.183:9333,10.254.193.105:9333,10.254.193.89:9333  > /home/work/service/weedfs/master/master.log 2>&1&

nohup ./weed master -ip=10.254.193.183 -port=9333 -mdir=/home/work/service/weedfs/master  -peers=10.254.193.183:9333,10.254.193.105:9333,10.254.193.89:9333  > /home/work/service/weedfs/master/master.log 2>&1&

nohup ./weed master -ip=10.254.193.89 -port=9333 -mdir=/home/work/service/weedfs/master  -peers=10.254.193.183:9333,10.254.193.105:9333,10.254.193.89:9333  > /home/work/service/weedfs/master/master.log 2>&1&


# 启动 volume
nohup ./weed volume -port=10001 -dir=/home/work/service/seaweedfs/volume01 -max=7 -fileSizeLimitMB=200 -mserver=10.254.193.105:9333,10.254.193.183:9333,10.254.193.89:9333 -dataCenter=dc1 -rack=rack1 >/home/work/service/seaweedfs/master/volume1.log 2>&1&

nohup ./weed volume -port=10002 -dir=/home/work/service/seaweedfs/volume02 -max=7 -fileSizeLimitMB=200 -mserver=10.254.193.105:9333,10.254.193.183:9333,10.254.193.89:9333 -dataCenter=dc1 -rack=rack1 >/home/work/service/seaweedfs/master/volume1.log 2>&1&

Docker

1
2
3
docker run -p 9333:9333 --name master chrislusf/seaweedfs master -ip=master

docker run -p 8080:8080 -p 18080:18080 --name volume --link master chrislusf/seaweedfs volume -max=5 -mserver="master:9333" -port=8080

Docker-compose

1
2
# 文件见 https://github.com/seaweedfs/seaweedfs
docker-compose -f docker/seaweedfs-compose.yml -p seaweedfs up

文件操作

上传

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 获取 fid
curl -X POST http://localhost:9333/dir/assign
# {"fid":"8,06ca4883a0","url":"1ocalhost:8081","publicUrl":"localhost:8081","count":1}


# 根据获取到的 fid 上传文件
curl -X PUT -F file=@/home/back.png http://localhost:8081/14,f4187c8fdb
# {"name": "back.png","size": 64300 }

# 上传目录
./weed upload -master=localhost:9333 -dir=one_directory -include=*.pdf

# 更新文件
curl -X PUT -F file=@/home/back2.png http://localhost:8081/14,f4187c8fdb

# 查看文件
# (1)先获取卷信息
curl http://127.0.0.1:9333/dir/lookup?volumeId=14
# {"volumeOrFileId":"14","locations":[{"url":"10.254.193.183:8081","publicUrl":"10.254.193.183:8081"}]}
# (2)再通过获取到的 volume 服务器的地址访问
http://10.254.193.183:8081/14,f4187c8fdb


# 删除文件
curl -X DELETE http://localhost:8081/8,06ca4883a0

支持的协议

Filer

1
2
3
4
5
6
# 生成配置,修改 filer.toml 使 dir 指向到目录
./weed scaffold -config=filer -output=.

# 启动 filer
nohup ./weed filer -port=8888  -master=10.254.193.105:9333 -ip=10.254.193.105  >/home/work/service/weedfs/filter/filter.log 2>&1&

上传文件

api调用
1
curl -F "filename=@/home/work/service/weedfs/cat.jpg" "http://10.254.193.105:8888/test/file/"
本地挂载
1
2
3
4
5
6
7
8
9
# 安装 fuse
yum install -y fuse

# 挂载
./weed mount -filer=10.254.193.105:8888 -dir=/home/work/service/weedfs/mount >/home/work/service/weedfs/filter/mount.log 2>&1&

# 创建目录
mkdir -p /data/seaweedfs/logs /data/seaweedfs/master /data/seaweedfs/volume/volume01 /data/seaweedfs/volume/volume02 /home/work/service/seaweedfs/master

S3

S3 是指 SeaweedFS 对象存储接口的一种实现,允许通过 S3 协议访问 SeaweedFS 存储的对象数据,使得 SeaweedFS 可以与支持 S3 协议的应用程序和工具进行集成

WebDAV

WebDAV 是一种基于 HTTP 协议的文件管理技术,SeaweedFS 提供了 WebDAV 接口,允许用户通过 WebDAV 协议访问和管理存储在 SeaweedFS 中的文件

优缺点

优点:

高可靠性:SeaweedFS具有数据冗余和自动恢复功能,可以确保数据的安全性和可靠性。 高性能:它支持快速的文件读写操作,并且具有良好的扩展性,可以处理大规模的数据存储需求。 易于部署和管理:SeaweedFS设计简单,易于部署和管理,减少了运维成本。 节约存储空间:利用数据去重和压缩等技术,可以节约存储空间。

缺点:

一致性:在某些情况下,由于分布式系统的特性,可能出现一致性问题。 学习曲线:对于初学者来说,SeaweedFS的概念和架构可能需要一定时间来理解和掌握。 社区支持:相对于一些主流的分布式存储系统,SeaweedFS的社区规模和支持可能相对较小。

Licensed under CC BY-NC-SA 4.0
Comments
  • Latest
  • Oldest
  • Hottest
No comment yet.
Powered by Waline v2.15.8
Gear(夕照)的博客。记录开发、生活,以及一些不足为道的思考……