SeaWeedFS安装以及部署,以及master模式和filer模式的介绍

目录

SeaWeedFS简介

SeaWeedfs安装与启动

Linux安装SeaWeedFS

SeaWeedfs启动

SeaWeedfs的master模式操作

上传下载文件

上传文件可供选择的参数:

SeaWeedfs的filer模式

Filer模式上传文件

Filer模式下载文件:

Filer模式删除文件:

Filer模式更改文件:

Filer模式append追加文件:

Filer模式filermount挂载机制:


SeaWeedFS简介

Seaweedfs是一个简单,高扩展性的分布式文件系统,它的两个目标分别是:存储数十亿级的文件,快速响应文件。Seaweedfs选择以键值对(key->file)的实现方式,这有点像“NoSQL",你可以陈其为”NoFS“。

Seaweedfs的中心节点(center master)并不会管理所有文件的元数据而仅仅管理文件卷(file volmume),文件及其元数据的管理是由volume server实现的。这可以缓解center master的并发压力,并且将文件元数据分配到volume server可以实现更快的文件访问(只需一次磁盘读取操作)。

SeaWeedfs安装与启动

Linux安装SeaWeedFS

mkdir -p /myapp/seaweedfs
cd /myapp/seaweedfs

访问Releases · seaweedfs/seaweedfs · GitHub下载linux_amd64.tar.gz文件,使用XShell工具下载到/myapp/seaweedfs路径。

解压tar.gz 文件:

tar -xzvf linux_amd64.tar.gz 

生成一个weed可执行文件,用于操作master和volume等。 创建数据卷根目录以及各个数据卷目录、master数据目录和filter目录

mkdir -p /myapp/seaweedfs/data/master
mkdir -p /myapp/seaweedfs/data/vola
mkdir -p /myapp/seaweedfs/data/volb
mkdir -p /myapp/seaweedfs/data/volc
mkdir -p /myapp/seaweedfs/data/vold
mkdir -p /data/weedfs_data/filer

SeaWeedfs启动

启动SeaWeedfs可使用nohup命令进行后台运行并且将日志输出到文件中。

启动mster,-defaultReplication="001"表示相同机架存储一份副本,而且如果一个卷服务器没在相同的rack开启一个vol就会报错:

nohup ./weed -v=3 master -mdir=/myapp/seaweedfs/data/master -defaultReplication="001" >> /myapp/seaweedfs/data/master/wdfsmaster.log &

启动volume,两个卷服务器放在同一个机架:

nohup ./weed -v=3 volume -port=8081 -dir=/myapp/seaweedfs/data/vola -mserver=localhost:9333 -rack=rack1 >> /myapp/seaweedfs/data/vola/wefsvola.log &
​
nohup ./weed -v=3 volume -port=8082 -dir=/myapp/seaweedfs/data/volb -mserver=localhost:9333 -rack=rack2 >> /myapp/seaweedfs/data/volb/wefsvolb.log &
​
nohup ./weed -v=3 volume -port=8083 -dir=/myapp/seaweedfs/data/volc -mserver=localhost:9333 -rack=rack3 >> /myapp/seaweedfs/data/volc/wefsvolc.log &
​
nohup ./weed -v=3 volume -port=8084 -dir=/myapp/seaweedfs/data/vold -mserver=localhost:9333 -rack=rack1 >> /myapp/seaweedfs/data/vold/wefsvold.log &

开启filer服务器:

nohup ./weed -v=3 filer -port=8888 -master=localhost:9333 >> /myapp/seaweedfs/data/filer/filer.log &

开启挂载服务器:

nohup ./weed mount -filer=localhost:8888 -dir=/myapp/seaweedfs/data/filermount/data -filer.path=/  >> /myapp/seaweedfs/data/filermount/wefsmount.log &

SeaWeedfs的master模式操作

上传下载文件

获取master委派的fid和publicUrl,请求master,利用curl来获取fid是什么,设置备份属性,来进行上传文件:

curl http://localhost:9333/dir/assign?replication=001

结果显示:

可通过获取的fid进行上传文件,file指定文件的位置,通过fid和url来进行上传文件,文件上传到vola和vold:

curl -F file=@./666.txt http://localhost:8081/2,01ddbfaf58c1

通过wget下载文件,路径2,01ddbfaf58c1是获取到的fid

wget http://localhost:8081/2,01ddbfaf58c1

所在目录会出现下载的文件,结果显示:

上传文件可供选择的参数:

SeaWeedfs的filer模式

Filer模式上传文件

Filer模式上传文件原理:

filer服务器默认端口是8888,上传大文件filer服务器先把大文件分成一个一个大约5m的小文件,然后通过master主服务器获取小文件的fid和对应的卷服务器,每一个fid对应着目录,然后把小文件存到对应的卷服务器上。

filer模式通过http请求上传文件,指定文件的目录是test。上传一个500M+的大文件:

访问地址ip:8888/test可以进入Filer可视化界面可以看到上传的文件:

filer模式查看大文件的chunks,可以看到分片的具体信息:

Filer模式下载文件:

filer模式下载文件原理:

用户先通过如http://ip:8888/test/test.md 这样的请求去请求文件,然后filer服务器拿到对应的文件目录,去请求master服务器,解析文件目录拿到对应的所有分片的fid,每个分片有offset,master将每个分片合成一个大文件再返回给用户。

发送如http://ip:8888/test/test.txt 这样以目录形式的http请求就可获得文件信息:

Filer模式删除文件:

filer模式删除文件原理:

  1. 删除文件只需要指定指定文件路径使用delete请求删除即可,并且filermount挂载的文件也会被删除,但是卷服务器里面的数据是被逻辑删除的,真实数据还没有进行删除,要进行清除回收站才能完成磁盘删除。

  2. 目前,垃圾收集在 master 中被硬编码为每 15 分钟运行一次。

  3. 如果您的系统有多次删除,被删除文件的磁盘空间不会被同步回收。有一个后台作业来检查卷磁盘使用情况。如果空白空间超过阈值,默认为 0.3,即 30%,则真空作业将使卷只读,创建仅包含现有文件的新卷,并打开新卷。

Delete请求删除:

清空回收站:

Filer模式更改文件:

更改文件里面的内容:

只需要post相同文件名的文件就能实现文件更改,并且同步到filermount目录和卷服务器。

Psot请求更改文件数据:

移动文件和目录:

POST请求:
http://ip:8888/path/to/dst_file?mv.from=/path/to/src_file

Filer模式append追加文件:

Filer模式Append文件机制 相当于将一个文件里面的主句追加到另一个文件尾部,如果目标文件不存在就自动创建,并且同步到filermount目录和卷服务器,属性加上op=append。

Post请求append文件:

Filer模式查看目录下的文件列表

curl -H "Accept: application/json"  http://ip:8888/test/?pretty=y

或者利用参数条件查询,支持通配符模糊查询:

curl -H "Accept: application/json" 
"http://ip:8888/javascript/?pretty=y&lastFileName=jquery-2.1.3.min.js&limit=2"

Filer模式filermount挂载机制:

  1. Filermount里面的data目录挂载了所有通过filer模式上传的文件,开启filer,mount,volumeServer这三个服务就能实现mount里面的挂载数据与卷服务器里的数据同步。也就是说直接往mount传文件再开启卷服务器也能实现数据同步。

  2. 任何通过上传,下载,更改,删除的操作都能实现mount的同步更新。

  3. 不开启mount服务器也能使用filer模式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

-37度阳光

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

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

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

打赏作者

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

抵扣说明:

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

余额充值