FastDFS分布式文件系统简单介绍
来源:互联网 发布:天猫数据平台 编辑:程序博客网 时间:2024/05/20 23:55
FastDFS是什么
FastDFS是由国人余庆所开发,其项目地址:https://github.com/happyfish100,FastDFS是一个轻量级的开源分布式文件系统,主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡。
FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地讲,Google FS、HDFS、TFS(这三个都是底层上的实现,在文件系统上处理的是数据块)以及FastDFS、mogileFS(这两个是文件级上的实现,处理的是文件)等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。
FastDFS的特性
1、分组存储,灵活简洁、对等结构,不存在单点2、 文件ID由FastDFS生成,作为文件访问凭证。FastDFS不需要传统的name server3、和流行的web server无缝衔接,FastDFS已提供apache和nginx扩展模块4、大、中、小文件均可以很好支持,支持海量小文件存储5、 支持多块磁盘,支持单盘数据恢复6、 支持相同文件内容只保存一份,节省存储空间7、 存储服务器上可以保存文件附加属性8、 下载文件支持多线程方式,支持断点续传
FastDFS架构解读
• 只有两个角色,tracker server和storage server,不需要存储文件索引信息
• 所有服务器都是对等的,不存在Master-Slave关系
• 存储服务器采用分组方式,同组内存储服务器上的文件完全相同(RAID 1)
• 不同组的storage server之间不会相互通信
• 由storage server主动向tracker server报告状态信息,trackerserver之间通常不会相互通信
1. client询问tracker上传到的storage;2. tracker返回一台可用的storage;3. client直接和storage通信完成文件上传,storage返回文件ID。
1. client询问tracker下载文件的storage,参数为文件ID(组名和文件名);
2. tracker返回一台可用的storage;
3. client直接和storage通信完成文件下载。
FastDFS同步机制
采用binlog文件记录更新操作,根据binlog进行文件同步同一组内的storage server之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行;
文件同步只在同组内的storage server之间进行,采用push方式,即源服务器同步给目标服务器;
源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了;
上述第二条规则有个例外,就是新增加一台storage server时,由已有的一台storage server将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。
FastDFS核心组件
FastDFS:
Tracker:调度器,负责维持集群的信息,例如各group及其内部的storage node,这些信息也是storage node报告所生成;每个storage node会周期性向tracker发心跳信息。
storage server:以group为单位进行组织,任何一个storage server都应该属于某个group,一个group应该包含多个storage server;在同一个group内部,各storage server的数据互相冗余。
FastDFS运行机制
如何在组中挑选storage server:
1、rr;2、以ip为次序,找第一个,即IP地址较小者;3、以优先级为序,找第一个;
如何选择磁盘(存储路径):
1、rr;2、剩余可用空间大者优先;
生成FID:
由源头storage server ip、创建时的时间戳、大小、文件的校验码和一个随机数进行hash计算后生成;最后基于base64进行文本编码,转换为可打印字符;groupID/MID/H1ID/H2ID/file_namegroupID:组编号MID:存储路径(存储设备)编号H1ID/H2ID:目录分层file_name:文件名,不同于用户上传时使用文件名,而是由服务器生成hash文件名;服务器IP、文件创建时的时间戳、文件大小、文件名和扩展名;
文件同步:
每个storage server在文件存储完成后,会将其信息存于binlog,binlog不包含数据,仅包含文件名等元数据信息;binlog可用于同步;
FastDFS配置修改
Tracker:
编辑tracker server配置文件/etc/fdfs/tracker.conf,需要修改内容如下:
disabled=false(默认为false,表示是否无效)port=22122(默认为22122)base_path=/data/fastdfs/tracker
启动方式:
systemctl start fdfs_trackerd #该服务启动脚本在/etc/init.d/目录下#-----or-----/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
storage server:
编辑storage node配置文件/etc/fdfs/storage.conf,需要修改内容如下:
disabled=false(默认为false,表示是否无效)port=23000(默认为23000)base_path=/data/fastdfs/storagetracker_server=172.17.254.76:22122store_path0=/data/fastdfs/storagehttp.server_port=80(默认为8888,nginx中配置的监听端口那之一致)
启动方式:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
FastDFS常用命令
1、查看存储节点状态
fdfs_monitor /etc/fdfs/client.conf
2、上传测试
fdfs_test <config_file> upload <local_filename> [FILE | BUFF | CALLBACK]
3、文件上传
fdfs_upload_file /etc/fdfs/client.conf /root/solo-2.2.0.war
4、文件查看
fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/rBH7vFoax3KANb_FAUlr7-L-yRM9.0.war
5、文件下载
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/rBH7vFoax3KANb_FAUlr7-L-yRM9.0.war
- FastDFS分布式文件系统简单介绍
- 分布式文件系统FastDFS原理介绍
- 分布式文件系统FastDFS原理介绍
- 分布式文件系统FastDFS原理介绍
- 分布式文件系统FastDFS原理介绍
- 分布式文件系统FastDFS原理介绍
- 分布式文件系统(FastDFS原理介绍)
- fastdfs分布式文件系统之Storage server介绍
- fastdfs分布式文件系统之tracker server介绍
- 分布式文件系统FastDFS
- 分布式文件系统 FastDFS
- 分布式文件系统FastDFS
- FastDFS分布式文件系统
- 分布式文件系统 FastDFS
- fastDFS分布式文件系统
- 分布式文件系统FastDFS
- FastDFS分布式文件系统简介
- 分布式文件系统FastDFS
- 算法分析与设计期中测试——拓扑序[Special judge]
- 文件上传
- css 知识汇总与补充(一)
- 复习C语言,学习Linux的基本指令,vi基本操作以及压缩方式
- vue moment 时间格式化
- FastDFS分布式文件系统简单介绍
- 设计模式之单例模式
- HDOJ-1280-前m大数(暴力)
- lapack 在window下编译
- 剑指offer——面试题62:序列化二叉树
- EM 算法在高斯混合模型中的实现(未完成)
- 购买Vps
- Firefox 中文语言包安装方法
- Kali系统的软件调整过程