SeaweedFS学习笔记:Filer服务,目录与文件

文章介绍了SeaweedFS中的filer组件,包括如何生成配置文件和启动filer,以及读写流程。FilerStore的复杂度和不同使用场景被讨论,强调了文件系统的元数据管理和读取效率。此外,文章还提到数据加密的重要性,特别是对Volumeserver中数据的保护措施。
摘要由CSDN通过智能技术生成

1. 介绍

文件系统,一般都离不开目录和文件,当我们把SeaweedFS与Linux FUSE、Hadoop搭配使用时,这是必不可少的。

2. 用法

2.1 生成配置文件
  ./weed scaffold -config=filer -output="."

该命令会在当前目录生成配置文件,filer.toml,主要用于配置filer store。
默认的filer store配置是:

[leveldb2]
enabled = true
dir = "."					# directory to store level db files
2.2 启动 filer
./weed filer -ip=192.168.56.101 -port=8888 -master=192.168.56.101:9333
# POST a file and read it back
curl -F "filename=@README.md" "http://192.168.56.101:8888/path/to/sources/"
curl "http://192.168.56.101:8888/path/to/sources/README.md"

# POST a file with a new name and read it back
curl -F "filename=@Makefile" "http://192.168.56.101:8888/path/to/sources/new_name"
curl "http://192.168.56.101:8888/path/to/sources/new_name"

# list sub folders and files, use browser to visit this url: "http://localhost:8888/path/to/"
# To list the results in JSON:
curl -H "Accept: application/json" "http://192.168.56.101:8888/path/to"
# To list the results in pretty JSON
curl -H "Accept: application/json" "http://192.168.56.101:8888/path/to?pretty=y"

# The directory list limit is default to 100
# if lots of files under this folder, here is a way to efficiently paginate through all of them
http://192.168.56.101:8888/path/to/sources/?limit=50

3. 读写流程

3.1 读取流程
  1. Filer 从 FilerStore 读取元数据信息(fileId, Volume信息),FilerStore可选择组件:Cassandra/Mysql/Postgres/Redis/LevelDB/etcd/Sqlite。
  2. Filer 从Volume Server读取数据并返回
    在这里插入图片描述
3.2 写入流程
  1. 客户端把数据写到Filer
  2. Filer把数据上传到Volume Server, 如果大文件的话切成多个块
  3. Filer把元数据和块信息写入到Filer store

4. Filer Store

4.1 复杂度

对于文件读取,取决于Filer Store的实现方式,基于LSM tree 后者 Btree 的实现,元数据查找的复杂度为O(logN),N指的是已存在的所有条目,基于Redis的实现,复杂度为O(1)。

文件重命名,复杂度为O(1),只需删除旧的元数据和新增元数据,无需修改Volume server中的文件内容。

目录重命名,复杂度为O(N), N为待修改目录下的所有文件和子目录个数,这些条目都需要更新元数据,同样,也修改Volume server中的文件内容。

4.2 Filer的使用场景

Filer有两种使用场景。

一种是用于上传和下载文件,Filer需要处理文件以及读写元数据,负载比较重,建议部署多台Filer server 。

另一种是用与“weed mount”,Filer仅提供元数据的读取,实际的文件读取和写入是通过"weed mount",这种情况Filer的负载比较轻。

5. 数据加密

对于Filer来说,元数据存储在Filer store,实际的数据存储在Volume server, 有些Volume server是用本地的物理机器,有些Volume server是在云上,云上的Volume server被黑客侵入,后果不堪设想。

5.1 对Volume server的数据进行加密

weed filer -encryptVolumeData 提供对Volume server加密的选项。
加密的key是在写入数据时随机生成的,不同的文件有不同的key。这些key存储在filer store。
以此来实现对Volume server的数据进行加密,只要filer store不暴露,不可能猜到所有文件的加密 key。

Volume server实际并不知道哪些数据是加密的,哪些数据是没有加密的。

6. 参考文档下载

《小文件存储SeaweedFS技术指南》

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修破立生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值