mfs理论知识

moosefs理论

mfs的优势:

1. Free(GPL)

2. 通用文件系统,不需要修改上层应用就可以使用

3. 可以在线扩容,体系架构可伸缩性极强

4. 部署简单

5. 高可用,可设置任意的文件冗余程度(提供比 raid1+0 更高的冗余级别,而绝对不会影响读或写的性能,只会加速!)

6. 可回收在指定时间内删除的文件(“回收站”提供的是系统级别的服务,不怕误操作了,提供类似 oralce 的闪回等高级 dbms 的即时回滚特性!)

7. 提供 netapp,emc,ibm 等商业存储的 snapshot 特性。(可以对整个文件甚至在正在写入的文件创建文件的快照)

8. google filesystem 的一个 c 实现

9. 提供 web gui 监控接口

10. 提高随机读或写的效率

11. 提高海量小文件的读写效率

MooseFS是一个分布式文件系统

MooseFS文件系统结构包括以下四种角色:

1.管理服务器 managing server (master)

2.元数据日志服务器 Metalogger server(Metalogger)

3.数据存储服务器 data servers (chunkservers)

4.客户机挂载使用 client computers

各种角色作用:

1. 管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝。

2. 元数据日志服务器: 负责备份 master 服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在 master server 出问题的时候接替其进行工作。

3. 数据存储服务器:负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输。

4. 客户端: 通过 fuse 内核接口挂接远程管理服务器上所管理的数据存储服务器,看起来共享的文件系统和本地 unix 文件系统使用一样的效果。

MFS 读写原理:

原始的读/写速度很明显是主要取决于所使用的硬盘的性能、网络的容量和拓扑结构的,使用的硬盘和网络的吞吐量越好,整个系统的性能也就会越好。

.mfsmaster.lock:文件记录正在运行的 mfsmaster 的主进程

metadata.mfs, metadata.mfs.back MooseFS 文件系统的元数据 metadata 的镜像

changelog.*.mfs:是 MooseFS 文件系统元数据的改变日志(每一个小时合并到 metadata.mfs中一次)

Metadata 文件的大小是取决于文件数的多少(而不是他们的大小)。changelog 日志的大小是取决于每小时操作的数目,但是这个时间长度(默认是按小时)是可配置的。

修改 linux 下最大文件描述符的限制:

在进行大量小文件写时,可能会出现了一个严重错误,有可能和操作系统文件描述符有关。操作系统默认文件描述符为 1024.  1.6.26 版本默认为 100000

建议上线时,master 和 chunker 修改文件描述符系统级限制:它是限制所有用户打开文件描述符的总和,可以通过修改内核参数来更改该限制:

# vi /etc/sysctl.conf 添加

fs.file-max=102400

如果此值默认够大可以不用更改

# sysctl -p

命令使其生效。

用户级限制:只是修改用户级的最大文件描述符限制,也就是说每一个用户登录后执行的程序占用文件描述符的总数不能超过这个限制。

# vi /etc/security/limits.conf

* - nofile 102400

保存退出后重新登录,其最大文件描述符已经被永久更改了。

与 file-max 参数相对应的还有 file-nr,这个参数是只读的,可以查看当前文件描述符的使用情况。

# sysctl -a|grep file

fs.file-nr = 12800 0 782554

fs.file-max = 782554

在 kernel 2.6 之前的版本中,file-nr 中的值由三部分组成,分别为:1.已经分配的文件句柄数,2.已经分配单没有使用的文件句柄数,3.最大文件句柄数。但在 kernel 2.6 版本中第二项的值总为0,这并不是一个错误,它实际上意味着已经分配的文件句柄无一浪费的都已经被使用了

file-max 的值是 linux 内核可以分配的最大文件句柄数。如果你看到了很多关于打开文件数已经达到了最大值的错误信息,你可以试着增加该值的限制。file-max 的默认值大概是系统内存的 10%

(系统内存以 kb 计算)

时间: 2024-10-14 04:45:14

mfs理论知识的相关文章

TestNG学习-001-基础理论知识

此 文主要讲述用 TestNG 的基础理论知识,TestNG 的特定,编写测试过程三步骤,与 JUnit4+ 的差异,以此使亲对 TestNG 测试框架能够有一个简单的认知. 希望能对初学 TestNG 测试框架的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激! TestNG是什么?TestNG是一个灵感来自于 JUnit 和 NUnit 的一个设计用来简化广泛的测试需求的开源自动化测试框架,其引入了一些新的功能,使其功能更强大,而且易于使用,但是 TestNG 不是 JUnit 的扩展.它

堆和栈的理论知识

一.预备知识-程序的内存分配       1. 一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)-由编译器自动分配释放,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈.2.堆区(heap)-一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收.注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵.3.全局区(静态区)(static)-全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初

JDBC编程理论知识(1)

1.SUN公司为统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC 2.JDBC全称为:Java Data Base Connectivity(java数据库连接),它主要由接口组成. 组成JDBC的2个包: (1)java.sql.*; (2)javax.sql.*; 3.JDBC在程序中的位置: 4.JDBC的六个固定步骤 1,注册数据库驱动[利用反射] 2,取得数据库连接对象Connection 3,创建SQL对象 4,执行SQL命令,并返回结果集 5,处理结果集 6,

Android初级教程对大量数据的做分页处理理论知识

有时候要加载的数据上千条时,页面加载数据就会很慢(数据加载也属于耗时操作).因此就要考虑分页甚至分批显示.先介绍一些分页的理论知识.对于具体用在哪里,会在后续博客中更新. 分页信息 1,一共多少条数据 select count(*) from blacktb; 性能低下 原因: sql解析器先查询数据字典,把*转成所有的列名和列的类型 然后把每行数据提取出来 最后统计多少行数据 select count(常量) from blacktb; 高性能的查询 不需要每行的记录,只需要行数 2,指定每页

Winsock网络编程笔记(4)----基本的理论知识

前面的笔记记录了Winsock的入门编程,领略了Winsock编程的乐趣..但这并不能算是掌握了Winsock,加深理论知识的理解才会让后续学习更加得心应手..因此,这篇笔记将记录一些有关Winsock的基本理论知识,由于是一篇笔记,鉴于看书速度有限,主要内容会慢慢地填入..错误在所难免的,希望看客更正..(*^__^*) 嘻嘻…… Winsock网络编程笔记(4)----基本的理论知识,布布扣,bubuko.com

数据库入门理论知识介绍

数据库入门理论知识介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 前言: 1.目前90%以上的公司面临的运维的瓶颈都在后端 最常见的2大瓶颈就是: 1>.数据库(极难扩展): 2>.存储: 所以说做互联网的运维工程师要是把以上两点问题解决就可以轻松的搞定整个架构 2.什么是数据库: 查百度上有长篇大论了一下数据库特点,我们可以简单的理解: 数据库就是一个存放数据的仓库,这个仓库按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数

ipv4理论知识2-分类编址、ip分类、网络标识、主机标识、地址类、地址块

分类编址 ipv4的体系结构中有分类编址和无分类编址(后续会介绍到),在分类编址时,ipv4地址分为A.B.C.D.E这5类.每类占用的IP比例和个数如下图: ipv4分类识别 计算机以二进制方式存储ipv4地址,在这种情况下可以和方便的写出一种算法,通过一个连续检查过程来查找出该ip地址的类别.流程图如下: 网络标识和主机标识 对于A.B.C类IP地址,都可以划分为网络标识和主机标识两部分.其中网络标识和主机标识的长度随地址类别的不同变化.网络标识和主机标识其实很好理解就相当于我们使用的电信的

iOS Socket理论知识

iOS Socket理论知识 序言 网络七层由下往上分别为物理层.数据链路层.网路层.传输层.会话层.表示层和应用层.其中物理层.数据链路层和网络层通常被称作媒体称,是网络工程师所研究的对象;传输层.会话层.表示层和应用层则被称作主机层,是用户所面向和关心的内容. http协议对应与应用层 TCP/UDP协议对应于传输层 IP协议对应于网络层 三者本质上没有可比性.何况HTTP协议是基于TCP连接的.TCP/IP是传输层协议,主要解决数据如何在网络中传输:而HTTP是应用层协议,主要解决如何包装

计算机编程基础:栈、堆、堆栈概念区分及理论知识

一.预备知识—程序的内存分配  一个由c/C++编译的程序占用的内存分为以下几个部分  1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结  构中的栈.  2.堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 .注意它与数据结构  中的堆是两回事,分配方式倒是类似于链表,呵呵.  3.全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在  一块区域, 未