2021.05.25

初始seaweedFS

安装
1、先去GitHub下载所需版本

linux_amd64.tar.gz

2、然后放到服务器的文档中

/opt/software

3、解压安装

tar -zxvf ./linux_amd64.tar.gz -C /opt/install/seaweed

4、在seaweed安装包下安装seaweedfs文件夹及其下属两个文件夹

mkdir -p ./seaweedfs/data ./seaweedfs/volume

5、用以下命令查看master

 ./weed master -h
Example: weed master -port=9333
Default Usage:-cpuprofile stringcpu profile output file-defaultReplication stringDefault replication type if not specified. (default "000")-disableHttpdisable http requests, only gRPC operations are allowed.-garbageThreshold floatthreshold to vacuum and reclaim spaces (default 0.3)-ip stringmaster <ip>|<server> address, also used as identifier (default "172.19.0.16")
-ip.bind stringip address to bind to-mdir stringdata directory to store meta data (default "/tmp")-memprofile stringmemory profile output file-metrics.address stringPrometheus gateway address <host>:<port>-metrics.intervalSeconds intPrometheus push interval in seconds (default 15)-options stringa file of command line options, each line in optionName=optionValue format-peers stringall master nodes in comma separated ip:port list, example: 127.0.0.1:9093,127.0.0.1:9094,127.0.0.1:9095-port inthttp listen port (default 9333)-resumeStateresume previous state on start master server-volumePreallocatePreallocate disk space for volumes.-volumeSizeLimitMB uintMaster stops directing writes to oversized volumes. (default 30000)-whiteList stringcomma separated Ip addresses having write permission. No limit if empty.
Description:start a master server to provide volume=>location mapping service and sequence number of file idsThe configuration file "security.toml" is read from ".", "$HOME/.seaweedfs/", "/usr/local/etc/seaweedfs/", or "/etc/seaweedfs/", in that order.The example security.toml configuration file can be generated by "weed scaffold -config=security"

6、用以下命令查看volume

./weed volume -h
Example: weed volume -port=8080 -dir=/tmp -max=5 -ip=server_name -mserver=localhost:9333
Default Usage:-compactionMBps intlimit background compaction or copying speed in mega bytes per second-concurrentUploadLimitMB intlimit total concurrent upload size (default 128)-cpuprofile stringcpu profile output file-dataCenter stringcurrent volume server's data center name-dir stringdirectories to store data files. dir[,dir]... (default "/tmp")-dir.idx stringdirectory to store .idx files-disk string[hdd|ssd|<tag>] hard drive or solid state drive or any tag-fileSizeLimitMB intlimit file size to avoid out of memory (default 256)-idleTimeout intconnection idle seconds (default 30)-images.fix.orientationAdjust jpg orientation when uploading.-index stringChoose [memory|leveldb|leveldbMedium|leveldbLarge] mode for memory~performance balance. (default "memory")-ip stringip or server name, also used as identifier (default "172.19.0.16")-ip.bind stringip address to bind to-max stringmaximum numbers of volumes, count[,count]... If set to zero, the limit will be auto configured. (default "8")-memprofile stringmemory profile output file-metricsPort intPrometheus metrics listen port-minFreeSpace stringmin free disk space (value<=100 as percentage like 1, other as human readable bytes, like 10GiB). Low disk space will mark all volumes as ReadOnly.-minFreeSpacePercent stringminimum free disk space (default to 1%). Low disk space will mark all volumes as ReadOnly (deprecated, use minFreeSpace instead). (default "1")-mserver stringcomma-separated master servers (default "localhost:9333")-options stringa file of command line options, each line in optionName=optionValue format-port inthttp listen port (default 8080)-port.public intport opened to public-pprofenable pprof http handlers. precludes --memprofile and --cpuprofile-preStopSeconds intnumber of seconds between stop send heartbeats and stop volume server (default 10)-publicUrl stringPublicly accessible address-rack stringcurrent volume server's rack name-read.redirectRedirect moved or non-local volumes. (default true)-tcp<exprimental> enable tcp port-whiteList stringcomma separated Ip addresses having write permission. No limit if empty.
Description:start a volume server to provide storage spaces

2021.05.26

认识SeaweedFS命令

seaweedFS是根据Haystack来实现的,它有两大特性:
1、存储数以亿计的文件
2、访问文件非常快
之所以它能达到这两个特性,是因为所有文件的元数据metadata不存储在master节点,而是分散存储在volume(逻辑卷,存储数据的逻辑结构)中,master节点只保存volume信息

3、查看master服务的参数:

命令 类型 解释
-cpuprofile string 输出cpu使用的统计信息
-defaultReplication string 默认的副本类型(默认为000)
-disableHttp 关闭http接口,只使用gRPC来访问
-garbageThreshold float 回收空间的阈值(默认为0.3)
-ip string master服务的ip地址,默认为localhost
-ip.bind string
-mdir string 存储内存使用的统计信息(默认“/tmp”)
-memprofile string 输出内存使用的统计信息
-metrics.address string 性能指标统计工具的地址,seaweedFS使用prometheus来存储性能统计信息
-metrics.intervalSeconds int 性能统计信息推送的间隔时间
-options string 一个命令行选项文件,每一行的格式为optionName=optionValue
-peers string 所有的master节点列表,比如127.0.0.1:9093,127.0.0.1:9094
-port int master服务监听的端口,默认为9333
-resumeState 在启动服务器上恢复原来的状态
-volumePrellocate 为volumes预分配空间
-volumeSizeLimitMB 停止向超出大小限制的volume写入数据,默认为3000
-whiteList string ip白名单,只有在白名单中的ip才拥有写入权限

4、查看volume服务参数

命令 类型 解释
-compactionMBps int 以百万字节每秒为单位限制后台压缩或复制速度
-concurrentUploadLimitMB int 限制总并发上传大小(默认128)
-cpuprofile string CPU配置文件输出
-dataCenter string 当前卷服务器的数据中心名称
-dir string 存放数据文件的目录。dir [dir]…(默认“/ tmp”)
-dir.idx string 存放。idx文件的目录
-disk string [hdd
-fileSizeLimitMB int 限制文件大小以避免内存不足(默认256)
idleTimeout int 连接空闲秒数(默认30秒)
image.fix.orientation 上传时调整jpg的方向。
index string 选择[memory leveldb leveldbMedium
-ip string IP或服务器名,也用作标识符(默认"172.19.0.16")
-ip.bind string 要绑定的IP地址
-max string 最大卷数,count [,count]…如果设置为零,将自动配置该限制。(默认“8”)
-memprofile string 内存配置文件输出文件
-metricsPort int 普罗米修斯度量监听端口
minFreeSpace string 最小的空闲磁盘空间(值<=100为百分数,如1,其他为人类可读字节,如10GiB)。低磁盘空间将把所有卷标记为只读。
-minFreeSpacePercent string 最小可用磁盘空间(默认为1%)。低磁盘空间将把所有卷标记为只读(已弃用,请使用minFreeSpace代替)。(默认值“1”)
-mserver string 逗号分隔的主服务器(默认"localhost:9333")
-options string 一个命令行选项文件,每一行的格式为optionName=optionValue
-port int HTTP监听端口(默认8080)
-port.public int 公开的端口
-pprof 启用pprof HTTP处理程序。排除—memprofile和—cpuprofile
preStopSeconds int 停止发送心跳和停止音量服务器之间的秒数(默认10)
publicUrl string 公共可访问的地址
-rack string 当前卷服务器的机架名
-read.redirect 重定向移动的或非本地卷。(默认正确)
-tcp < experimental >启用TCP端口
-whiteList string 逗号分隔有写权限的Ip地址。如果为空,则没有限制。

2021.05.27

在集群上启动seaweedFS

1、先检查集群上是否已经运行

ps aux | grep weed

结果:
root 17420 0.0 0.0 112728 972 pts/4 S+ 09:40 0:00 grep --color=auto weed

再检查下端口号

netstat -anp |grep 9333

2、分别在三台服务器上建立文件夹

mkdir -p ./seaweedfs/data ./seaweedfs/volume

此处学习一些Linux的命令,放于Linux的笔记中如:nohup、<、&等

2、启动master服务,分别在三台机器上启动

nohup ./weed master -ip=集群ip01 -port=9333 -mdir=./seaweedfs/data -peers=集群ip01:9333,集群ip02:9333,集群ip03:9333 > ./seaweedfs/data/master.log &
nohup ./weed master -ip=集群ip02 -port=9333 -mdir=./seaweedfs/data -peers=集群ip02:9333,集群ip01:9333,集群ip03:9333 > ./seaweedfs/data/master.log &
nohup ./weed master -ip=集群ip03 -port=9333 -mdir=./seaweedfs/data -peers=集群ip03:9333,集群ip01:9333,集群ip02:9333 > ./seaweedfs/data/master.log &

3、启动volume,分别在三台机器上启动

nohup ./weed volume -dataCenter dc1 -rack rack1 -dir ./seaweedfs/volume -ip=集群ip01 -port 9222 -ip.bind 集群ip01 -max 20 -mserver 集群ip01:9333,集群ip02:9333,集群ip03:9333 -publicUrl 集群ip01:9222 > ./seaweedfs/volume/volume.log &
nohup ./weed volume -dataCenter dc1 -rack rack1 -dir ./seaweedfs/volume -ip=集群ip02 -port 9222 -ip.bind 集群ip02 -max 20 -mserver 集群ip01:9333,集群ip02:9333,集群ip03:9333 -publicUrl 集群ip02:9222 > ./seaweedfs/volume/volume.log &
nohup ./weed volume -dataCenter dc1 -rack rack1 -dir ./seaweedfs/volume -ip=集群ip03 -port 9222 -ip.bind 集群ip03 -max 20 -mserver 集群ip01:9333,集群ip02:9333,集群ip03:9333 -publicUrl 集群ip03:9222 > ./seaweedfs/volume/volume.log &

4、打开http://集群ip01:9333/

文件操作

1、文件上传:先请求master,分配一个fid

curl http://集群ip01:9333/dir/assign

返回结果:
{"fid":"1,01da229ee5","url":"172.17.100.30:9222","publicUrl":"172.17.100.30:9222","count":1}

然后把test文件夹里的text文件上传上去,按照分配的fid上传

curl -F file=@./seaweedfs/test/test.txt 集群ip01:9222/1,01da229ee5

得到结果:
{"name":"test.txt","size":71,"eTag":"321d88cf6431a578fc8d586889275ff4","mime":"text/plain"}
2、也可以来操作删除

curl -X DELETE 集群ip01:9222/1,01da229ee5

3、解释说明:文件fid:1,01da229ee5
1代表volume id,volume id 是一个32位无符号整型
01代表file key,file key是一个64位无符号整型
da229ee5代表file cookie,file cookie是一个32位无符号整型,用来防止文件url被解
每个数字都以16进制保存,因此如果要保存成字符串的话,需要8+1+16+8一共33个字节
4、查询,下载都要先查到id

wget 集群ip01:9222/1,01da229ee5

filer

filer是一个在SeaweedFS之上的服务,它保存路径与文件id的映射关系,最终还是使用文件id来访问文件。filer服务和master服务保持一个长连接,获取并保存volume的信息。这样就不用每次请求都去查询volume的信息。

读:

1.从数据库中查询路径的元数据
2.从volume服务中读取文件内容并发送给请求

写:

1.客户端将文件传输给filer
2.filer将文件上传到volume服务,大文件被分成多个块
3.filer将元数据和块的元数据信息写到数据库中

1、先查看filer配置文件

./weed scaffold -config=filer

2、配置文件有一些如存储方式的选择,先选一个,根据红框里的配置式样配置一个,先创建filer文件

cd seaweedfs/
touch filer.toml
ll

创建好后,开始配置

vi filer.toml
[leveldb2]
enabled = true
dir = "."

3、保存退出后,执行启动命令

./weed filer -master="集群ip01:9333" -ip=集群ip01

已经启动

4、试一下上传文件,不需要再去找分配的fid上传

curl -F file=@/opt/finished/seaweedfs/test/test2.txt http://集群ip01:9333/text/

结果:{"error":"strconv.ParseUint: parsing \"text\": invalid syntax"} 无效的语法

查看启动文件

修改:

curl -F file=@/opt/finished/seaweedfs/test/test2.txt http://172.17.100.30:8888/text/

{"name":"test2.txt","size":71}

以新的名称重命名上传后的文件

curl -F file=@/opt/finished/seaweedfs/test/test2.txt http://172.17.100.30:8888/text/new.txt

查看一下内容

curl "http://172.17.100.30:8888/text/new.txt"

文件内容正确,是我瞎写的一些字母:abcdefgaskldhgkasdjgalsd;gshkdgasd;hgwe;aoityawdgjs;adjgkjsd;ugtaoieutg

挂载

1、先建立一个挂载的文件夹

mkdir -p ./seaweedfs/data/mount

2、指定SeaweedFS挂载到新建的文件夹

./weed mount -filer=172.17.100.30:8888 -dir=./seaweedfs/data/mount -filer.path=/

3、上传文件

curl -F file=@/opt/finished/seaweedfs/test/abc.txt http://172.17.100.30:8888/text/

4、查看文件夹里

【数据存储】分布式文件系统SeaweedFS相关推荐

  1. 组件分享之后端组件——一个简单且高度可扩展的分布式文件系统seaweedfs

    组件分享之后端组件--一个简单且高度可扩展的分布式文件系统seaweedfs 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题 ...

  2. 计算机技术基础:计算机基本结构、运行内存、数据存储、文件系统、软件、操作系统

    今天课程的主要内容分为计算机基本结构.运行内存.数据存储.文件系统.软件.操作系统与虚拟化技术等板块. 计算机基本结构 计算机一般这样工作:输入数据存入内存,通过CPU计算后,返回给内存. 计算机基本 ...

  3. 彻底理解大数据 HDFS 分布式文件系统,这篇就够了

    来源:https://www.cnblogs.com/cainiao-chuanqi/p/11420490.html 文件系统的基本概述 文件系统定义:文件系统是一种存储和组织计算机数据的方法,它使得 ...

  4. mysql对存储分布式文件系统的存储需求总结

    1. 引言 云原生数据库跟分布式mpp数据库是有差异的,虽然两者都是计算与存储分离,但是在资源的占用上有所不同.云原生数据库是shard everything架构,其依赖的存储资源.内存资源.事务资源 ...

  5. 文件存储相关概念:inode、 dentry、 数据存储、文件系统

    f.hard 和 f.h为建立的硬链接     椭圆 代表磁盘 绿色为,重新建立的 inode  (实现恢复数据的效果)  inode: 其本质为结构体,存储文件的属性信息.如:权限.类型.大小.时间 ...

  6. 云存储及其分布式文件系统

    转自: https://www.cnblogs.com/langren1992/p/5432517.html 随着信息化程度的不断提高,全球数据日益膨胀.面对当前PB级的海量数据存储需求,传统的存储系 ...

  7. 大数据基础——HDFS(分布式文件系统)

    分布式文件系统--HDFS 文章目录 分布式文件系统--HDFS HDFS概述 HDFS发展历史 HDFS的设计目标 HDSF应用场景 适合的应用场景 不适合的应用场景 HDFS架构 HDFS的基本原 ...

  8. 分布式文件系统KFS基础知识介绍

    Kosmos distributed file system,简称KFS,是一个类GFS的分布式文件系统,被设计用于分布式的结构化存储.下面将对KFS的体系结构进行简单介绍,最后给出一个使用KFS C ...

  9. 分布式文件系统(GFS和HDFS)概述

    目录 背景意义 分布式存储相关概念 分布式存储系统的分类 复制副本 CAP理论 一致性 GFS架构 租约(lease)和变更顺序 容错机制 前言 因为我研一下学期有一门分布式的课,老师要求我们选择一个 ...

  10. 一文读懂什么是分布式文件系统

    一文读懂什么是分布式文件系统 什么是分布式文件系统 一般文件系统 什么是分布式文件系统 分布式文件系统与一般文件系统的对比 什么是分布式文件系统 本篇来讲讲什么是一般文件系统,什么是分布式文件系统,以 ...

最新文章

  1. MQTT 协议 Client ID 长度不能超过23个字符
  2. 人工智能论坛、AI x Science 论坛和首席智行官大会
  3. 进阶第四课 Python模块之os
  4. python 反转列表的3种方式
  5. java 日期计算类_java日期计算工具类【包含常用的日期计算方法】
  6. String比较? 用==判断两个字符串,有时为true有时为false
  7. java方法的重载 编程题,java面试编程题:重载方法
  8. 1040. Longest Symmetric String (25)-PAT甲级真题
  9. IE, FF, Safari前端开发常用调试工具(转载)
  10. python win32api sendmessage_win32api win32gui win32con 窗口句柄 发送消息 常用方法
  11. Shottr 免费好用的Mac 截屏软件
  12. php多张图片下载(zip压缩)
  13. 开发部程序员绩效考核办法
  14. 【大学生软件测试基础】薪资管理制度 - 因果图 - 测试用例
  15. 密码管理方案之SafeInCloud+坚果云同步
  16. 商品详情页商品属性选择,包含多规格
  17. Java学习-ATM系统
  18. D和弦的音阶在尤克里里上应该怎么按?
  19. transition transform translate 之间的区别
  20. 玄幻:开局选择瑶池,我只想默默签到!(一)

热门文章

  1. java实现变声器--变声萝莉
  2. ENFJ型的人:什么样的人很适合人工智能方向
  3. React简介--尚硅谷react全家桶笔记总结
  4. 怎么架设魔兽世界服务器?
  5. 性能指标TP99介绍
  6. 神器vimium:比同级程序员成长更快,我主要靠它
  7. Qt中的forever是什么?
  8. 计算机网络网络适配器的作用是什么原因,Win10网络适配器在哪里对网络有什么影响 网络适配器出现各种故障的解决方法...
  9. 深度学习系列 -- 神经网络和深度学习(Neural Networks and Deep Learning)(一):深度学习引言以及神经网络编程基础
  10. 算法基础篇-05-排序-LowB三人组(冒泡/选择/插入排序)