分布式文件系统MFS(moosefs)实现存储共享
MooseFS使用总结材料
MooseFS使用总结2010-12-08 12:55 阿炯流行的开源分布式文件系统比较我现在有海量的数据文件(1000万个文件)需要存储,需要让其他计算机可以很容易地访问,数据无价,我还希望这个文件系统带冗余功能。
我首先注意到的是Ubuntu Enterprise Cloud的提供者:Eucalyptus。
它提供了和AWS(Amazon Web Service)几乎完全兼容的云计算接口,看起来似乎是个云存储的靠谱解决方案。
Eucalyptus模仿Amazon的S3服务,提供了一个叫做Walrus的存储服务组件。
可是经过一番探索,我发现Eucalyptus想说爱你不容易。
一方面是因为Eucalyptus配置起来很麻烦,缺乏文档,网上几乎找不到任何相关帮助;另一方面,虽然理论上Eucalyptus和AWS的EC2/S3兼容,但实际上并非如此,很多在AWS上可以用的工具,在Eucalyptus上就无法使用最关键是,直到最后我把Walrus配置完成之后,才发现Walrus根本不像我想的那样,是一个带冗余的云存储系统。
而只是一个实现了S3接口的单机软件而已。
实际上Walrus和Eucalyptus的另一个组件sc(storage controller)没有任何关联,Walrus只是提供了和S3一致的接口,而它的实现方式,既不带冗余,也不能分开部署在多台服务器上。
于是我开始寻找一个真正的分布式文件系统,来解决我的存储难题。
一找才发现,市面上各种分布式文件系统品种繁多,层出不穷。
列举几个主要的:mogileFS:Key-Value 型元文件系统,不支持FUSE,应用程序访问它时需要API,主要用在web领域处理海量小图片,效率相比mooseFS高很多。
FastDFS:国人在mogileFS的基础上进行改进的key-value型文件系统,同样不支持FUSE,提供比mogileFS更好的性能。
mooseFS:支持FUSE,相对比较轻量级,对master服务器有单点依赖,用c编写,性能相对较好,国内用的人比较多glusterFS:支持FUSE,比mooseFS庞大。
Linux平台上MFS(MooseFS)的部署v0.5
Linux平台上MFS(MooseFS)的部署目录1 概述 (3)2 实验环境 (3)3 安装和配置MFS Master (4)3.1 安装master (4)3.2 配置master (4)3.3 启动和停止master服务 (5)4 安装和配置ChunkServer (5)4.1 安装ChunkServer (5)4.2 配置ChunkServer (5)4.3 启动和停止ChunkServer服务 (6)5 安装和配置MFS Client (6)5.1 安装FUSE (6)5.2 安装MFS Client (7)5.3 使用MFS (7)5.4 设置副本数量 (7)5.5 设置空间回收时间 (8)6 破坏性测试 (9)6.1 测试数据存储服务器 (9)6.2 测试元数据服务器 (9)1 概述MFS(MooseFS)是一个Linux/Unix平台上开源的分布式文件系统。
它可以把文件复制成多份(如3份)分别放置在多个数据服务器(ChunkServer)上,实现文件的冗余。
而且可以动态的增加ChunkServer,实现动态存储容量扩展,甚至可以支持PB级的存储容量。
2 实验环境●硬件和软件环境:✓PC:Intel(R) Core(TM)2 Quad CPU Q9550@ 2.83GHz, 8G RAM✓OS: CentOS 5.2 (x86_64), Kernel: 2.6.18-92.el5xen✓MFS: MooseFS v1.5.12表2-1 安装MFS所需软件列表3 安装和配置MFS Master3.1 安装master●创建用户# useradd mfs -s /sbin/nologin●安装master# tar xvzf mfs-1.5.12.tar.gz# cd mfs-1.5.12# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs # make# make install3.2 配置master●创建目录# mkdir -p /var/run/mfs# chown mfs:mfs /var/run/mfs●更改配置文件/usr/local/mfs/etc/mfsmaster.cfg:#WORKING_USER = mfs#WORKING_GROUP = mfs#LOCK_FILE = /var/run/mfs/mfsmaster.pid#DATA_PATH = /usr/local/mfs/var/mfs#SYSLOG_IDENT = mfsmaster#BACK_LOGS = 50#REPLICATIONS_DELAY_INIT = 300#REPLICATIONS_DELAY_DISCONNECT = 3600#MATOCS_LISTEN_HOST = *#MATOCS_LISTEN_PORT = 9420#MATOCU_LISTEN_HOST = *#MATOCU_LISTEN_PORT = 9421#CHUNKS_LOOP_TIME = 300#CHUNKS_DEL_LIMIT = 100#CHUNKS_REP_LIMIT = 153.3 启动和停止master服务●启动master服务# /usr/local/mfs/sbin/mfsmaster start●停止master服务# /usr/local/mfs/sbin/mfsmaster -s●查看master日志/var/log/messages# tail -f /var/log/messages4 安装和配置ChunkServer4.1 安装ChunkServer●创建用户# useradd mfs -s /sbin/nologin●安装ChunkServer# tar xvzf mfs-1.5.12.tar.gz# cd mfs-1.5.12# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs # make# make install4.2 配置ChunkServer●创建目录# mkdir -p /var/run/mfs# chown mfs:mfs /var/run/mfs●创建共享存储的挂载点,建议分配整个磁盘分区# mount /dev/xvdb1 /data# chown mfs:mfs /data●更改配置文件/usr/local/mfs/etc/mfschunkserver.cfg:#WORKING_USER = mfs#WORKING_GROUP = mfs#DATA_PATH = /usr/local/mfs/var/mfs#LOCK_FILE = /var/run/mfs/mfschunkserver.pid#SYSLOG_IDENT = mfschunkserver#BACK_LOGS = 50#MASTER_RECONNECTION_DELAY = 30MASTER_HOST = 10.8.2.41MASTER_PORT = 9420#MASTER_TIMEOUT = 60#CSSERV_LISTEN_HOST = *#CSSERV_LISTEN_PORT = 9422#CSSERV_TIMEOUT = 60#CSTOCS_TIMEOUT = 60#HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg●更改配置文件/usr/local/mfs/etc/mfshdd.cfg, 增加文件系统挂载点:/data1/data2注意:配置的挂载点必须让mfs用户有读写权限,如没有,用如下命令赋权限:# chown mfs:mfs /data14.3 启动和停止ChunkServer服务●启动chunkserver服务# /usr/local/mfs/sbin/mfschunkserver start●停止chunkserver服务# /usr/local/mfs/sbin/mfschunkserver -s●查看chunkserver日志/var/log/messages# tail -f /var/log/messages5 安装和配置MFS Client5.1 安装FUSE●增加环境变量并使其生效export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATHexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:.export PATH=$PATH:/usr/local/mfs/bin:.●安装fuse# tar xvzf fuse-2.7.4.tar.gz# cd fuse-2.7.4# ./configure# make# make install5.2 安装MFS Client●创建用户# useradd mfs -s /sbin/nologin●安装MFS Client# tar xvzf mfs-1.5.12.tar.gz# cd mfs-1.5.12# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount# make# make install5.3 使用MFS●如果报错fuse: device not found, 请先fuse mount.# modprobe fuse●挂载MFS文件系统# mkdir /mfsdata# /usr/local/mfs/bin/mfsmount -h 10.8.2.41 -w /mfsdata●使用MFS# dd if=/dev/urandom of=/mfsdata/test.dat bs=1M count=200# md5sum /mfsdata/test.dat522c27c45064c2d0463c168593f5bead /mfsdata/test.dat5.4 设置副本数量●查看目录现在的副本数量:# mfsgetgoal /mfsdata/mfsdata: 1# mfsfileinfo /mfsdata/test.dat/mfsdata/test.dat:chunk 0: 0000000000000013_00000004 / (id:19 ver:4)copy 1: 10.8.2.44:9422chunk 1: 0000000000000014_00000003 / (id:20 ver:3)copy 1: 10.8.2.42:9422chunk 2: 0000000000000015_00000003 / (id:21 ver:3)copy 1: 10.8.2.42:9422chunk 3: 0000000000000016_00000001 / (id:22 ver:1)copy 1: 10.8.2.42:9422●更改目录现在的副本数量:# mfsrsetgoal 3 /mfsdata/mfsdata/:inodes with goal changed: 3 (3)inodes with goal not changed: 0 (0)inodes with permission denied: 0 (0)●查看更改后目录的副本数量:# mfsgetgoal /mfsdata/mfsdata: 3# mfsfileinfo /mfsdata/test.dat/mfsdata/test.dat:chunk 0: 0000000000000013_00000004 / (id:19 ver:4)copy 1: 10.8.2.42:9422copy 2: 10.8.2.43:9422copy 3: 10.8.2.44:9422chunk 1: 0000000000000014_00000003 / (id:20 ver:3)copy 1: 10.8.2.42:9422copy 2: 10.8.2.43:9422copy 3: 10.8.2.44:9422chunk 2: 0000000000000015_00000003 / (id:21 ver:3)copy 1: 10.8.2.42:9422copy 2: 10.8.2.43:9422copy 3: 10.8.2.44:9422chunk 3: 0000000000000016_00000001 / (id:22 ver:1)copy 1: 10.8.2.42:9422copy 2: 10.8.2.43:9422copy 3: 10.8.2.44:94225.5 设置空间回收时间●查看目录当前回收时间:# mfsgettrashtime /mfsdata/mfsdata: 86400●设置目录当前回收时间为600秒:# mfsrsettrashtime 600 /mfsdata/mfsdata:inodes with trashtime changed: 3 (3)inodes with trashtime not changed: 0 (0)inodes with permission denied: 0 (0)●查看更改后空间回收时间:# mfsgettrashtime /mfsdata/mfsdata: 6006 破坏性测试6.1 测试数据存储服务器现在用4个服务器组成了MFS的存储平台,其中一个是master,其余三个服务器是chunkserver.先停止一个chunkserver服务,然后在某个MFS客户端往挂接点的目录(/mfsdata)里复制数据或者创建目录/文件、或者读取文件、或者删除文件,观察操作是否能正常进行。
使用分布式文件系统MooseFS实现存储共享(v1.6版)
使用分布式文件系统MooseFS实现存储共享(v1.6版) 2010-03-01 13:46 阿炯MFS系统工作的原理图前言:现在有大量的企业采用共享存储服务器NFS的方式,来对应用数据进行网络存储,但这存在性能瓶颈和单点故障的问题,于是分布式文件存储管理系统开始流行起来。
其优点是不言而喻的,本文为大家推荐了开源的分布式文件系统MFS,相信对大家有所帮助。
随着公司业务量的增加,相关的业务数据也随着成倍的增加.相应的机器存储空间不足的问题就成为目前一个比较突出的问题,随之而来的备份亦成为一个很为头痛的问题。
公司虽然有几台大容量的计算机可用来存放相关数据,但其位置位于各个机房,一时较难以组织,即使将其组织起来只能满足在一段时间内的存储需求,这个需要利用多台服务器上空闲空间加以组织利用,以提供更大的磁盘空间。
目前绝大多数业务系统采用NFS文件共享的方式来解决文件惟一性的问题,这种方法在规模较小、访问量低的时候还可以;随着量(访问及文件数目)的增加,这种共享架构显得有些力不从心了,性能与用户体验会有不小的下降。
除此之外,还要努力保证这台NFS服务器不能宕机,所有靠共享提供数据的应用就不再可用;尽管用rsync方式同步数据到另外一个服务器上做NFS服务的备份,但这对提高整个系统的性能与可靠性无帮助。
基于这样一种需求,我们需要对NFS服务器进行优化或采取别的解决方案,然而优化并不能对应对日益增多的客户端的性能要求,因此只能是采取别的解决方案了。
分布式文件系统是一个比较合适的选择,采用分布式文件系统后,服务器之间的数据访问不再是一对多的关系(1个NFS服务器,多个NFS客户端),而是多对多的关系。
这样一来,性能大幅提升,同时可靠性也高了许多。
其实,分布式文件系统我们应该都有所耳闻,但不算那些昂贵、需要付费支持的企业产品,绝大多数开源的分布式文件系统解决方案,如MogileFS和Hadoop,虽然都有成功的应用先例,但都有一个共同的令人挠头的特征,即在文件系统层不透明,需要额外的应用层API才能享用它的特性。
mfs分布式文件系统
mfs安装配置一、mfs安装1、首先全部关闭防火墙, 或者让9425, 9421, 9420通过主控服务器Master: 10.10.10.251备份服务器Metalogger: 192.168.1.161 存储服务器1 Chunk Servers 1: 192.168.0.59路径:编译路径/opt/soft安装路径/opt/mfs日志路径/data/mfs数据路径/mnt/mfschunks用户和组:组mfs用户mfs安装顺序为:master -> metalogger -> chunk server -> client在安装成功后, 我们再统一来修改配置, 启动, 使用服务器. 安装之前创建用户组和目录, 并赋予权限:groupadd mfsuseradd mfs -g mfs -s /sbin/nologinmkdir -p /opt/soft /data /mnt/mfschunkschown -R mfs:mfs /mnt/mfschunks2、首先安装mastercd /opt/mfs-1.6.27A、编译./configure --prefix=/opt/mfs --sysconfdir=/opt/mfs/etc --locals tatedir=/data --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmountB、安装Make && make installC、配置文件cd /opt/mfs/etc/mfscp mfsmaster.cfg.dist mfsmaster.cfgcp mfsmetalogger.cfg.dist mfsmetalogger.cfgcp mfsexports.cfg.dist mfsexports.cfgcd /data/mfscp metadata.mfs.empty metadata.mfs3、然后是metalogger, metalogger和mester类似:cd mfs-1.6.27./configure --prefix=/opt/mfs --sysconfdir=/opt/mfs/etc --locals tatedir=/data --with-default-user=mfs --with-default-group=mf s --disable-mfschunkserver --disable-mfsmountmake && make installcd /opt/mfs/etc/mfscp mfsmetalogger.cfg.dist mfsmetalogger.cfg4、然后是chunk server:./configure --prefix=/opt/mfs --sysconfdir=/opt/mfs/etc --local statedir=/data --with-default-user=mfs --with-default-group=mf s --disable-mfsmaster --disable-mfsmounte)make && make installF)cd /opt/mfs/etc/mfsg)cp mfschunkserver.cfg.dist mfschunkserver.cfgh)cp mfshdd.cfg.dist mfshdd.cfg5、最后是client, 就是要使用mfs的机器cd /opt/mfs-1.6.27./configure --localstatedir=/data --with-default-user=mfs --wi th-default-group=mfs --disable-mfsmaster --disable-mfschunkse rver --enable-mfsmountMake && make install6、centos用户可以使用yum, 命令如下:yum install fuse.i386 fuse-devel.i386 fuse-libs.i386 z lib-devel.i386二、mfs配置1、mastervi /opt/mfs/etc/mfsexports.cfg第二行的"*"为指定允许挂载的ip, 我们以让192.168.1.1-255允许挂载为例:192.168.1.0/24 / rw,alldirs,maproot=0第一部分:客户端的ip地址第二部分:被挂接的目录第三部分:客户端拥有的权限第二部分说明/ 标识MooseFS根第三部分详细说明ro 只读模式共享rw 读写的方式共享alldirs 允许挂载任何指定的子目录maproot映射为root,还是指定的用户(0表示ROOT)password 指定客户端密码启动master/opt/mfs/sbin/mfsmaster start停止master/opt/mfs/sbin/mfsmaster stop检查是否配置成功ps -ef |grep mfsNetstat -nlp查看日志more -s /var/log/messages/opt/mfs/sbin/mfscgiserv #这个提供web的方式来查看master的状态, 访问地址为http://ip(master):9425在每台服务器的hosts加入如下vi /etc/hosts10.10.10.251 mfsmaster2、chunk serverVi /opt/mfs/etc/mfshdd.cfg加入如下, 指定客服端产生的数据存储位置:/mnt/mfsdd启动/opt/mfs/sbin/mfschunkserver start停止/opt/mfs/sbin/mfschunkserver stop3、Clinet挂载假如我们要挂载到/mnt/mfs目录mkdir -p /mnt/mfs/usr/local/bin/mfsmount /mnt/mfs/ -H mfsmasterdf -h就可以查看到mfsmaster已经被挂载了, 还有mfs的使用情况4、关闭顺序关闭如下, 客户端首先卸载文件系统:umount /mnt/mfs/opt/mfs/sbin/mfschunkserver stop/opt/mfs/sbin/mfsmetalogger stop/opt/mfs/sbin/mfsmaster stop(注:可以挂在根/目录下的子目录,配置文件加上192.168.40.0/24 /test rw,alldirs,maproot=0,password=tes t,注意test目录是在根目录已经创建好的子目录,并且挂载时使用mfsmount /mnt/client -H mfsmaster -o mfssubfolder=/test -p,否则会出现mfsmaster register error: Permission denied的错误。
MooseFS分布式文件系统部署手册
MooseFS分布式文件系统部署手册目录1、架构规划 (2)2、主控服务器Master server 安装 (2)3、备份服务器Backup server (metalogger) 安装 (4)4、存储块服务器Chunk servers安装 (5)5、客户端Users’ computers 安装 (6)6、安装MooseFS 在同一个主机 (8)7、MooseFS 基础用法 (10)8、停止MooseFS (12)9、维护Moosfs (13)9.1、MooseFS chunkservers的维护 (13)9.2、MooseFS元数据的备份 (13)9.3、MooseFS master的恢复 (13)9.4、从备份恢复MooseFS master (13)9.5、起停顺序 (14)10、监控 (14)11、故障处理 (14)11.1、disk显示报错 (14)11.2、MFS master启动失败 (14)11.3、写入数据卡住 (15)12、文件删除回收处理 (15)12.1、回收站查看 (15)12.2、恢复文件 (15)正文:1、架构规划fuse 版本:/projects/fuse/wget/project/fuse/fuse-2.X/2.9.3/fuse-2.9.3.tar.gz?r=ht tp%3A%2F%%2Fprojects%2Ffuse%2F&ts=1410357693&use_mirro r=cznicwget /project/fuse/fuse-2.X/2.9.3/fuse-2.9.3.tar.gzMooseFS:/projects/moosefs/∙ 主控服务器Master server: 172.16.8.100∙ 主控备份服务器Metalogger server: 172.16.8.101∙ 存储块服务器Chunk servers: 172.16.8.203172.16.8.204∙ 客户端主机(clients): 172.16.8.2052、主控服务器Master server 安装yum install lrzsz gcc vim wget telnet tcpdump zlib* fuse-devel -yfuse:wget/project/fuse/fuse-2.X/2.9.3/fuse-2.9.3.tar.gz?r=ht tp%3A%2F%%2Fprojects%2Ffuse%2F&ts=1410357693&use_mirro r=cznicwget /project/fuse/fuse-2.X/2.9.3/fuse-2.9.3.tar.gz MooseFS:http://pro.hit.gemius.pl/hitredir/id=.WCbG2t.7Ln5k1s3Q9xPg8cPfX.wVMc5kyXfrKcJT DH.c7/url=/tl_files/mfscode/mfs-1.6.27-5.tar.gztar xzvf fuse-2.9.3.tar.gzcd fuse-2.9.3./configure&&make &&make installcd ..useradd mfstar -zxvf mfs-1.6.27-5.tar.gzcd mfs-1.6.27./configure --prefix=/usr --sysconfdir=/etc \--localstatedir=/var/lib --with-default-user=mfs \--with-default-group=mfs --disable-mfschunkserver--disable-mfsmountmake&&make install###自动生成样例配置文件,这些样例文件是以/etc/*.distcd /etc/mfscp mfsmaster.cfg.dist mfsmaster.cfgcp mfsmetalogger.cfg.dist mfsmetalogger.cfgcp mfsexports.cfg.dist mfsexports.cfgmkdir -p /usr/etc/mfs/ln -s /etc/mfs/mfsmaster.cfg /usr/etc/mfs/mfsmaster.cfgln -s /etc/mfs/mfsexports.cfg /usr/etc/mfs/mfsexpln -s /etc/mfs/mfstopology.cfg /usr/etc/mfs/mfstopology.cfgln -s /etc/mfs/mfshdd.cfg /usr/etc/mfs/mfshdd.cfg##Mfsmaster.cfg 配置文件包含主控服务器master 相关的设置,在这里我们暂时不打算对其进行修改。
Moosefs 分布式存储
===========Moosefs 分布式存储=========[root@server41 ~]# lftp i #远程访问服务器,获取mfs安装包lftp i:~> cd pub/docs/mfs/lftp i:/pub/docs/mfs> get mfs-1.6.27-1.tar.gz[root@server41 ~]# rpm -ivh mfs-1.6.27-1.tar.gzerror: mfs-1.6.27-1.tar.gz: not an rpm package (or package manifest):错误:显示是软件包的名称中有的-1不识别,需要修改软件包名称[root@server41 ~]# mv mfs-1.6.27-1.tar.gz mfs-1.6.27.tar.gz[root@server41 ~]# rpmbuild -tb mfs-1.6.27.tar.gzerror: Failed build dependencies:fuse-devel is needed by mfs-1.6.27-2.x86_64错误:需要安装fuse-devel依赖性[root@server41 ~]# yum install -y fuse-devel[root@server41 ~]# rpmbuild -tb mfs-1.6.27.tar.gz[root@server41 ~]# cd /root/rpmbuild/RPMS/x86_64/[root@server41 x86_64]# rpm -ivh mfs-master-1.6.27-2.x86_64.rpm[root@server41 x86_64]# rpm -ivh mfs-cgi-1.6.27-2.x86_64.rpm[root@server41 x86_64]# rpm -ivh mfs-cgiserv-1.6.27-2.x86_64.rpm[root@server41 x86_64]# cd /etc/mfs/[root@server41 mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg[root@server41 mfs]# cp mfsexports.cfg.dist mfsexports.cfg[root@server41 mfs]# cp mfstopology.cfg.dist mfstopology.cfg[root@server41 mfs]# cd /var/lib/mfs/[root@server41 mfs]# cp metadata.mfs.empty metadata.mfs[root@server41 mfs]# chown nobody /var/lib/mfs/ -R[root@server41 mfs]# mfsmaster[root@server41 mfs]# cd /var/lib/mfs/[root@server41 mfs]# lsmetadata.mfs.back metadata.mfs.empty sessions.mfs[root@server41 mfs]# mfsmaster stop[root@server41 mfs]# lsmetadata.mfs metadata.mfs.back.1 metadata.mfs.empty sessions.mfs stats.mfs [root@server41 mfs]# mfsmaster[root@server41 mfs]# lsmetadata.mfs.back metadata.mfs.empty stats.mfsmetadata.mfs.back.1 sessions.mfs[root@server41 mfs]# cd /usr/share/mfscgi/[root@server41 mfscgi]# chmod +x chart.cgi mfs.cgi[root@server41 mfscgi]# mfscgiserv测试:浏览器访问http://192.168.2.41:9425/mfs.cgi,界面显示如下:[root@server41 ~]# cd rpmbuild//RPMS/x86_64/[root@server41x86_64]#scp mfs-chunkserver-1.6.27-2.x86_64.rpm 192.168.2.42:[root@server42 mfs]# vim /etc/hosts192.168.2.42 mfsmaster[root@server42 mfs]# fdisk -l[root@server42 mfs]# fdisk -cu /dev/vdcCommand (m for help): nCommand actione extendedp primary partition (1-4)pPartition number (1-4): 1First sector (2048-16777215, default 2048):Using default value 2048Last sector, +sectors or +size{K,M,G} (2048-16777215, default 16777215): Using default value 16777215Command (m for help): tSelected partition 1Hex code (type L to list codes): 8eChanged system type of partition 1 to 8e (Linux LVM)Command (m for help): pDisk /dev/vdc: 8589 MB, 8589934592 bytes2 heads, 1 sectors/track, 8388608 cylinders, total 16777216 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0xb2f86748Device Boot Start End Blocks Id System/dev/vdc1 1025 8388608 8387584 8e Linux LVMCommand (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.[root@server42 mfs]# pvcreate /dev/vdc1[root@server42 mfs]# vgcreate mfsvg /dev/vdc1[root@server42 mfs]# lvcreate -L 4g -n demo mfsvg[root@server42 mfs]# mkfs.ext4 /dev/mfsvg/demo[root@server42 mfs]# mkdir /mnt/chunk1[root@server42 mfs]# mount /dev/mfsvg/demo /mnt/chunk1/[root@server42 mfs]# vim /etc/fstab/dev/mfsvg/demo /mnt/chunk1 ext4 defaults 0 0 [root@server42 mfs]# mount -a[root@server42 mfs]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup-lv_root 4.9G 1.1G 3.6G 23% /tmpfs 246M 0 246M 0% /dev/shm/dev/vda1 485M 33M 427M 8% /boot/dev/mapper/mfsvg-demo 4.0G 136M 3.7G 4% /mnt/chunk1[root@server42 mfs]# vim mfshdd.cfg/mnt/chunk1[root@server42 mfs]# chown -R nobody.nobody /mnt/chunk1/[root@server42 mfs]# mkdir /var/lib/mfs[root@server42 mfs]# chown -R nobody /var/lib/mfs/[root@server42 mfs]# mfschunkserver[root@server42 mfs]# cd /var/lib/mfs/[root@server42 mfs]# l.. .. .mfschunkserver.lock[root@server42 ~]# lvextend -l +1023 /dev/mfsvg/demo[root@server42 ~]# resize2fs /dev/mfsvg/demo[root@server42 ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup-lv_root 4.9G 1.1G 3.6G 23% /tmpfs 246M 0 246M 0% /dev/shm/dev/vda1 485M 33M 427M 8% /boot/dev/mapper/mfsvg-demo 7.9G 138M 7.4G 2% /mnt/chunk1[root@server42 ~]# scp mfs-chunkserver-1.6.27-2.x86_64.rpm 192.168.2.43: [root@server43 ~]# rpm -ivh mfs-chunkserver-1.6.27-2.x86_64.rpm[root@server43 mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg[root@server43 mfs]# cp mfshdd.cfg.dist mfshdd.cfg[root@server43 ~]# vim /etc/hosts192.168.2.41 mfsmastsr192.168.2.43 [root@server43 ~]# fdisk -l[root@server43 ~]# fdisk -cu /dev/vdbCommand (m for help): pDisk /dev/vdb: 8589 MB, 8589934592 bytes2 heads, 1 sectors/track, 8388608 cylinders, total 16777216 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x28340149Device Boot Start End Blocks Id System/dev/vdb1 2048 16777215 8387584 8e Linux LVMCommand (m for help): dSelected partition 1Command (m for help): pDisk /dev/vdb: 8589 MB, 8589934592 bytes2 heads, 1 sectors/track, 8388608 cylinders, total 16777216 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x28340149Device Boot Start End Blocks Id SystemCommand (m for help): nCommand actione extendedp primary partition (1-4)pPartition number (1-4): 1First sector (2048-16777215, default 2048):Using default value 2048Last sector, +sectors or +size{K,M,G} (2048-16777215, default 16777215): Using default value 16777215Command (m for help): tSelected partition 1Hex code (type L to list codes): 8eChanged system type of partition 1 to 8e (Linux LVM)Command (m for help): pDisk /dev/vdb: 8589 MB, 8589934592 bytes2 heads, 1 sectors/track, 8388608 cylinders, total 16777216 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x28340149Device Boot Start End Blocks Id System/dev/vdb1 2048 16777215 8387584 8e Linux LVMCommand (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.[root@server43 ~]# pvcreate /dev/vdb1[root@server43 ~]# vgcreate mfsvg /dev/vdb1[root@server43 ~]# lvcreate -l 2047 -n demo mfsvg[root@server43 ~]# mkfs.ext4 /dev/mfsvg/demo[root@server43 ~]# mkdir /mnt/chunk1[root@server43 mfs]# vim mfshdd.cfg/mnt/chunk1[root@server43 mfs]# chown -R nobody.nobody /mnt/chunk1/[root@server43 mfs]# mkdir /var/lib/mfs[root@server43 mfs]# chown -R nobody /var/lib/mfs/[root@server43 mfs]# mfschunkserver[root@server43 mfs]# cd /var/lib/mfs/[root@server43 mfs]# l.. .. .mfschunkserver.lock[root@server41 x86_64]# scp mfs-client-1.6.27-2.x86_64.rpm 192.168.2.44[root@server44 ~]# rpm -ivh mfs-client-1.6.27-2.x86_64.rpmerror: Failed dependencies:libfuse.so.2()(64bit) is needed by mfs-client-1.6.27-2.x86_64libfuse.so.2(FUSE_2.4)(64bit) is needed by mfs-client-1.6.27-2.x86_64libfuse.so.2(FUSE_2.5)(64bit) is needed by mfs-client-1.6.27-2.x86_64libfuse.so.2(FUSE_2.6)(64bit) is needed by mfs-client-1.6.27-2.x86_64libfuse.so.2(FUSE_2.7)(64bit) is needed by mfs-client-1.6.27-2.x86_64libfuse.so.2(FUSE_2.8)(64bit) is needed by mfs-client-1.6.27-2.x86_64[root@server44 mfs]# yum localinstall -y mfs-client-1.6.27-2.x86_64.rpm[root@server44 ~]# cd /etc/mfs/[root@server44 mfs]# cp mfsmount.cfg.dist mfsmount.cfg[root@server44 mfs]# vim /etc/hosts192.168.2.41 mfsmaster192.168.2.44 [root@server44 mfs]# vim mfsmount.cfg/mnt/mfs[root@server44 mfs]# mkdir /mnt/mfs[root@server44 mfs]# mfsmountmfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root[root@server44 mfs]# cp /etc/fstab .[root@server44 mfs]# mfsfileinfo fstabfstab:chunk 0: 0000000000000001_00000001 / (id:1 ver:1)copy 1: 192.168.2.43:9422[root@server44 mfs]# mkdir dir1 dir2[root@server44 mfs]# mkdir dir1 dir2[root@server44 mfs]# mv fstab dir1/[root@server44 mfs]# mfssetgoal -r 2 dir2/dir2/:inodes with goal changed: 1inodes with goal not changed: 0inodes with permission denied: 0[root@server43 mfs]# mfschunkserver stop[root@server44 dir2]# mfsfileinfo fstabfstab:chunk 0: 0000000000000002_00000001 / (id:2 ver:1)copy 1: 192.168.2.42:9422[root@server42 chunk1]# mfschunkserver stop[root@server44 dir2]# mfsfileinfo fstabfstab:chunk 0: 0000000000000002_00000001 / (id:2 ver:1)no valid copies !!![root@server42 chunk1]# mfschunkserver[root@server44 dir2]# mfsfileinfo fstabfstab:chunk 0: 0000000000000002_00000001 / (id:2 ver:1)copy 1: 192.168.2.42:9422[root@server44 dir2]# vim fstab修改fstab文件中的内容sysfs /sys sysfs defaults 0 0proc /proc proc defaults 0 0proc /proc proc defaults 0 0proc /proc proc defaults 0 0[root@server43 mfs]# mfschunkserver修改文件后,打开server43主机的mfschunkserver服务,文件不能达到同步,所以不会显示server43主机[root@server44 dir2]# mfsfileinfo fstabfstab:chunk 0: 0000000000000004_00000001 / (id:4 ver:1)copy 1: 192.168.2.42:9422[root@server44 dir2]# dd if=/dev/zero of=bigfile bs=1M count=200建立一个200M的bigfile文件[root@server44 dir2]# mfsfileinfo bigfilebigfile:chunk 0: 0000000000000007_00000001 / (id:7 ver:1)copy 1: 192.168.2.42:9422copy 2: 192.168.2.43:9422chunk 1: 0000000000000008_00000001 / (id:8 ver:1)copy 1: 192.168.2.42:9422copy 2: 192.168.2.43:9422chunk 2: 0000000000000009_00000001 / (id:9 ver:1)copy 1: 192.168.2.42:9422copy 2: 192.168.2.43:9422chunk 3: 000000000000000A_00000001 / (id:10 ver:1)copy 1: 192.168.2.42:9422copy 2: 192.168.2.43:9422两个server同时写入,为了增加读写性能;显示bigfile文件,说明200M的文件被分为4个块,每个块为50M。
分布式文件系统MFS(moosefs)实现存储共享
分布式文件系统MFS(moosefs)实现存储共享分布式文件系统MFS(MooseFS)实现存储共享分布式文件系统(Distributed File System,简称DFS)是一种将数据分散存储在多个计算机节点上的文件系统。
每个节点都可以独立地执行读写操作,从而提高了文件系统的性能和可扩展性。
MFS (MooseFS)是一款流行的DFS系统,具有高性能、高可靠性和易于部署的特点。
本文将重点介绍MFS实现存储共享的原理和方法。
一、MFS简介MFS是一种开源、跨平台的DFS系统,支持Linux、Windows和Mac等操作系统。
它由Master节点和多个Chunk节点组成。
Master节点负责管理文件系统的元数据,而Chunk节点负责存储实际的文件数据。
MFS利用网络将文件数据分散存储在不同的Chunk节点上,从而实现了存储共享的功能。
二、MFS存储共享原理MFS采用了分片(Sharding)和复制(Replication)的策略来实现存储共享。
分片是指将一个文件划分为多个固定大小的块(Chunk),并将这些块存储在不同的Chunk节点上。
每个Chunk节点只负责存储自己所拥有的块,而不负责整个文件的存储。
这种方式可以提高数据的读写速度,同时也提高了系统的容错性和可用性。
复制是指将每个块复制到多个Chunk节点上,以实现数据的冗余存储。
当某个Chunk节点发生故障时,其他拥有相同块的节点可以继续提供服务,从而保证数据的可靠性和可用性。
MFS可以根据用户的需求设置块的复制数,以权衡系统的性能和容错性。
三、MFS存储共享方法在使用MFS实现存储共享时,需要按照以下步骤进行配置和操作:1. 安装和配置MooseFS首先,需要在每个节点上安装MooseFS软件,并进行必要的配置。
在Master节点上,需要指定Chunk节点的IP地址和端口号,以及元数据的存储路径。
在Chunk节点上,需要指定Master节点的IP地址和端口号。
MFS+SeaFile数据安全储存--云共享解决概案
MFS+SeaFile数据安全储存--云共享解决概案By:mick一.目前数据储存、共享情况目前我们数据储存方面主要依靠大硬盘服务器储存,对服务器进行账号管理、安全配置的方式来实现,而共享主要依靠开通samba、或者windows共享访问来实现。
这样至少有这些弊端:1.需要大容量硬盘,考虑到安全因素,还不能只有一份储存,消耗资源。
2.部署不便,需要专业的IT人员每一次、到每一个部门、每一个需要开设共享的同事那边去配置他们相互之间的文件共享,加大工作量。
3.对于没有IT知识的同事来说,目前的共享机制使用起来是很不方便的,很多人都不知道如何去访问开启的共享,他们会疑惑,提示输入账户密码,这是什么东西的密码?4.不易控制权限,缺省情况下,目前的共享机制无法实现单独文件的密码控制。
5.安全性有待提升,目前的储存机制,管理员可以在服务器上直接查看所有数据,而盗号者在得到用户账号后,访问共享也可以看到所有数据,造成重要信息泄漏。
6.数据恢复困难,目前的储存机制如果发生数据丢失\误删除,就需要专业的数据恢复作业,不能更大程度保证数据安全。
7.无法解决对外信息分享,需要邮件附件、QQ等来进行传输,大文件分享需挂机传输。
二.MFS文件系统介绍MooseFS是一个高容错性的分布式文件系统,它能够将资源分布存储于多台不同的物理介质,对外只提供给用户一个访问接口,具有以下特点:1.通用文件系统,不需要修改上层应用即可使用,对它的操作与其他文件系统完成一样。
2.可以在线扩容,体系架构可伸缩性较强。
3.数据高可用,可设置任意的文件冗余程度而不影响读写速度。
4.提供“回收站”功能,可恢复在指定时间内被删除的文件,减少误操作的影响。
5.提供snapshot功能,可以对整个文件甚至正在写入的文件创建文件快照。
6.提供web gui监控接口,方便查看服务器性能。
7.免费并易于部署。
三.Seafile云共享系统介绍1.完善的隐私保护,用你的密码来加密文件,实现共享。
Centos下MooseFS(MFS)分布式存储共享环境部署记录
Centos下MooseFS(MFS)分布式存储共享环境部署记录分布式⽂件系统(Distributed File System)是指⽂件系统管理的物理存储资源不⼀定直接连接在本地节点上,⽽是通过计算机⽹络与节点相连,分布式⽂件系统的实际基于客户机/服务器模式。
⽬前常见的分布式⽂件系统有很多种,⽐如Hadoop、Moosefs、HDFS、FastDFS、PNFS(Parallel NFS)、Lustre、TFS、GFS等等⼀系列。
在众多的分布式⽂件系统解决⽅案中,MFS是搭建⽐较简单、使⽤起来也不需要过多的修改web程序,⾮常⽅便。
⼀、MooseFS是什么MooseFS(即Moose File System,简称MFS)是⼀个具有容错性的⽹络分布式⽂件系统,它将数据分散存放在多个物理服务器或单独磁盘或分区上,确保⼀份数据有多个备份副本,对于访问MFS的客户端或者⽤户来说,整个分布式⽹络⽂件系统集群看起来就像⼀个资源⼀样,也就是说呈现给⽤户的是⼀个统⼀的资源。
MooseFS就相当于UNIX的⽂件系统(类似ext3、ext4、nfs),它是⼀个分层的⽬录树结构。
MFS存储⽀持POSIX标准的⽂件属性(权限,最后访问和修改时间),⽀持特殊的⽂件,如块设备,字符设备,管道、套接字、链接⽂件(符合链接、硬链接);MFS⽀持FUSE(⽤户空间⽂件系统Filesystem in Userspace,简称FUSE),客户端挂载后可以作为⼀个普通的Unix⽂件系统使⽤MooseFS。
MFS可⽀持⽂件⾃动备份的功能,提⾼可⽤性和⾼扩展性。
MogileFS不⽀持对⼀个⽂件内部的随机或顺序读写,因此只适合做⼀部分应⽤,如图⽚服务,静态HTML服务、⽂件服务器等,这些应⽤在⽂件写⼊后基本上不需要对⽂件进⾏修改,但是可以⽣成⼀个新的⽂件覆盖原有⽂件。
⼆、MooseFS的特性1)⾼可靠性,每⼀份数据可以设置多个备份(多分数据),并可以存储在不同的主机上2)⾼可扩展性,可以很轻松的通过增加主机的磁盘容量或增加主机数量来动态扩展整个⽂件系统的存储量3)⾼可容错性,可以通过对mfs进⾏系统设置,实现当数据⽂件被删除后的⼀段时间内,依旧存放于主机的回收站中,以备误删除恢复数据4)⾼数据⼀致性,即使⽂件被写⼊、访问时,依然可以轻松完成对⽂件的⼀致性快照5)通⽤⽂件系统,不需要修改上层应⽤就可以使⽤(那些需要专门api的dfs很⿇烦!)。
第八章 分布式文件系统MooseFS
master <-> metaloggers module: listen on *:9419
master <-> chunkservers module: listen on *:9420
main master server module: listen on *:9421
# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfsmetalogger.lock
启动元数据日志服务器
[root@mytest2 etc]# /usr/local/mfs/sbin/mfsmetalogger start
#元数据日志服务器运行时在系统日志输出的标识。
# SYSLOG_IDENT = mfsmetalogger
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
#从元数据服务器(master)抓回文件,然后进行存放的路径。
# DATA_PATH = /usr/local/mfs/var/mfs
#存放备份日志的总个数为50并轮转。
# BACK_LOGS = 50
#元数据备份文件下载请求频率。默认为24小时。即每隔1天从源数据服务器下载一个metadata.mfs.back文件。当元数据服务器关闭或者出现故障的时候,此文件消失。如果要恢复
整个MFS,则需从元数据日志服务器取得该文件。请特别注意这个文件,它与日志文件一起,才能够恢复整个被破坏的分布式文件系统。
mfsmaster daemon initialized properly
Jhr分布式文件系统MooseFS
分布式文件系统MFS(moosefs)实现存储共享作者:田逸()由于用户数量的不断攀升,我对访问量大的应用实现了可扩展、高可靠的集群部署(即lvs+keepalived的方式),但仍然有用户反馈访问慢的问题。
通过排查个服务器的情况,发现问题的根源在于共享存储服务器NFS。
在我这个网络环境里,N个服务器通过nfs方式共享一个服务器的存储空间,使得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文档,让人头昏吧。
使用分布式文件系统在多台服务器上共享文件(一)
使用分布式文件系统在多台服务器上共享文件随着云计算和大数据时代的到来,分布式系统成为了计算机领域的热门话题。
分布式文件系统作为分布式系统的一个重要组成部分,被广泛应用于大规模数据存储和管理场景。
本文将探讨使用分布式文件系统在多台服务器上共享文件的方法和优势。
一、分布式文件系统概述分布式文件系统是一种能够将文件数据分散存储在多个服务器上的文件系统。
与传统的集中式文件系统相比,分布式文件系统能够提供更高的可扩展性、可靠性和性能。
在分布式文件系统中,使用分布式文件系统软件将文件数据切割成多个数据块,并在多台服务器上进行分散存储。
这些服务器之间通过网络连接进行通信和数据同步,从而实现文件的共享和访问。
二、分布式文件系统的组成一个典型的分布式文件系统由以下几个组成部分组成:1. 元数据服务器(Metadata Server):负责存储和管理文件的元数据信息,包括文件名、大小、权限等。
元数据服务器通常是单点故障,需要通过冗余备份来提高可靠性。
2. 数据服务器(Data Server):负责存储实际的文件数据块。
数据服务器可以有多台,可以通过数据冗余备份和负载均衡来提高可靠性和性能。
3. 客户端(Client):用户通过客户端来访问和操作分布式文件系统中的文件。
客户端与元数据服务器进行通信,获取文件的元数据信息,并从数据服务器上读取或写入文件数据。
三、分布式文件系统的工作原理当用户需要访问或操作分布式文件系统中的文件时,客户端首先与元数据服务器进行通信,获取文件的元数据信息。
元数据服务器告诉客户端文件的存储位置和数据块的分布情况。
客户端根据元数据信息,与相应的数据服务器进行通信,读取或写入文件数据。
数据服务器之间通过同步机制保持数据的一致性和完整性。
四、分布式文件系统的优势使用分布式文件系统在多台服务器上共享文件具有以下几个优势:1. 可扩展性:通过增加数据服务器,可以轻松扩展文件系统的存储容量和性能。
不需要单台服务器承载所有文件数据,分布式文件系统可以根据需求灵活调整存储资源。
使用分布式文件系统在多台服务器上共享文件(二)
使用分布式文件系统在多台服务器上共享文件某天,小明需要将一个大文件从电脑A传输到电脑B上,但他突然意识到电脑A的存储空间已经不足以容纳这个文件。
他苦恼地想着如何将这个文件传输到电脑B,这时他听说了分布式文件系统的存在,于是他决定探索一下。
在这篇文章中,我们将探讨使用分布式文件系统在多台服务器上共享文件的实践方式。
第一部分:理解分布式文件系统的概念分布式文件系统是一种能够将多个独立的服务器组合成一个整体的文件系统,实现数据的高可用性、扩展性和负载均衡。
它允许多台服务器通过网络进行文件的读写操作,实现文件的共享与协同编辑。
与传统的单个文件服务器相比,分布式文件系统具有更高的性能、容错性和可扩展性。
第二部分:选择适合的分布式文件系统选择适合的分布式文件系统是确保共享文件的高效运行的关键。
目前市场上有许多成熟的分布式文件系统可供选择,如Hadoop HDFS、GlusterFS和Ceph等。
这些系统都有自己的特点和适用场景。
例如,Hadoop HDFS适用于大数据场景,GlusterFS适用于多个节点容量扩展的情况,Ceph则可以兼容多种硬件设备并提供高可用性的存储。
因此,在选择分布式文件系统时,我们应根据实际需求进行综合考虑,并选择适合自己的系统。
第三部分:安装和配置分布式文件系统安装和配置分布式文件系统是使用它的前提。
我们以GlusterFS作为例子进行讲解。
首先,需要在每个服务器上安装GlusterFS软件包。
然后,根据需要,我们可以创建一个卷来共享文件。
在此过程中,我们需要确定卷的复本数、卷的类型以及存储数据的服务器。
一旦配置完成,我们便可以通过挂载卷的方式将文件系统添加到每台服务器上,从而实现文件的共享。
第四部分:实施分布式文件系统当分布式文件系统安装完成后,我们可以开始实施文件的共享。
首先,我们需要上传文件到其中一台服务器上的卷中。
一旦文件上传完成,它便会自动同步到其他服务器上的卷上。
这样,不管我们从哪台服务器上访问文件,都可以看到相同的内容,实现了文件的共享与同步。
使用分布式文件系统在多台服务器上共享文件
分布式文件系统在多台服务器上共享文件随着数据量的迅速增长,如何高效地管理和共享大量文件成为了许多企业和组织面临的重要挑战。
传统的文件管理方法,如集中式文件服务器,已经不能满足现代数据管理的需求。
为了解决这一问题,分布式文件系统应运而生。
本文将探讨使用分布式文件系统在多台服务器上共享文件的方式及其优势。
一、分布式文件系统的概述分布式文件系统是一种通过网络连接多台计算机来共享文件的系统。
它将文件有效地分布存储在多个服务器上,使得用户可以通过任意一台服务器来访问和操作文件。
分布式文件系统不仅能够提供高可靠性和容错性,而且能够实现文件的高并发访问和负载均衡。
常见的分布式文件系统有Google的GFS、Hadoop的HDFS等。
二、分布式文件系统的实现方式1. 数据分块:将文件分割成固定大小的数据块,每个数据块都带有唯一的标识符。
这样,文件的每个数据块都可以存储在不同的服务器上,提高了文件的可靠性和容错性。
2. 元数据管理:分布式文件系统通过一个专门的元数据服务器来管理文件的元数据。
元数据包括文件的名称、大小、权限、所在服务器等信息。
元数据服务器负责为用户提供快速的元数据查询和访问服务。
3. 数据一致性:由于文件的数据块存储在不同的服务器上,为了保证数据的一致性,分布式文件系统需要实现数据的复制和同步机制。
常见的方式是采用主从复制或多主复制。
4. 文件访问:用户可以通过向任意一台服务器发送文件访问请求来获取文件。
分布式文件系统通过服务器之间的协作来提供快速响应和高并发访问。
三、分布式文件系统的优势1. 高可靠性和容错性:由于文件块的复制和分布存储在多台服务器上,即使其中某台服务器发生故障,也不会导致文件的丢失,文件可以从其他服务器恢复。
2. 高并发访问:多台服务器能够同时处理来自用户的文件访问请求,大大提高了系统的并发处理能力。
3. 负载均衡:分布式文件系统通过将文件的数据块均匀地分布在不同的服务器上,实现了负载均衡。
高性能分布式文件系统的文件同步与共享(八)
高性能分布式文件系统的文件同步与共享随着信息技术的快速发展和数据量的不断增长,人们对于数据存储和管理的要求越来越高。
传统的单机文件系统已经无法满足大规模数据处理的需求,因此分布式文件系统应运而生。
高性能分布式文件系统解决了大规模文件存储和共享的问题,能够提供高可靠性、可扩展性和高吞吐量。
一、多副本同步保证数据一致性高性能分布式文件系统采用了多副本机制,做到了数据的自动同步和备份。
当一个文件被上传到分布式文件系统中时,系统会自动将数据分为多个块,并复制到不同的存储节点上。
这样一来,即使某个节点发生故障,数据仍然可以从其他节点上恢复,保证了数据的可用性和持久性。
多副本的同步机制也能够保证数据的一致性。
一旦有新的副本被添加进来,系统会自动将新副本和其他副本进行同步,确保所有节点上的数据完全一致。
这种同步方式可以防止文件的读写冲突和数据丢失,保证了多用户同时访问文件时的一致性。
二、强大的并发操作支持多用户共享高性能分布式文件系统支持多用户同时对文件进行读写操作,实现了文件的共享。
多个用户可以通过网络连接到分布式文件系统,并在不同节点上同时访问和操作同一文件。
系统会负责处理并发冲突,确保每个用户的修改都能被正确地保存和同步。
为了减少并发操作的冲突,高性能分布式文件系统采用了锁机制。
当一个用户开始对文件进行写操作时,系统会为该文件加上写锁,其他用户只能进行读操作。
当写操作完成后,写锁被释放,其他用户才能进行写操作。
这样一来,文件的并发操作冲突得到了最大程度的减少,大大提高了系统的性能和效率。
三、分布式存储的优势高性能分布式文件系统基于分布式存储架构,可以将文件数据分散存储在多个节点上。
这样一来,系统可以实现灵活的存储管理和资源共享。
使用分布式存储可以提高系统的可扩展性和容错能力,同时也能够充分利用各个节点的存储空间,提高整个系统的存储效率。
分布式存储还可以提供更好的数据安全性。
每个节点上的数据都被复制多份,即使某个节点发生故障,数据仍然可以从其他节点上恢复。
高性能分布式文件系统的文件同步与共享(四)
高性能分布式文件系统的文件同步与共享随着信息技术的不断发展,各行各业对于数据存储和处理的需求也日益增长。
而文件同步与共享作为信息共享的一种重要形式,对于高性能分布式文件系统来说,有着很大的挑战和机遇。
高性能分布式文件系统的文件同步是指将不同节点上的文件进行更新和同步,使得用户在任何一个节点上对文件的修改都能在其他节点上得以同步。
这样一来,无论用户身处何地,都能够实时获取最新的文件内容,并与他人进行共享与协作,大大提高工作效率。
然而,要实现高性能的分布式文件系统的文件同步并非易事。
首先,要解决的问题是节点间的数据一致性。
由于分布式系统的特点,各节点之间的网络连接可能会出现不稳定或者中断的情况,因此文件同步需要能够应对这些异常情况,并确保数据的一致性。
为此,可以采用数据冗余备份的方式,在不同的节点之间保存多个副本,以防止数据丢失。
其次,文件同步还需要解决性能瓶颈的问题。
在大规模分布式系统中,文件数量庞大,大小各异,传输时间会成为一个极大的挑战。
为了解决这个问题,可以采用增量同步的方式,只传输文件的差异部分,而不是每次都传输整个文件。
此外,还可以采用多线程同步的方式,同时进行多个文件的传输,以提高效率。
另外,高性能分布式文件系统的文件共享也是一个重要的问题。
文件共享可以使得多个用户之间可以方便地进行文件共享和协作。
然而,为了保护数据的安全性,需要对文件的访问权限进行管理。
可以采用访问控制列表(ACL)的方式,对不同用户设置不同的访问权限。
同时,还可以使用加密技术对敏感文件进行加密,以保证文件内容的安全性。
此外,高性能分布式文件系统的文件同步与共享还需要考虑到系统的可扩展性和容错性。
系统的可扩展性指的是系统能够根据用户的需求进行扩展,随着节点数目的增加,系统的性能和吞吐量也能够相应提高。
而容错性则是指系统在出现节点故障或者网络异常的情况下,能够继续保持正常的工作。
为了实现这些目标,可以使用分布式哈希表(DHT)来管理文件的索引信息,以及采用冗余备份和数据校验的方式来确保数据的完整性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由于用户数量的不断攀升,我对访问量大的应用实现了可扩展、高可靠的集群部署(即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 /files/mfs-1.5.12.tar.gz2、解包 tar zxvf mfs-1.5.12.tar.gz3、切换目录 cd mfs-1.5.124、创建用户 useradd mfs –s /sbin/nologin5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs--with-default-group=mfs6、编译安装 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搞到一个机器(理论上没问题,实现也是可以的,但这不是一个好策略)。
因为每个数据存储服务器的安装和配置都是相同的,所以只需按照一个服务器的操作就可以了。
(一)、安装数据存储服务器 chunkserver1、下载GNU源码 wget /files/mfs-1.5.12.tar.gz2、解包 tar zxvf mfs-1.5.12.tar.gz3、切换目录 cd mfs-1.5.124、创建用户 useradd mfs –s /sbin/nologin5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs6、编译安装 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.gz2、切换目录 cd fuse-2.7.4.3、配置 ./configure4、编译安装 make;make install如果系统已经安装了fuse,则跳过这个步骤。