概述
GitHub - seaweedfs/seaweedfs
结构图
image-20240219154643881
文件上传
img
文件同步
img
文件下载
img
安装
二进制文件
单机部署
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的社区规模和支持可能相对较小。
Preview: