FastDFS文件系统(二) fastdfs和其他文件系统区别
一、概述
普通存储方案:Rsync、DAS(IDE/SATA/SAS/SCSI等块)、NAS(NFS、CIFS、SAMBA等文件系统)、SAN(FibreChannel, iSCSI, FoE存储网络块),Openfiler、FreeNas(ZFS快照复制)由于生产环境中往往由于对存储数据量很大,而SAN存储价格又比较昂贵,因此大多会选择分布式
存储来解决一下问题:
- 海量数据存储问题
- 数据高可用问题(冗余备份)问题
- 较高的读写性能和负载均衡问题
- 支持多平台多语言问题
- 高并发问题
主要对别指标 csdn这表格太难用了,我还是word整理后搬到这儿来的。
指标
适合类型
文件分布
系统性能
复杂度
FUSE
POSIX
备份机制
通讯协议接口
社区支持
去重
开发语言
FastDFS
4KB~500MB
小文件合并存储不分片处理
很高
简单
不支持
不支持
组内冗余备份
ApiHTTP
国内用户群
C语言
TFS
所有文件
小文件合并,以block组织分片
复杂
不支持
不支持
Block存储多份,主辅灾备
APIhttp
少
C++
MFS
大于64K
分片存储
Master占内存多
支持
支持
多点备份动态冗余
使用fuse挂在
较多
Perl
HDFS
大文件
大文件分片分块存储
简单
支持
支持
多副本
原生api
较多
java
Ceph
对象文件块
OSD一主多从
复杂
支持
支持
多副本
原生api
较少
C++
MogileFS
海量小图片
高
复杂
可以支持
不支持
动态冗余
原生api
文档少
Perl
ClusterFS
大文件
简单
支持
支持
镜像
多
C二、常用的分布式文件系统
常见的分布式文件系统有FastDFS,GFS、HDFS、Ceph 、GridFS 、mogileFS、TFS等。各自适用于不同的领域。它们都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。
FastDFS介绍
=======================
GFS(Google File System)
=======================
Google公司为了满足本公司需求而开发的基于Linux的专有分布式文件系统。。尽管Google公布了该系统的一些技术细节,但Google并没有将该系统的软件部分作为开源软件发布。
下面分布式文件系统都是类 GFS的产品。
HDFS(Hadoop Distributed File System)
=======================
Hadoop 实现了一个分布式文件系统,主要用于大数据计算存储,简称HDFS。 Hadoop是Apache Lucene创始人Doug Cutting开发的使用广泛的文本搜索库。它起源于Apache Nutch,后者是一个开源的网络搜索引擎,本身也是Luene项目的一部分。Aapche Hadoop架构是MapReduce算法的一种开源应用,是Google开创其帝国的重要基石。Ceph(https://github.com/ceph/ceph)
=======================
是加州大学圣克鲁兹分校的Sage weil攻读博士时开发的分布式文件系统。Ceph能够在维护 POSIX 兼容性的同时加入了复制和容错功能。Sage weil并使用Ceph完成了他的论文。说 ceph 性能最高,C++编写的代码,支持Fuse,并且没有单点故障依赖,
于是下载安装, 由于 ceph 使用 btrfs 文件系统, 而btrfs 文件系统需要 Linux 2.6.34 以上的内核才支持。GridFS文件系统
=======================
MongoDB是一种知名的NoSql数据库,GridFS是MongoDB的一个内置功能,它提供一组文件操作的API以利用MongoDB存储文件,GridFS的基本原理是将文件保存在两个Collection中,一个保存文件索引,一个保存文件内容,文件内容按一定大小分成若干块,每一块存在一个Document中,这种方法不仅提供了文件存储,还提供了对文件相关的一些附加属性(比如MD5值,文件名等等)的存储。文件在GridFS中会按4MB为单位进行分块存储。MogileFS
=======================由memcahed的开发公司danga一款perl开发的产品,目前国内使用mogielFS的有图片托管网站yupoo等。
MogileFS是一套高效的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上。
MogileFS由3个部分组成:
第1个部分是server端,包括mogilefsd和mogstored两个程序。前者即是 mogilefsd的tracker,它将一些全局信息保存在数据库里,例如站点domain,class,host等。后者即是存储节点(store node),它其实是个HTTP Daemon,默认侦听在7500端口,接受客户端的文件备份请求。在安装完后,要运行mogadm工具将所有的store node注册到mogilefsd的数据库里,mogilefsd会对这些节点进行管理和监控。
第2个部分是utils(工具集),主要是MogileFS的一些管理工具,例如mogadm等。
第3个部分是客户端API,目前只有Perl API(MogileFS.pm)、PHP,用这个模块可以编写客户端程序,实现文件的备份管理功能。
TFS
-------------------------------------
TFS(Taobao !FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器 集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用 在淘宝各项应用中。它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性。同时扁平化的数据组织结构,可将文件名映射到文件的物理地址,简化 了文件的访问流程,一定程度上为TFS提供了良好的读写性能。
FastDFS文件系统(二) fastdfs和其他文件系统区别
时间: 2024-11-08 18:14:57
FastDFS文件系统(二) fastdfs和其他文件系统区别的相关文章
FastDFS文件系统(一) fastdfs是什么?
一.FastDFS概述 FastDFS是阿里巴巴开源的一套轻量级,天生就是分布式设计的文件系统,FastDFS的源代码由C语言开发,目前可运行在Linux,FreeBSD,Unix等类操作系统上,FastDFS解决了大数据量文件存储(这里经常有人说成大数据,我本人是不赞同的)和读写分离,备份容错,负载均衡,动态扩容等问题,这也就是原作者所描述的高性能和高扩展性的文件系统.适合存储4KB~500MB之间的小文件,如图片网站.短视频网站.文档.app下载站等. 二.FastDFS作者简介 FastD
Linux基础命令介绍十二:磁盘与文件系统
本篇讲述磁盘管理相关的命令.计算机中需要持久化存储的数据一般是保存在硬盘等辅助存储器中.硬盘一般容量较大,为了便于管理和使用,可以将硬盘分成一到多个逻辑磁盘,称为分区;为使分区中的文件组织成操作系统能够处理的形式,需要对分区进行格式化(创建文件系统);在linux中,对于格式化后的分区,还必须经过挂载(可简单理解为将分区关联至linux目录树中某个已知目录)之后才能使用. 1.df 显示文件系统磁盘空间使用量 [root@centos7 temp]# df -h 文件系统
存储那些事儿(二): 下一代Linux文件系统BTRFS简介
BTRFS,通常念成 Butter FS,Better FS 或B-tree FS.下一代的Linux文件系统. 它基于写时拷贝(copy-on-write),支持高效的snapshot和clone.它使用b-tree作为存储的数据结构.在BTRFS项目主页上对自己是这么描述的:"一个新的针对Linux的写时复制文件系统,致力于实施高级的功能,同时关注容错.修复和管理方便性." 它有哪些高级功能呢?下面的feature来自BTRFS的项目主页:http://btr
在java中一维数组和二维数组有什么区别吗?
问题描述 在java中一维数组和二维数组有什么区别吗? 求大神指点java中一维数组和二维数组的区别,为什么一位数组是一行 二维数组可以定义多行 解决方案 如图黑色的是一维数组红色的是二维数组一维数组用来存数据二维数组用来存一维数组 解决方案二: JAVA中一维数组和二维数组的定义一维数组及二维数组的用法java中arraylist和一维数组二维数组的转换 解决方案三: 一楼正解,一维和二维的区别就是线和面的区别,一维的数组你就可以通过一个下标来准确定位,而二维的就需要有两个就像坐标系一样,一维
在ubuntu,基于ext2文件系统实现一个加密的文件系统?
问题描述 在ubuntu,基于ext2文件系统实现一个加密的文件系统? 不是重新挂载一个新的文件系统,而是修改ext2内核代码达到加密的功能.要修改哪个文件的哪些函数能达到加密的效果呀?
c#-二个线程之间的区别,C#
问题描述 二个线程之间的区别,C# string ticket_list = "1,2,3,11,12"; string[] sArray = ticket_list.Split(','); if (sArray.Length > 0) { foreach (var i in sArray) { task = new Task(() => { Task a = Task.Run(() => { MyMethod(int.Parse(i)); }); }); } tas
Linux下如何查看当前支持的文件系统及各分区的文件系统类型
Linux下查看当前内核系统支持的文件系统: 一般都在 /lib/modules/kernl-version/kernel/fs/ 目录下包含了当前内核版本支持的文件系统: ls /lib/modules/kernl-version/kernel/fs/ eg: v0id@v0id-eof ~ $ ls /lib/modules/3.11.0-12-generic/kernel/fs/ 9p afs bfs cachefiles coda dl
Docker 文件系统以及启动容器的文件系统变化
本文主要介绍一下 Docker 基础的东西,先介绍一下我的实现环境: 1. windows 10 正式版 1. Docker Toolbox 1. Docker version 1.8.2 1. 官方镜像 ubuntu:latest 这里我们主要只说 aufs/containers/graph 这三个目录. 1. 先进入 Docker 文件系统目录 ll /var/lib/docker #其中目录是这样的 /var/lib/docker -> /mnt/sda1/var/lib/docker/
oracle 12c rac安装acfs文件系统教程
这篇文章介绍了如何在一个已经安装12c rac的虚拟机上,如何建立acfs文件系统,并且利用acfs snapshot刷一个COW(Copy-On-Write)库出来做测试库. Highlight Step: 一.给虚拟机增加asm盘,以便建立acfs文件系统 二.创建acfs文件系统 三.在节点1创建数据库在acfs文件系统上.(12c支持数据文件,控制文件,日志文件等数据库的文件放在acfs上.参考Doc ID 1369107.1中ACFS Advanced Features Platfor