seaweedfs搭建与使用
- seaweedfs(github: https://github.com/chrislusf/seaweedfs)是一个非常轻巧、易用的分布式文件系统。当我们考虑自己来搭建分布式文件服务的时候,seaweedfs是一个不错的选择。本文记录seaweedfs的搭建与简单使用过程
安装
-
从github[https://github.com/seaweedfs/seaweedfs/releases]中获取seaweedfs对应操作系统的可执行文件weed,根据自己服务器类型选择不同的安装包
tar -zxvf linux_amd64.tar.gz //解压后得到名为weed的可执行文件
-
执行以下命令以启动服务
./weed master -mdir="/home/fy/seaweedfs/weed_data"
-
创建文件夹以供volume服务使用
mkdir FileVolume1
mkdir FileVolume2
./weed volume -dir="/home/fy/seaweedfs/FileVolume1" -max=1000 -mserver="localhost:9333" -port=10001
./weed volume -dir="/home/fy/seaweedfs/FileVolume2" -max=1000 -mserver="localhost:9333" -port=10002
启动两个volume
服务
-
启动完master和volume服务之后,我们就可以使用seaweedfs来保存和访问文件了。
-
上传文件
// 第一种,直接上传
curl -F file=@/home/fy/a.txt http://127.0.0.1:9333/submit
//第二种 申请一个fid
curl http://localhost:9333/dir/assign //会返回一个json文件,使用fid字段作为下面路径
curl -F file=@/home/fy/a.txt http://127.0.0.1:9333/3,01637037d6
上传后返回数据
{
"eTag": "2fa474ce",
"fid": "5,090f487535",
"fileName": "a.txt",
"fileUrl": "192.168.1.80:10001/5,090f487535",
"size": 10116
}
- 下载文件
curl http://192.168.1.80:10001/5,090f487535
- 删除文件
curl -X DELETE http://127.0.0.1:9333/3,01637037d6
启用filer,可以清晰看到文件保存路径
- 生成filer对应的配置文件,会在当前目录生成一个filer.toml文件
./weed scaffold -config=filer -output=.
//创建文件夹,用于储存filer数据
mkdir filer_data
//修改filer.toml配置
enabled = true
dir = "/home/fy/seaweedfs/filer_data"
启动,并且指定日志输出位置,同样需创建日志目录log
sudo ./weed filer -port=8888 -master=192.168.1.80:9333 -ip=192.168.1.80 > /home/fy/seaweedfs/filer_data/log/filer.log
- 上传文件
curl -F "filename=@/home/fy/seaweedfs/t.txt" "192.168.1.80:8888/test/file/"
也可以使用postman上传
需要注意的是,请求的URL不带‘/’,则最后的路径为文件名,带‘/’则是文件夹
- 下载文件
curl http://192.168.1.80:8888/mytest/WechatIMG534.png
直接请求对应的目录地址即可