本文共 11521 字,大约阅读时间需要 38 分钟。
一、MFS具有容错功能,高可用,可扩展的功能。MFS把数据分散在多台服务器上,但用户看到的只是一个源。
1、分布式原理
分布式文件系统就是把一些分散在多台计算机上的共享文件夹,集合到一个共享文件夹内,用户要访问这些文件夹的时候,只要打开一个文件夹,就可以的看到所有链接到此文件夹内的共享文件夹。
2、MFS原理
MFS是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。
3、MFS的组成
4、mfs的读写处理过程
二、环境
主机 | os | IP地址 | 主要软件 |
master | centos6.5 | 192.168.1.10 | mfs-1.6.27-5.tar.gz
|
Metalogger | centos6.5 | 192.168.1.11 | mfs-1.6.27-5.tar.gz
|
chunks server | centos6.5 | 192.168.1.12 | mfs-1.6.27-5.tar.gz |
chunk2 server | centos6.5 | 192.168.1.13 | mfs-1.6.27-5.tar.gz |
client | centos6.5 | 192.168.1.14 | fuse-2.9.2.tar.gz |
三、搭建master server
yum -y install zlib-develuseradd mfs -s /sbin/nologintar zxf mfs-1.6.27-5.tar.gzcd mfs-1.6.27./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount && make && make install注:prefix=/usr/local/mfs //指定安装目录--with-default-user=mfs //指定程序运行用户--with-default-group=mfs //指定程序运行组--disable-mfschunkserver //禁用Chunk功能--disable-mfsmount //禁用mfsmount功能ls -lh /usr/local/ #安装完成生成的目录drwxr-xr-x 2 root root 4096 Dec 3 11:24 bin #客户端工具drwxr-xr-x 3 root root 4096 Dec 3 11:24 etc #服务器的配置文件都放在该目录中 drwxr-xr-x 2 root root 4096 Dec 3 11:24 sbin #服务端启动程序。如:元数据服务器端程序 mfsmaster、数据存储服务器端服务程序mfschunkserver drwxr-xr-x 4 root root 4096 Dec 3 11:24 share #文档 drwxr-xr-x 3 root root 4096 Dec 3 11:24 var #元数据目录(可在配置文件中自定义到其他目录)cd /usr/local/mfs/etc/mfs/ #复制mfs生成的配置文件cp mfsexports.cfg.dist mfsexports.cfg #配挂载目录及访问权限cp mfsmaster.cfg.dist mfsmaster.cfg #主配置文件cp mfstopology.cfg.dist mfstopology.cfg #元数据logcd /usr/local/mfs/var/mfs/cp metadata.mfs.empty metadata.mfs #首次安装 master 时,会自动生成一个名为 metadata.mfs.empty 的元数据文件 metadata,该文件是空的。MooseFS master 运必须有文件 metadata.mfs/usr/local/mfs/sbin/mfsmaster -s #-s 表示停止服务/usr/local/mfs/sbin/mfsmaster start 3启动服务netstat -anpt | grep mfstcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 49618/mfsmaster tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 49618/mfsmaster tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 49618/mfsmaster 注:master 会打开 9420 端口等待 mfschunkserver 数据存储服务器连接echo "/usr/local/mfs/sbin/mfsmaster start" >> /etc/rc.local chmod +x /etc/rc.localll /usr/local/mfs/var/mfs/ //查看生成的日志文件-rw-r----- 1 mfs mfs 95 Dec 24 14:30 metadata.mfs-rw-r----- 1 mfs mfs 95 Dec 24 14:28 metadata.mfs.back.1-rw-r--r-- 1 mfs mfs 8 Dec 24 14:13 metadata.mfs.empty-rw-r----- 1 mfs mfs 10 Dec 24 14:28 sessions.mfs-rw-r----- 1 mfs mfs 762516 Dec 24 14:30 stats.mfsiptables -I INPUT -p tcp --dport 9419 -j ACCEPTiptables -I INPUT -p tcp --dport 9420 -j ACCEPTiptables -I INPUT -p tcp --dport 9421 -j ACCEPTservice iptables save
mfsmaster.cfg常用的参数如下,默认全部都是不需要修改的,全文都是以#开头,也就是说都是默认配置vim mfsmaster.cfgWORKING_USER = mfs //运行masterserver的用户# WORKING_GROUP = mfs //运行masterserver的组# SYSLOG_IDENT = mfsmaster //masterserver在syslog的标示,说明是由masterserver产生的# LOCK_MEMORY = 0 //是否执行mlokall(),以避免mfsmaster进程溢出默认为0# NICE_LEVEL = -19 //运行的优先级,进程必须由root启动# EXPORTS_FILENAME = /usr/local/mfs/etc/mfs/mfsexports.cfg//被挂载目录及其权限控制文件的存放位置# TOPOLOGY_FILENAME = /usr/local/mfs/etc/mfs/mfstopology.cfg# DATA_PATH = /usr/local/mfs/var/mfs //数据存放路径# BACK_LOGS = 50 //metadata改变的log文件数目(默认是50)# BACK_META_KEEP_PREVIOUS = 1 # REPLICATIONS_DELAY_INIT = 300 //延迟复制的时间(默认300)# REPLICATIONS_DELAY_DISCONNECT = 3600 //Chunkserver断开复制延迟(默认是3600秒)# MATOML_LISTEN_HOST = * //metalogger监听的IP地址默认是所有地址# MATOML_LISTEN_PORT = 9419 //metalogger监听的端口地址(默认为9419)# MATOML_LOG_PRESERVE_SECONDS = 600 # MATOCL_LISTEN_HOST = * //用于chunkserver连接的IP地址(默认为*代表所有IP)# MATOCL_LISTEN_PORT = 9421 //用户客户端挂在的监听端口9421# CHUNKS_LOOP_MAX_CPS = 100000# CHUNKS_LOOP_MIN_TIME = 300 //chunks的回环频率(默认300)# CHUNKS_SOFT_DEL_LIMIT = 10 # CHUNKS_HARD_DEL_LIMIT = 25# CHUNKS_WRITE_REP_LIMIT = 2 //在一个循环里复制到另外一个Chunkserver的最大Chunk数# CHUNKS_READ_REP_LIMIT = 10 //在一个循环里从一个Chunkserver复制的的最大Chunk数# ACCEPTABLE_DIFFERENCE = 0.1 # SESSION_SUSTAIN_TIME = 86400# REJECT_OLD_CLIENTS = 0 //弹出低于1.6.0的客户端挂接(0或1,默认是0)# deprecated:# CHUNKS_DEL_LIMIT - use CHUNKS_SOFT_DEL_LIMIT instead# LOCK_FILE - lock system has been changed, and this option is used only to search for old lockfilevim mfsexport.cfg //文件参数格式如下# Allow everything but "meta".* / rw,alldirs,maproot=0# Allow "meta".* . rw 该文件,每一个条目分为三个部分 第一部分:客户端IP地址 第二部分:被挂载的目录 第三部分:客户端拥有的权限地址可以指定几种表现形式 *代表所有的IP地址 n.n.n.n单个ip地址 n.n.n.n/b IP网络地址/位数掩码 n.n.n.n/m.m.m.m IP网络地址/子网掩码 f.f.f.f-t.t.t.t IP段目录部分的标示如下 /标示MFS根 .表示MFSMETA文件系统权限部分如下所示 ro——只读模式共享 rw——读写模式共享 alldirs——允许挂载任何指定的子目录 maproot——映射为root,还是普通用户 password——指定客户端的密码 以上就是对mfsmaster.cfg和mfsexport文件的解释,默认就是最好的,不需要做任任何修改。
搭建Metalogger
yum -y install zlib-develuseradd mfs -s /sbin/nologintar zxf mfs-1.6.27-5.tar.gzcd mfs-1.6.27./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount && make && make installcd /usr/local/mfs/etc/mfs/cp mfsmetalogger.cfg.dist mfsmetalogger.cfgvim mfsmetalogger.cfg #修改 MASTER_HOST = 192.168.1.1#MASTER_HOST,这个文件中需要修改的是 MASTER_HOST 变量,这个变量的值是 MASTER SERVER 的 IP 地址 chown -R mfs:mfs /usr/local/mfs/echo "/usr/local/mfs/sbin/mfsmetalogger start" >> /etc/rc.local/usr/local/mfs/sbin/mfsmetalogger start #启动元数据日志服务器 netstat -antp | grep 9419lsof -i :9419COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEmfsmaster 49647 mfs 8u IPv4 58608 0t0 TCP *:9419 (LISTEN)mfsmaster 49647 mfs 11u IPv4 63142 0t0 TCP xuegod63.cn:9419->xuegod63.cn:47563 (ESTABLISHED)mfsmetalo 54672 mfs 8u IPv4 63141 0t0 TCP xuegod63.cn:47563->xuegod63.cn:9419 (ESTABLISHED)iptables -I INPUT -p tcp --dport 9419 -j ACCEPT #配置防护墙策略service iptables save
搭建chunk server(注chunk配置都一样)
#在chunkserver1yum -y install zlib-develuseradd mfs -s /sbin/nologincd mfs-1.6.27./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmount --disable-mfsmaster && make && make installcd /usr/local/mfs/etc/mfs/cp mfschunkserver.cfg.dist mfschunkserver.cfg #主配置文件cp mfshdd.cfg.dist mfshdd.cfg #使用的磁盘空间配置文件vim mfschunkserver.cfg MASTER_HOST = 192.168.1.1 #元数据服务器的名称或地址,可以是主机名,也可以是 ip 地址 MASTER_PORT = 9420 #可以启用它,也可以不启用,不启用,默认就是9420vim mfshdd.cfg /data #在这里/data 是一个给 mfs 的分区,但在生产环境是一个独立的磁盘的挂载目录 mkdir /datachown -R mfs:mfs /dataps -ef | grep mfs/usr/local/mfs/sbin/mfschunkserver startecho "/usr/local/mfs/sbin/mfschunkserver start" >> /etc/rc.local chmod +x /etc/rc.localiptables -I INPUT -p tcp --dport 9422 -j ACCEPTservice iptables save在chunk2yum -y install zlib-develuseradd mfs -s /sbin/nologincd mfs-1.6.27./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmount --disable-mfsmaster && make && make installcd /usr/local/mfs/etc/mfs/ cp mfschunkserver.cfg.dist mfschunkserver.cfg cp mfshdd.cfg.dist mfshdd.cfgvim mfschunkserver.cfg MASTER_HOST = 192.168.1.1vim mfshdd.cfg /datamkdir /datachown -R mfs:mfs /data/usr/local/mfs/sbin/mfschunkserver startps -ef | grep mfsiptables -I INPUT -p tcp --dport 9422 -j ACCEPTservice iptables save查看/data下的数据 #分块存储,人工无法认识滴
搭建client
yum -y install zlib-develuseradd mfs -s /sbin/nologintar zxf fuse-2.9.2.tar.gz tar zxf mfs-1.6.27-5.tar.gz cd fuse-2.9.2 ./configure && make && make installvim /etc/profileexport PATH=/usr/local/mfs/bin:$PATHexport PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATHsource /etc/profilecd ../mfs-1.6.27./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount --disable-mfschunkserver && make && make installmkdir /mnt/mfsmodprobe fuseecho "modprobe fuse" >> /etc/rc.local echo "/usr/local/mfs/bin/mfsmount /mnt/mfs -H 192.168.1.1" >> /etc/rc.local chmod +x /etc/rc.local/usr/local/mfs/bin/mfsmount /mnt/mfs/ -H 192.168.1.1 #将mfs共享出来的存储空间挂载到192.168.1.1的/ /mfs目录下 加-p数密码df -hT192.168.1.1:9421 fuse.mfs 77G 0 77G 0% /mnt/mfs/usr/local/mfs/bin/mfsgetgoal -r /mnt/mfs/mfssetgoal -r 1 /mnt/mfs/ #mfssetgoal用来设置文件被复制的分数,生产环境下Chunk server节点数量应大于cd /mnt/mfs/touch testmfsgetgoal test 分别打开两台chunk查看/data下,都产生了加密的数据,说明成功了
回收站
mfsrsettrashtime 600 /mnt/mfs/ //回收站清空时间,s计算,设置文件或目录的删除时间。一个删除的文件能够存放在“ 垃圾箱”中的时间称为隔离时间, 这个时间可以用mfsgettrashtime 命令来查看,用mfssettrashtime 命令来设置。单位为秒。单独安装或挂载MFSMETA 文件系统,它包含目录/ trash (包含仍然可以被还原的删除文件的信息)和/ trash/undel (用于获取文件)。把删除的文件,移到/ trash/undel下,就可以恢复此文件。在MFSMETA 的目录里,除了trash 和trash/undel 两个目录,还有第三个目录reserved,该目录内有已经删除的文件,但却被其他用户一直打开着。在用户关闭了这些被打开的文件后,reserved 目录中的文件将被删除,文件的数据也将被立即删除。此目录不能进行操作。mfsmaster配置文件#WORKING_USER = mfs #运行master server 用户# WORKING_GROUP = mfs #运行master server 组# SYSLOG_IDENT = mfsmaster #master server 在syslog中的标识,说明是由master产生的# LOCK_MEMORY = 0 #是否执行mlockall()避免mfsmaster 进程溢出(默认为0)# NICE_LEVEL = -19 #运行的优先级(如果可以默认-19;注意:进程必须是用root启动)# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg #被挂接的目录及其权限控制文件的存放位置# DATA_PATH = /usr/local/mfs/var/mfs #数据存放路径,此目录分三类文件,changelog ,sessions 和stats # BACK_LOGS = 50 #metadata的改变log文件数目(默认是50)# REPLICATIONS_DELAY_INIT = 300 #延迟复制的时间(默认是300s)# REPLICATIONS_DELAY_DISCONNECT = 3600 #chunkserver 断开的复制延迟(默认是3600)# MATOCS_LISTEN_HOST = * #metalogger 监听的ip地址(默认是*,代表任何ip)# MATOCS_LISTEN_PORT = 9419 #metalogger 监听的端口地址(默认是9419)# MATOCS_LISTEN_HOST = * #用于chunkserver 连接的ip地址(默认是*,代表任何ip)# MATOCS_LISTEN_PORT = 9420 #用于chunkserver 连接的端口地址(默认是9420)# MATOCU_LISTEN_HOST = * #用于客户端挂接的ip地址(默认*,代表任何ip)# MATOCU_LISTEN_PORT = 9421 #用于客户端挂接连接的端口地址(默认9421)# CHUNKS_LOOP_TIME = 300 #chunksde 回环频率(默认是:300秒)# CHUNKS_WRITE_REP_LIMIT = 1 #在一个循环里复制到一个chunkserver的最大chunk数目# CHUNKS_READ_REP_LIMIT = 5 #在一个循环里从一个chunkserver复制的最大chunk数目#CHUNKS_READ_REP_LIMIT = 0 弹出低于1.6.0的客户端挂接(0或1,默认是0mfs回收站部署及测试/在客户端创建目录并且赋权#mkdir /mfs/mfsmeta#cd /mfs#chown -R mfs:mfs mfsmeta //挂载目录#/usr/bin/mfsmount -m /mfs/mfsmeta/ -H 192.168.0.11 //mfsmaster可以使用Master机IP#/usr/bin/mfsmount /mfs -H 192.168.0.11///查看挂载后的目录结构#cd /mfs/mfsmeta/#ll#cd trash#ll#cd undel开始删除并还原测试#cd /mfs/mfsmeta/#ll#rm -rf web#cd /mfs/mfsmeta/#cd trash#ls#mv 0000000F\|gagag undel#ls#cd /mfs
MFS监控
mfscgiserv是用python编写的一个web服务器,其监听端口是9425,可以再masster server 上通过 /usr/local/mfs/sbin/mfscgiserv来启动,用户利用浏览器就可以完全监控所有客户挂接、Chunk server、Master server等。在一台客户端上通过浏览器访问http://192.168.1.1:9425
在master开启mfs监控/usr/local/mfs/sbin/mfscgiserv iptables -I INPUT -p tcp --dport 9425 -j ACCEPT在一台客户端上通过浏览器访问http://192.168.1.1:9425
灾难恢复
MFS维护及灾难恢复
1)MFS集群的启动与停止
(1)启动mfsmaster进程
(2)启动所有的mfsChunkserver进程
(3)启动mfsmetalogger进程
(4)在所有客户端上挂载NFS文件系统
(1)在所有客户端卸载MFS挂载
(2)停止Chunkserver进程
(3)停止mfsmetalogger进程
(4)停止mfsmaster进程
转载地址:http://wzxvb.baihongyu.com/