分布式文件系统的比较,115网盘用了fastdfs
- 分布式文件系统
|
|
|
|
|
|
分布式文件系统,作为网盘的基础,应用底层文件管理。而分布式文件系统之上,用户文件的权限,用户目录管理都是由非分布式文件系统管理。
分布式文件系统需要关心的主要内容:
- 文件分布/数据分布:文件是否分片,文件存储按照什么算法来存储(DHT)
- 冗余保护/副本:是否有缀于,缀于是否可以回复。
- 数据可靠性:当数据出现问题,是否可以发现,如何回复。
- 备份:如何提供被被封工作。
- 故障恢复:出现问题是否可以回复。
- 扩展性:当容量不够时,是否可以无限增加容量。
- 安装/部署:是否需要修改内核,部署是否方便。
- 开发语言:是否使用常用开发语言。
- 适合场景:对不同文件大小有常用的支持。
除了一下文件系统,还有HDFS等分布式文件存储系统,MongoDB的GridFs等文件系统。
|
MooseFS(MFS) |
Ceph(Swfit) |
GlusterFS(类似的有FastDFS) |
Lustre |
|
|
Metadata server |
单个MDS。存在单点故障和瓶颈。 |
多个MDS,不存在单点故障和瓶颈。MDS可以扩展,不存在瓶颈。 |
无,不存在单点故障。靠运行在各个节点上的动态算法来代替MDS,不需同步元数据,无硬盘I/O瓶颈。 |
双MDS(互相备份)。MDS不可以扩展,存在瓶颈。 |
|
FUSE(用户态文件访问) |
支持 |
支持 |
支持 |
支持 |
|
访问接口 |
POSIX |
POSIX |
POSIX |
POSIX/MPI |
|
文件分布/数据分布 |
文件被分片,数据块保存在不同的存储服务器上。 |
文件被分片,每个数据块是一个对象。对象保存在不同的存储服务器上。 |
Cluster Translators(GlusterFS集群存储的核心)包括AFR、DHT(和Stripe三种类型。 AFR相当于RAID1,每个文件都被复制到多个存储节点上。Stripe相当于RAID0,文件被分片,数据被条带化到各个存储节点上。 Translators可以组合,即AFR和stripe可以组成RAID10,实现高性能和高可用。 |
可以把大文件分片并以类似RAID0的方式分散存储在多个存储节点上。 |
|
冗余保护/副本 |
多副本 |
多副本 |
镜像 |
无 |
|
数据可靠性 |
由数据的多副本提供可靠性。 |
由数据的多副本提供可靠性。 |
由镜像提供可靠性。 |
由存储节点上的RAID1或RAID5/6提供可靠性。假如存储节点失效,则数据不可用。 |
|
备份 |
提供备份工具。支持远程备份。 |
|||
|
故障恢复 |
手动恢复 |
当节点失效时,自动迁移数据、重新复制副本。 |
当节点、硬件、磁盘、网络发生故障时,系统会自动处理这些故障,管理员不需介入。 |
无 |
|
扩展性 |
增加存储服务器,可以提高容量和文件操作性能。但是由于不能增加MDS,因此元数据操作性能不能提高,是整个系统的瓶颈。 |
可以增加元数据服务器和存储节点。容量可扩展。文件操作性能可扩展。元数据操作性能可扩展。 |
容量可扩展。 |
可增加存储节点,提高容量可文件操作性能,但是由于不能增加MDS,因此元数据操作性能不能提高,是整个系统的瓶颈。 |
|
安装/部署 |
简单 |
简单 |
简单 |
复杂。而且Lustre严重依赖内核,需要重新编译内核。 |
|
开发语言 |
C |
C++ |
C |
C |
|
适合场景 |
大量小文件读写 |
小文件 |
适合大文件。 对于小文件,无元数据服务设计解决了元数据的问题。但GlusterFS并没有在I/O方面作优化,在存储服务器底层文件系统上仍然是大量小文件,本地文件系统元数据访问是瓶颈,数据分布和并行性也无法充分发挥作用。因此,GlusterFS的小文件性能还存在很大优化空间。 |
大文件读写 |
|
产品级别 |
小型 |
中型 |
中型 |
重型 |
|
应用 |
国内较多 |
无 |
较多用户使用 |
HPC领域。 |
|
优缺点 |
实施简单,但是存在单点故障。 |
不稳定,目前还在实验阶段,不适合于生产环境。 |
无元数据服务器,堆栈式架构(基本功能模块可以进行堆栈式组合,实现强大功能)。具有线性横向扩展能力。 由于没有元数据服务器,因此增加了客户端的负载,占用相当的CPU和内存。 但遍历文件目录时,则实现较为复杂和低效,需要搜索所有的存储节点。因此不建议使用较深的路径。 |
很成熟、很庞大。 |
- 云存储平台学习
- Seafile
包含:群组功能,用户可以创建和加入群组, 在群组中共享文件。这对团队协作很有用。
文件组织成资料库。每个资料库可以单独同步和共享。
在线文件协作,包括文件在线预览、评论、推荐等等。 Markdown, text,源代码等文本格式可以直接在线编辑。
SeaFile主要是“文件属性、路径管理系统”。底层存储系统可以采用Swift和Cept。
- 360等网盘底层
lustre更加适合分布式运算方面的,比如高性能计算节点什么的,在网盘业务这块,个人觉得mooseFS、glusterfs更加靠谱一些吧。Lustre不适合做类似网盘的使用。首先Lustre没有磁盘容错功能;即使实现服务容错也需要交叉互连的盘阵,构建成本较高。其次我认为在网盘服务中,对于存储系统不需要有太强的一致性语义;而lustre采用的是POSIX强一致性语义。lustre靠的数据分条来提高IO性能的,不知道这个和网盘的IO访问模式是否兼容。还有就是lustre是内核态系统,比较复杂,维护较困难。
115网盘用了fastdfs
http://blog.csdn.net/wugeiswuge/article/details/19159055
分布式文件系统的比较,115网盘用了fastdfs的更多相关文章
- 模拟登陆115网盘(MFC版)
[cpp] view plain copy // 模拟登陆115网盘 #include <afxinet.h> // 包含相关的头文件 /* 用抓包工具抓包可得到需要提交的数据,然后模拟提 ...
- java架构师负载均衡、高并发、nginx优化、tomcat集群、异步性能优化、Dubbo分布式、Redis持久化、ActiveMQ中间件、Netty互联网、spring大型分布式项目实战视频教程百度网盘
15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; ...
- 记一次挖掘115网盘反射型xss,08xss的储存型xss
记一次对115分站简单绕过过滤继续实现xss,08xss平台也中枪!! 115反射型xss url:http://115.qiye.115.com/disk/?ac=select_public_fil ...
- hadoop分布式安装部署具体视频教程(网盘附配好环境的CentOS虚拟机文件/hadoop配置文件)
參考资源下载:http://pan.baidu.com/s/1ntwUij3视频安装教程:hadoop安装.flvVirtualBox虚拟机:hadoop.part1-part5.rarhadoop文 ...
- hadoop分布式安装部署详细视频教程(网盘附配好环境的CentOS虚拟机文件/hadoop配置文件)
参考资源下载:http://pan.baidu.com/s/1ntwUij3视频安装教程:hadoop安装.flvVirtualBox虚拟机:hadoop.part1-part5.rarhadoop文 ...
- PHP伪造referer突破网盘禁止外链(附115源码)
新建一个文件file.php.后面的参数就是需要伪造referfer的目标地址吧.如:file.php/http://www.xxx.xxx/xxx.mp3 复制内容到剪贴板 代码: <?$ur ...
- 网盘大全, 邮箱大全 good
网盘推荐 115网盘 注册 百度网盘 注册 微云 注册 360云盘 注册 金山快盘 注册 新浪微盘 注册 和彩云 注册 酷盘 注册 OneDrive 外链 BOX 注册 Dropbox 注册 国内网盘 ...
- UC网盘被关停 将与阿里淘盘合并?(案例说明云盘的成本才是重点,技术不是问题;与巨头竞争是重点)
UC网盘被关停 将与阿里淘盘合并? 二八2016-03-18 08:05:36阿里巴巴 网盘 产品阅读(0)评论(12) UC网盘项目组日前发布公告称将停止网盘存储服务,原因为配合国家对云盘传播淫秽色 ...
- 打造百度网盘备份利器:自动备份Linux VPS文件和多线程下载百度网盘资源
前一段时间国内的各大网盘百度云盘,金山快盘,360云盘,华为网盘为争夺用户上演空间容量博弈,网盘商们还固执地以为中国的网民都不懂网络技术,可以像某公司那样用一些数字的手段来忽悠用户,参与到网盘商的数字 ...
随机推荐
- Redis内存管理的基石zmallc.c源代码解读(一)
当我第一次阅读了这个文件的源代码的时候.我笑了,忽然想起前几周阿里电话二面的时候,问到了自己定义内存管理函数并处理8字节对齐问题. 当时无言以对,在面试官无数次的提示下才答了出来,结果显而易见,挂掉了 ...
- Oracle成长点点滴滴(2)— 权限管理
权限管理中权限包含系统权限以及对象权限.在解说权限管理之前我们先来了解用户的创建以及授权这些前提. 1. 创建用户以及授权 Ø 默认用户 既然提到了创建用户,首先必须先把用户的知识攻克了. ...
- JAVA基本数据类型及其转换
Java语言是一种强类型语言.这意味着每个变量都必须有一个声明好的类型.Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型.Java另外还提供大数字对 ...
- js进阶 9-6 js如何通过name访问指定指定表单控件
js进阶 9-6 js如何通过name访问指定指定表单控件 一.总结 一句话总结:form中控件的三种访问方式:2formElement 1document 1.form中控件的三种访问方式? 1.f ...
- 使用蒲公英来发布iOS内侧版本
1.生成ipa包 这里不介绍正规的打包方式(选择真机调试-编译成功以后-工具product-archive-....) 下面介绍快速打包方式: 1)选择真机调试-编译成功以后右击下图.app文件,选择 ...
- HDU 1244 Max Sum Plus Plus Plus - dp
传送门 题目大意: 给一个序列,要求将序列分成m段,从左至右每一段分别长l1,l2,...lm,求最大的和是多少. 题目分析: 和最大m段子段和相似,先枚举\(i \in [1,m]\),然后$j \ ...
- leetcode先刷_Valid Sudoku
我没有看到这个问题,这使其在现货需求数独,害怕一直没敢做.后来我发现原来的标题就是这么简单.推断现在只有数字全不符合的就可以了棋盘上的形势的要求. 是不是正确的三个周期..人是不能满意地看到每一行.每 ...
- ASP.NET Core框架的本质
源文章地址:http://www.cnblogs.com/artech/p/inside-asp-net-core-framework.html 1.从Hello World谈起 当我们最开始学习一门 ...
- Windows 下 MySQL-python 的安装
1. 标准方式 进入终端: > pip install MySQL-python 第一次安装(windows 下安装),可能会出错:缺少 vs 编译器,提示点击如下网站 Download Mic ...
- WPF中取得系统字体列表
原文:WPF中取得系统字体列表 在GDI+中,我们可以通过如下方式取得系统所有字体: foreach(FontFamily f in FontFamily.Families){ // 处理代码} ...