目录
- 1. 介绍
- 1.1 Components
- 1.2 Master 服务
- 1.3 Volume 服务
- 1.4 Filer服务
- 1.5 S3服务
- 1.6 Volume的概念
- 1.7 Collection的概念
- 2. 快速入门
- 2.1 安装 SeaweedFS
- 2.2 启动 Master 服务
- 2.3 启动 Volume 服务
- 2.4 快速启动一个Master服务和一个Volume服务
- 2.5 测试
- 3. 参考
1. 介绍
1.1 Components
有三个主要的组件,Master服务和Volume服务共同提供了分布式的冗余高可用对象存储服务。filer和S3服务是对象存储之上的一层。这些服务都可以单实例或者多实例的模式运行在不同的服务器上。
1.2 Master 服务
Master服务包含了1台(3台或者更多)服务器,拥有整个SeaweedFS集群的一致性视图,根据Raft协议选举出该服务的leader,leader会与集群中的所有节点通信。
为了保证多数共识算法可以运行,Master服务的节点数必须是奇数的。另外,节点数不需要太多,少量稳定的服务器比大量不稳定的服务器要好。通常来说,1或者3个即可。
所有的Volume服务都需要向Mater服务的leader节点发送心跳信息,根据心跳信息决定路由,以及复制。
如果leader节点不可用了,根据raft共识协议会重新指派一个leader。 之前的leader会被降级直到它恢复正常。
1.3 Volume 服务
Volume 服务会把很多对象(文件或者文件块)高效地打包成一个单独的Volume。数据的复制和冗余是以Volume为单位的。
每个Volume服务节点都会周期性的发送心跳信息到Master服务的leader节点,心跳信息包含状态和volume的信息。
Volume服务在内存中维护fid到文件读写位置的映射,实现每次查询和写入都只需要1次IO操作,同一个Volume的操作是串行的。
1.4 Filer服务
Filer服务通过HTTP或者UNIX Mount等用户可见的方式来组织SeaweedFS的volumes和对象,例如url,文件系统。
该服务不是必须的。
1.5 S3服务
提供类AWS S3 buckets的访问方式。
该服务不是必须的。
1.6 Volume的概念
由许多小文件构成了一个大的文件,这就是Volume。 Volume的默认大小是30G。 整个集群最开始有8个Volume。每个Volume都可以单独配置过期时间和副本数。
1.7 Collection的概念
Collection指的是一组Volume的集合。
Collection可以被快速的删除,只需要把Collection里面的所有的Volume删除即可。
2. 快速入门
2.1 安装 SeaweedFS
下载最新的发布版本:https://github.com/seaweedfs/seaweedfs/releases
解压后得到一个文件, weed 或者 weed.exe
./weed -h #查看帮助信息
2.2 启动 Master 服务
./weed master -h #查看master服务帮助信息
-mdir
配置volume id的存储目录
./weed master -mdir="."
-ip
配置Master服务的Ip地址,默认为localhost
./weed master -mdir="." -ip=xxx.xxx.xxx.xxx
2.3 启动 Volume 服务
./weed volume -h # 查看volume服务的帮助信息
通常volume节点分布在不同的服务器上,有着不同的磁盘,甚至不同的操作系统。
一般情况下,Volume服务需要配置可用的磁盘,Master服务的地址。
-max
最多可承载的volume数量
./weed volume -max=100 -mserver="localhost:9333" -dir="./data"
2.4 快速启动一个Master服务和一个Volume服务
./weed master -mdir="/home/ubuntu/seaweed/master" -ip=192.168.56.101
./weed volume -max=10 -mserver="192.168.56.101:9333" -dir="/home/ubuntu/seaweed/data"
2.5 测试
./weed upload -dir="/some/big/folder" #上传本地的文件或者目录
3. 参考
本文参考小文件存储SeaweedFS技术指南,下载地址。