- 浏览: 1017767 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
由于用户数量的不断攀升,我对访问量大的应用实现了可扩展、高可靠的集群部署(即lvs+keepalived的方式),但仍然有用户反馈访问慢的问题。通过排查个服务器的情况,发现问题的根源在于共享存储服务器NFS。在我这个网络环境里,N个服务器通过nfs方式共享一个服务器的存储空间,使得NFS服务器不堪重负。察看系统日志,全是nfs服务超时之类的报错。一般情况下,当nfs客户端数目较小的时候,NFS性能不会出现问题;一旦NFS服务器数目过多,并且是那种读写都比较频繁的操作,所得到的结果就不是我们所期待的。 下面是某个集群使用nfs共享的示意图: 这种架构除了性能问题而外,还存在单点故障,一旦这个NFS服务器发生故障,所有靠共享提供数据的应用就不再可用,尽管用rsync方式同步数据到另外一个服务器上做nfs服务的备份,但这对提高整个系统的性能毫无帮助。基于这样一种需求,我们需要对nfs服务器进行优化或采取别的解决方案,然而优化并不能对应对日益增多的客户端的性能要求,因此唯一的选择只能是采取别的解决方案了;通过调研,分布式文件系统是一个比较合适的选择。采用分布式文件系统后,服务器之间的数据访问不再是一对多的关系(1个NFS服务器,多个NFS客户端),而是多对多的关系,这样一来,性能大幅提升毫无问题。 到目前为止,有数十种以上的分布式文件系统解决方案可供选择,如lustre,hadoop,Pnfs等等。我尝试了PVFS,hadoop,moosefs这三种应用,参看了lustre、KFS等诸多技术实施方法,最后我选择了moosefs(以下简称MFS)这种分布式文件系统来作为我的共享存储服务器。为什么要选它呢?我来说说我的一些看法: 1、 实施起来简单。MFS的安装、部署、配置相对于其他几种工具来说,要简单和容易得多。看看lustre 700多页的pdf文档,让人头昏吧。 2、 不停服务扩容。MFS框架做好后,随时增加服务器扩充容量;扩充和减少容量皆不会影响现有的服务。注:hadoop也实现了这个功能。 3、 恢复服务容易。除了MFS本身具备高可用特性外,手动恢复服务也是非常快捷的,原因参照第1条。 4、 我在实验过程中得到作者的帮助,这让我很是感激。 MFS文件系统的组成 1、 元数据服务器。在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器master,这是一个单点故障,需要一个性能稳定的服务器来充当。希望今后MFS能支持多个master服务器,进一步提高系统的可靠性。 2、 数据存储服务器chunkserver。真正存储用户数据的服务器。存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间复制(复制份数可以手工指定,建议设置副本数为3)。数据服务器可以是多个,并且数量越多,可使用的“磁盘空间”越大,可靠性也越高。 3、 客户端。使用MFS文件系统来存储和访问的主机称为MFS的客户端,成功挂接MFS文件系统以后,就可以像以前使用NFS一样共享这个虚拟性的存储了。 元数据服务器安装和配置 元数据服务器可以是linux,也可以是unix,你可以根据自己的使用习惯选择操作系统,在我的环境里,我是用freebsd做为MFS元数据的运行平台。GNU源码,在各种类unix平台的安装都基本一致。 (一) 安装元数据服务 1、下载GNU源码 wget http://www.moosefs.com/files/mfs-1.5.12.tar.gz 2、解包 tar zxvf mfs-1.5.12.tar.gz 3、切换目录 cd mfs-1.5.12 4、创建用户 useradd mfs –s /sbin/nologin 5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs 6、编译安装 make ; make install (二) 配置元数据服务 元数据服务器的配置文件是mfsmaster.cfg,我在安装MFS时指定了前缀,因此这个文件的位置在/usr/local/mfs/etc/mfsmaster.cfg.我们打开这个配置文件,看看都有哪些内容: 尽管每行都被注释掉了,但它们却是配置文件的默认值,要改变这些值,需要取消注释,然后明确指定其取值。接下来说明一下其中一些项目的含义。 ◆ LOCK_FILE = /var/run/mfs/mfsmaster.pid 文件锁所在的位置,它的功能是避免启动多次启动同一个守护进程。由于系统中本来不存在目录 /var/run/mfs,因此需要手动创建 mkdir /var/run/mfs,然后更改其属主 chown –R mfs:mfs /var/run/mfs 这样MFS 服务就能对这个目录有创建/写入 mfsmaster.pid 文件的权限了。 ◆ DATA_PATH = /usr/local/mfs/var/mfs 数据存放路径,只元数据的存放路径。那么这些数据都包括哪些呢?进目录看看,大致分3种类型的文件: 这些文件也同样要存储在其他数据存储服务器的相关目录。 ◆ MATOCS_LISTEN_PORT = 9420 MATOCS--master to chunkserver,即元数据服务器使用9420这个监听端口来接受数据存储服务器chunkserver端的连接。 ◆ MATOCU_LISTEN_PORT = 9421 元数据服务器在9421端口监听,用以接受客户端对MFS进行远程挂接(客户端以mfsmount挂接MFS) ◆ 其他部分看字面意思都不难理解。还有几个与时间有关的数值,其单位是秒。 这个配置文件,不必做修改就能工作了。 (三) 元数据服务器master启动 元数据服务器可以单独启动,即使没有任何数据存储服务器(chunkserver)也是能正常工作的,因此当我们安装配置完MFS后,即可启动它。执行命令 /usr/local/mfs/sbin/mfsmaster start ,如果没有意外,元数据库服务器就应该作为一个守护进程运行起来。现在我们可以通过3个方面来检查一下MFS master的运行状况: (四)、关闭元数据服务器 关闭元数据服务器,务必使用 /usr/local/mfs/sbin/mfsmaster –s 这种方式,如果直接使用kill杀死进程,将导致下次启动时出现找不到相关文件,而不能正常启动服务器。这个一定要谨慎。当然,如果发生了这个事情,还是可以通过 mfsmetastore 来恢复的。 数据存储chunkserver服务器的安装配置 数据存储服务器chunkserver也是可以运行在各种类unix平台的,因此不再多说。一个MFS环境到底能集群多少服务器,作者的说法是上PB容量,个人建议,最好3台以上;并且专门用来做存储,不要把它跟master搞到一个机器(理论上没问题,实现也是可以的,但这不是一个好策略)。因为每个数据存储服务器的安装和配置都是相同的,所以只需按照一个服务器的操作就可以了。 (一)、安装数据存储服务器 chunkserver 1、下载GNU源码 wget http://www.moosefs.com/files/mfs-1.5.12.tar.gz 2、解包 tar zxvf mfs-1.5.12.tar.gz 3、切换目录 cd mfs-1.5.12 4、创建用户 useradd mfs –s /sbin/nologin 5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs 6、编译安装 make ; make install (二)配置数据存储服务器chunkserver 数据存储服务器有2个配置服务器需要修改,一个是主配置文件 mfschunkserver.cfg ,另一个配置文件是 mfshdd.cfg。每个服务器用来分配给 MFS使用的空间最好是一个单独的硬盘或者一个raid卷,最低要求是一个分区。作者举的例子是创建一个大文件,然后挂接在本地,这不好,只能用来做实验了。 1、修改配置文件 /usr/local/mfs/etc/mfschunkserver.cfg。下面是修改了的配置文件: 这个配置文件里,没有注释符号“#”就是被修改过的项了,接下来是里面某些项的含义说明: ◆ MASTER_HOST = 192.168.0.19 元数据服务器的名称或地址,可以是主机名,也可以是ip地址,只要数据存储服务器能访问到元数据服务器就行。 ◆ LOCK_FILE = /var/run/mfs/mfschunkserver.pid 与元数据服务器master的处理完全相同. ◆ CSSERV_LISTEN_PORT = 9422 CSSERV—chunkserver,这个监听端口用于与其它数据存储服务器间的连接,通常是数据复制。 ◆ HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg 分配给MFS使用的磁盘空间配置文件的位置。 2、修改配置文件/usr/local/mfs/etc/mfshdd.cfg。在我的服务器上,只有一个1T的SATA硬盘,分了一个800G容量的分区来做为MFS存储服务的组成部分。为了使mfs拥有写目录的权限,需要修改目录的属主。我的服务器的分区挂接点是 /data , 用 chown –R mfs:mfs /data 把属主改变。因为我的每个服务器只需贡献一个分区做为MFS,因此配置文件只需要如下一行内容就可以了: (四) 关闭数据存储服务器 跟元数据服务器master相似,执行命令 /usr/local/mfs/sbin/mfschunkserver –s , chunkserver服务就停下来了。为了使系统重启过程能自动启动chunkserver服务,可以通过在/etc/rc.local文件追加行 /usr/local/mfs/sbin/mfschunkserver start 来达到这个目的(master的自动重启处理也可同样处理)。 MFS客户端的安装及配置 我的生产环境,只有centos和freebsd两种环境,因此下面的描述,只有centos及freebsd挂接MFS文件系统的情形,其他类型的unix系统,待日后尝试。对比前面的操作过程,客户端挂接后使用MFS集群文件系统才是最费时的事情。 一、centos作为MFS的客户端。 (一) 安装MFS客户端 ◆Mfsmount需要依赖FUSE,因此需要先安装好fuse,这里我选用fuse-2.7.4.tar.gz。 1、解包 tar zxvf fuse-2.7.4.tar.gz 2、切换目录 cd fuse-2.7.4. 3、配置 ./configure 4、编译安装 make;make install 如果系统已经安装了fuse,则跳过这个步骤。 ◆安装MFS客户端程序 1、修改环境变量文件/etc/profile ,追加下面的行,然后再执行命令source /etc/profile使修改生效。 (二)挂接和使用MFS文件系统 1、创建挂接点 mkdir /mnt/mfs 2、挂接MFS /usr/local/mfs/bin/mfsmount –h 192.168.0.19 .注意,所有的MFS都是挂接同一个元数据服务器master,而不是其他数据存储服务器chunkserver ! 二、freebsd作为MFS客户端 Freebsd安装和挂接MFS集群文件系统,比centos操作起来要复杂一些.mfsmount需要依赖fuse,并且需要在内核中加载fusefs模块。 (一)安装fuse 1、解包 tar zxvf fuse-2.7.4.tar.gz 2、切换目录 cd fuse-2.7.4. 3、配置 ./configure 4、编译安装 make;make install 如果系统已经安装了fuse,则跳过这个步骤。 (二) 安装内核模块fusefs-kmod 6、选择“fusefs-kmod-0.3.9.p1_2”,按[OK]返回到第“4”步出现的那个操作界面。这时我们用“Tab”键选中底部右边的“Install”,完成安装后,会出现一个安装成功的提示,然后瞬间消失。 ◆ 加载fusefs模块 kldload /usr/local/modules/fuse.ko .如果加载不成功,请检查是否存在模块文件fuse.ko. ◆ 检查fusefs模块是否被加载到内核: 如果没有类似上面馆的输出,就表明fusefs模块没有加载成功。 (三)安装包 pkg-config: 1、cd /usr/ports/devel/pkg-config 2、make install clean (四)安装MFS客户端 1、解包 tar zxvf mfs-1.5.12.tar.gz 2、切换目录 cd mfs-1.5.12 3、创建用户 pw useradd mfs –s /sbin/nologin 4、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount 5、编译安装 make ; make install ◆检查MFS客户端安装的结果。通过查看目录/usr/local/mfs/bin目录的文件,应该发现如下文件: 就能实现开机或重启系统自动挂接MFS文件系统。 破坏性测试 一、测试数据存储服务器 我用5个服务器组成了MFS的存储平台,其中一个是master,其余四个服务器是chunkserver.先停止一个chunkserver服务,然后在某个MFS客户端往挂接点的目录(/mnt/mfs)里复制数据或者创建目录/文件、或者读取文件、或者删除文件,观察操作是否能正常进行。再停止第2个chunkserver,重复执行上述操作;然后再停止第3个服务器,执行类似的文件读些操作。减少chunkserver试验后,我们再来逐步增加chunkserver服务器,然后对MFS执行读写等相关访问操作,检验其正确性。 通过增减chunkserver服务器的测试,服务的可靠性确实不错,哪怕只剩下最后一个服务器,也能正常提供存储访问服务。 二、测试元数据服务器 元数据服务器最重要的文件在目录 /usr/local/mfs/var/mfs ,MFS每一个数据的变化,都被记录在这个目录的文件里,我们可以通过备份这个目录的全部文件,来保障整个MFS文件系统的可靠性.在正常情况下,元数据服务器的改变日志文件(changelogs) 实时地、自动地复制到所有的数据存储服务器,并且以changelog_csback.*.mfs的形式命名。换句换说,即使元数据服务器报废了,也能再部署一个元数据服务器,然后从数据存储服务器chunkserver取得恢复所需要的文件。 (一)本地测试 1、停止元数据服务 /usr/local/mfs/sbin/mfsmaster 2、备份元数据服务器数据 cd /usr/local/mfs/var; tar czvf mfs.tgz mfs 3、删除目录 mv mfs mfs.bk 或 rm –rf mfs 4、启动元数据服务 ../sbin/mfsmaster start 启动失败,提示不能初始化数据。 5、解包 tar zxvf mfs.tgz 6、执行恢复操作 .. /sbin/mfsmetarestore –a 7、启动元数据服务 ../sbin/mfsmaster start 8、在MFS客户端检查MFS存储的数据是否跟恢复前一致?能否正常访问等等。 (二) 迁移测试 1、 安装新的MFS元数据服务器。 2、 复制元数据服务器数据目录(/usr/local/mfs/var/mfs)到这个新的元数据服务器。 3、 停止原先的那个元数据服务器(关闭计算机或停止它的网络服务)。 4、 更改新的元数据服务器的ip为原来那个服务器的ip. 5、 启动新的元数据服务 /usr/local/mfs/sbin/mfsmaster start 6、 在MFS客户端检查MFS存储的数据是否跟恢复前一致?能否正常访问等等。 感谢Pawel Kalinowski (mfs作者)提供帮助!
评论
/usr/local/mfs/bin/mfsgetgoal 3 /mnt/mfs
出现3: realpath error 这样的错误,而且再看的时候被分数还是1
发表评论
-
eclipse使用SVN创建,合并分支[转]
2011-11-11 17:11 912之前一直使用"小乌龟"进行分支建立与 ... -
持续集成之“依赖管理”
2011-08-04 18:10 807来源: infoq 发布时间: 2011-0 ... -
持续集成理论和实践的新进展
2011-08-04 18:10 989作者: 肖鹏 来源: InfoQ 发布时间 ... -
Maven原理和Maven2新特性
2011-06-30 16:02 1044Maven的基本原理和Maven2的新特性 用Maven做项 ... -
结合Maven2进行J2EE项目构建
2011-06-29 21:13 1203一.背景 Maven2 的基本 ... -
用Maven做项目管理
2011-06-29 21:10 1036用 Maven 做项目管理 在 Java世界中我们 ... -
天生一对"Maven2+Jetty" -- Maven2创建并管理WebApp
2011-06-29 19:21 1299Maven2代比1代改进很多,其中主要强调的是--它不仅仅是个 ... -
Maven实战(四)——基于Maven的持续集成实践
2011-06-28 13:16 963Martin的《持续集成》 ... -
Hudson+Maven+SVN 快速搭建持续集成环境
2011-06-28 13:07 1022hudson 是一个可扩展的持续集成引擎,Hudson非常 ... -
敏捷开发、极限编程
2011-06-27 00:35 881什么是敏捷开发?一种以人为核心、迭代、循序渐进的开发方法。在敏 ... -
敏捷开发简介
2011-06-27 00:34 1199在软件工业界,敏捷开发已成为众多高效开发团队的制胜之道。它不仅 ... -
用SecureCRT连接VMware中的Linux系统
2011-06-16 22:03 1602一、预备知识: Secure: SecureCRT将S ... -
持续集成之路——Maven
2011-06-15 15:04 733写在前面 ... -
持续集成之路——Maven(续)
2011-06-15 15:02 864接上篇)在新创建了项目之后,可以看到目录结构: ... -
持续集成之路——搭建Maven私服
2011-06-15 15:01 1077在开发过程中,有时候会使用到公司内部的一些开发包,显然把这些包 ... -
Maven仓库管理-Nexus(转帖后加强版)
2011-06-15 15:00 2041前面我讲到为什么要使用Maven, Maven的安装,以及如何 ... -
maven下nexus的搭建,jar包上傳等注意事項
2011-06-15 14:58 2492nexus是用來搭建本地jar ... -
解决nexus下载maven索引的问题
2011-06-14 23:23 3175在上个周五在公司的一 ... -
Maven仓库管理-Nexus(转帖后加强版)
2011-06-14 00:50 1108前面我讲到为什么要使用Maven, Maven的安装,以及如何 ... -
Hudson+Maven+SVN 快速搭建持续集成环境
2011-06-08 01:04 853hudson 是一个可扩展的持 ...
相关推荐
分布式文件系统MFS(moosefs)实现存储共享 分布式文件系统MFS(moosefs)是解决存储共享问题的一种有效方式。随着用户数量的不断增加, traditional NFS 服务器面临着性能问题和单点故障问题。MFS 通过其高可靠性...
在本案例中,提到了多种开源分布式文件系统软件,例如GlusterFS、Lustre、Hadoop分布式文件系统、MooseFS、MFS和Ceph等。这些软件之间的关键区别在于它们的设计理念、性能、功能和使用场景。例如,GlusterFS以其简单...
文件系统以后,就可以像以前使用NFS 一样共享这个虚拟性的存储了。 元数据服务器安装和配置 元数据服务器可以是linux,也可以是unix,你可以根据自己的使用习惯选择操作系统,在我的 环境里,我是用freebsd 做为MFS ...
MooseFS是一个高可靠性的分布式文件系统,可以将资源分布存储于几台不同的物理服务器,对外只提供给用户一个访问接口,文件操作类似于操作标准的Unix文件系统。MooseFS具有高可靠性、可扩展性、高可控性、可追溯性等...
分布式存储系统MooseFS(简称MFS)是一种具有容错性的网络分布式文件系统,它能够把数据分散存储在多个物理服务器上,同时提供给用户一个统一的资源访问点。MFS的一个重要优势是其能够在不需要昂贵的专业级硬件...
- **支持FUSE**:兼容Filesystem in Userspace,允许在用户空间实现文件系统。 - **支持C++, Java, Python方式的调用**:提供了多种编程语言的API接口。 - **提供了丰富的工具程序**:便于管理和监控系统状态。 - **...
MooseFS,简称MFS,是一款高性能、可扩展的分布式文件系统,适用于大规模数据存储和处理场景。在3.0.101-1这个版本中,MFS进一步优化了其在云原生环境下的表现,提升了稳定性和效率。本文将深入探讨MFS的核心特性、...
Fuse是一个基于用户空间的文件系统,mfs依赖于Fuse来挂载文件系统。在安装mfs之前,需要先安装Fuse。安装Fuse的步骤如下: * 解压Fuse的安装包:`tar -xzvf fuse-2.7.3.tar.gz` * 进入Fuse的安装目录:`cd fuse-...
- **架构**:MooseFS (MFS) 是一个分布式文件系统,其设计目标是提供高可用性、可扩展性和容错能力。它的核心组件包括: - **Master Server(主服务器)**:负责管理整个系统的元数据,如文件系统结构、文件权限等...