zoukankan      html  css  js  c++  java
  • 部署MooseFS分布式文件系统

    MooseFS是一个分布式文件系统,其本身具有高可用性,高拓展性,开放源代码,高容错,等在数据的读写性能方面,通过dd测试,MooseFS也就是写入的速度稍微好于NFS,读上没有差别.


    ♥ 文章声明 ♥
    该系列文章部分文字描述,整理于以下文献,化繁为简.
    《鸟哥的Linux私房菜 (基础学习篇 第三版)》 - 作者:鸟哥
    《Linux就该这么学》 - 作者:刘遄
    《linux运维之道》- 作者:丁明一


    • MooseFS的文件系统结构体系可分为以下四种角色,分别对应不同的功能:
    • 1.管理服务器managing server (master)
    • 2.元数据日志服务器Metalogger server(Metalogger)
    • 3.数据存储服务器data servers (chunkservers)
    • 4.客户机挂载使用client computers

    下面我们分别编译安装MFS的每个组件,实现一个企业环境的分布式文件系统.

    实验环境与IP分配

    [主机类型]		[主机IP]		[主机作用]
    
    Master-Server		192.168.22.195		主控服务器
    
    MetaLogger-Server	192.168.22.191		备份服务器
    
    Cunk-Server		192.168.22.192		存储节点1
    Cunk-Server		192.168.22.193		存储节点2
    
    Client			192.168.22.194		挂载客户端
    

    Master-Server配置

    管理服务器managing server (master):负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复,多节点拷贝单个机器管理整个文件系统,用来存储记录每一个文件的Metadata(记录文件的大小、文件的属性、文件的位置,也包括非规则文件的系统,如目录、sockets、管道和设备),Master-Server相当于MFS的大脑,用于管理协调服务器之间正常工作,此处也就是主控服务器.

    1.服务器上的/etc/hosts中添加下面指向,指明主服务器IP.

    [root@localhost ~]# vim /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.22.195 mfsmaster				#在原来的基础上添加这一条即可
    
    

    2.源码编译安装Master-Server.

    [root@localhost ~]# yum install -y gcc zlib zlib-devel                #安装依赖
    [root@localhost ~]# groupadd mfs                                      #创建用户组
    [root@localhost ~]# useradd -M -s /sbin/nologin -g mfs mfs            #创建用户并将其加入用户组
    
    [root@localhost ~]# tar –xzvf moosefs-3.0.99.tar.gz
    [root@localhost ~]# cd moosefs-3.0.99/
    [root@localhost ~]# ./configure --prefix=/usr --sysconfdir=/etc 
    --localstatedir=/var/lib --with-default-user=mfs 
    --with-default-group=mfs --disable-mfschunkserver 
    --disable-mfsmount
    
    #----------------------------------------------------------------------------------
    #[参数解释]
    
    	--prefix=/usr                   #指定主目录存放位置
    	--sysconfdir=/etc               #指定配置文件存放位置
    	--localstatedir=/var/lib        #存放二进制文件metadata和文本文件changelog
    	--with-default-user=mfs         #指定用户
    	--with-default-group=mfs        #指定组
    	--disable-mfschunkserver        #关闭chunk-server
    	--disable-mfsmount              #关闭挂载
    #---------------------------------------------------------------------------------
    
    [root@localhost ~]# make && make install
    

    3.成功安装Master以后,系统会在/etc/mfs目录自动生成样例配置文件,我们需要将此配置文件修改一下,去掉后缀.sample配置文件才会生效.

    [root@localhost ~]# cd /etc/mfs/
    [root@localhost ~]# cp -a mfsmaster.cfg.sample mfsmaster.cfg
    [root@localhost ~]# cp -a mfsmetalogger.cfg.sample mfsmetalogger.cfg
    [root@localhost ~]# cp -a mfsexports.cfg.sample mfsexports.cfg
    
    [root@localhost ~]# cd /var/lib/mfs
    [root@localhost ~]# cp -a metadata.mfs.empty metadata.mfs
    

    4.启动Master-Server服务和CGI监控服务.

    [root@localhost ~]# /usr/sbin/mfsmaster start           #启动Master-Server
    [root@localhost ~]# /usr/sbin/mfscgiserv                #启动监控服务
    

    5.设置Mfsmaster和mfscgiserv进程开机自启动,此处将开机命令追加写入/etc/profile系统每次开机都会执行这条指令,从而实现开机自启动.

    [root@localhost ~]# echo "/usr/sbin/mfsmaster start" >> /etc/profile
    [root@localhost ~]# echo "/usr/sbin/mfscgiserv" >> /etc/profile
    

    6.现在我们来测试一下,使用浏览器访问以下地址,成功的话会看到监控页面.

    [root@localhost ~]# curl http://192.168.22.195:9425     #查看是否启动成功
    

    MetaLogger-Server配置

    元数据日志服务器Metalogger server(Metalogger):负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作,Metalogger server主要作用是主控服务器的备份,他的作用是起到主控服务器崩溃了它自动顶上,所以Metalogger server的安装和master server的安装大体是一样的,当然备份服务器不安装照样能使用,但是就失去了备份的功能.

    1.服务器上的/etc/hosts中添加下面指向,指向主服务器IP(可选/如果不做第1步则要做第3步).

    [root@localhost ~]# vim /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.22.195 mfsmaster				#在原来的基础上添加这一条即可
    

    2.源码编译安装Masterlog-Server.

    [root@localhost ~]# yum install -y gcc zlib zlib-devel                #安装依赖
    [root@localhost ~]# groupadd mfs                                      #创建用户组
    [root@localhost ~]# useradd -M -s /sbin/nologin -g mfs mfs            #创建用户并将其加入用户组
    
    [root@localhost ~]# tar -xzvf moosefs-3.0.99.tar.gz
    [root@localhost ~]# cd moosefs-3.0.99/
    [root@localhost ~]# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib 
    --with-default-user=mfs --with-default-group=mfs 
    --disable-mfschunkserver --disable-mfsmount
    
    #----------------------------------------------------------------------------------
    #[参数解释]
    
    	--prefix=/usr                   #指定主目录存放位置
    	--sysconfdir=/etc               #指定配置文件存放位置
    	--localstatedir=/var/lib        #存放二进制文件metadata和文本文件changelog
    	--with-default-user=mfs         #指定用户
    	--with-default-group=mfs        #指定组
    	--disable-mfschunkserver        #关闭chunk-server
    	--disable-mfsmount              #关闭挂载
    #----------------------------------------------------------------------------------
    
    [root@localhost ~]# make && make install
    

    3.Masterlog-Server修改主配置文件,指定主服务器IP.

    #[开启配置文件]
    #----------------------------------------------------------------------------------
    [root@localhost ~]# cd /etc/mfs
    [root@localhost ~]# cp -a mfsmetalogger.cfg.sample mfsmetalogger.cfg
    #----------------------------------------------------------------------------------
    
    #[配置参数]
    #----------------------------------------------------------------------------------
    [root@localhost ~]# vim /etc/mfs/mfsmetalogger.cfg
    
    META_DOWNLOAD_FREQ = 2         				#元数据备份文件下载请求频率(默认24小时)
    MASTER_HOST = 192.168.22.195				#指定Master-Server地址(主控地址)
    #----------------------------------------------------------------------------------
    

    4.启动Metalogger server备用服务器进程,并设置开机自启动.

    [root@localhost ~]# /usr/sbin/mfsmetalogger start
    [root@localhost ~]# echo "/usr/sbin/mfsmetalogger start" >> /etc/profile
    

    5.检查从服务器是否启动成功并同步了数据.

    [root@localhost ~]# cd /var/lib/mfs    #查看是否有文件产生(产生了文件说明成功)
    [root@localhost ~]# lsof -i :9419      #检查端口是否开启
    

    Cunk-Server配置

    数据存储服务器data servers (chunkservers):负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输.真正存储数据的节点,扩建它增加容量,可以多台每个文件可能在不同服务器间拷贝.

    1.Cunk-server服务器上的/etc/hosts中添加下面指向,指明主服务器IP
    (可选/如果不做第1步则要做第3步).

    [root@localhost ~]# vim /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.22.195 mfsmaster				#在原来的基础上添加这一条即可
    

    2.源码编译安装Cunk-Server.

    [root@localhost ~]# yum install -y gcc zlib zlib-devel                 #安装依赖
    [root@localhost ~]# groupadd mfs                                       #创建用户组
    [root@localhost ~]# useradd -M -s /sbin/nologin -g mfs mfs             #创建用户并将其加入用户组
    
    [root@localhost ~]# tar -xzvf moosefs-3.0.99.tar.gz
    [root@localhost ~]# cd moosefs-3.0.99/
    [root@localhost ~]# ./configure --prefix=/usr --sysconfdir=/etc 
    --localstatedir=/var/lib --with-default-user=mfs 
    --with-default-group=mfs --disable-mfsmaster
    
    #----------------------------------------------------------------------------------
    #[参数解释]
    
    	--prefix=/usr                  #指定主目录存放位置
    	--sysconfdir=/etc              #指定配置文件存放位置
    	--localstatedir=/var/lib       #存放二进制文件metadata和文本文件changelog
    	--with-default-user=mfs        #指定用户
    	--with-default-group=mfs       #指定组
    	--disable-mfschunkserver       #关闭chunk-server
    	--disable-mfsmount             #关闭挂载
    #----------------------------------------------------------------------------------
    
    [root@localhost ~]# make && make install
    

    3.拷贝 Chunk-Server 服务所需的配置文件(开启配置文件),去掉.sample后缀开启.

    [root@localhost ~]# cd /etc/mfs
    [root@localhost ~]# cp -a mfschunkserver.cfg.sample mfschunkserver.cfg
    [root@localhost ~]# cp -a mfshdd.cfg.sample mfshdd.cfg
    

    4.修改Chunk-Server 配置文件,指定服务器地址,端口,和共享的磁盘.

    [root@localhost ~]# vim /etc/mfs/mfschunkserver.cfg	
    
    MASTER_HOST = 192.168.22.195              #指明Master-Server服务器地址
    MASTER_PORT = 9420                        #指明Master-Server端口
    HDD_CONF_FILENAME = /etc/mfs/mfshdd.cfg   #指明哪个配置文件来配置共享磁盘的
    

    5.编辑/etc/mfs/mfshdd.cfg,在最后面添加下面的文本行,并创建相应挂载目录.

    在配置文件 mfshdd.cfg 中我们给出了用于客户端挂接 MooseFS 分布式文件系统根分区所使用的共享空间位置.
    建议在Chunk-Server上划分单独的空间给 MooseFS 使用,这样做的好处是便于管理剩余空间.
    此处我们假定要使用一个共享点/mnt/mfschunk(如果没有,请先创建共享点).

    #----------------------------------------------------------------------------------
    #[写入配置]
    
    [root@localhost ~]# echo "/mnt/mfschunk" >>/etc/mfs/mfshdd.cfg #Chunk-Server共享的目录
    #----------------------------------------------------------------------------------
    #[创建共享目录]
    
    [root@localhost ~]# mkdir -p /mnt/mfschunk
    [root@localhost ~]# chown -R mfs:mfs /mnt/mfschunk
    #----------------------------------------------------------------------------------
    

    6.启动 Cunk-Server 服务,并设置开机自启动.

    [root@localhost ~]# /usr/sbin/mfschunkserver start
    [root@localhost ~]# echo "/usr/sbin/mfschunkserver start" >> /etc/profile
    

    7.现在通过浏览器访问,主控地址.

    网页中,应该可以看见这个 MooseFS 系统的全部信息(包括主控 master和存储服务 chunkserver)
    在Disks上可以看到我们的挂载/ghost目录了

    Client客户端配置

    实际的使用节点,例如:每台Apache都挂载上共享目录,即可实现所有Apache服务器全部共享一个目录

    1.在/etc/hosts中添加下面指向,指明主服务器IP(可选/不指定则要通过IP挂载).

    [root@localhost ~]# vim /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.22.195 mfsmaster				#在原来的基础上添加这一条即可
    

    2.为了挂载基于MooseFS的文件系统,需要所有客户端安装FUSE包.

    [root@localhost ~]# tar -xzvf fuse-2.9.3.tar.gz
    [root@localhost ~]# cd fuse-2.9.3/
    [root@localhost ~]# ./configure
    [root@localhost ~]# make && make install
    

    3.Linux下执行下面命令,不然编译mfsmount会报Fuse不存在的错.

    [root@localhost ~]# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
    

    4.编译安装客户端软件mfsmount.

    [root@localhost ~]# yum install -y gcc zlib zlib-devel                   #安装依赖
    [root@localhost ~]# groupadd mfs                                         #创建用户组
    [root@localhost ~]# useradd -M -s /sbin/nologin -g mfs mfs               #创建用户并将其加入用户组
    
    [root@localhost ~]# tar -xzvf moosefs-3.0.99.tar.gz
    [root@localhost ~]# cd moosefs-3.0.99/
    [root@localhost ~]# ./configure --prefix=/usr --sysconfdir=/etc 
    --localstatedir=/var/lib --with-default-user=mfs 
    --with-default-group=mfs --disable-mfsmaster 
    --disable-mfschunkserver
    
    #----------------------------------------------------------------------------------
    #[参数解释]
    
    	--prefix=/usr                   #指定主目录存放位置
    	--sysconfdir=/etc               #指定配置文件存放位置
    	--localstatedir=/var/lib        #存放二进制文件metadata和文本文件changelog
    	--with-default-user=mfs         #指定用户
    	--with-default-group=mfs        #指定组
    	--disable-mfschunkserver        #关闭chunk-server
    	--disable-mfsmount              #关闭挂载
    #----------------------------------------------------------------------------------
    
    [root@localhost ~]# make && make install
    

    5.假定客户端的挂接点是 /media,我们将以下面的指令来使用 MooseFS 分布式系统.

    [root@localhost ~]# /usr/bin/mfsmount/mfsmount /media -H mfsmaster     #不指定挂接地址
    [root@localhost ~]# /usr/bin/mfsmount/mfsmount /media -H 192.168.1.12  #挂接地址挂载(指定主存储IP)
    
    #上面的解释,用/usr/bin/mfsmount将192.168.22.195的资源挂载到本地/media下
    #挂载成功后,执行命令 df -h 查看分区情况
    

    6.应该写入配置文件/etc/fstab或者/etc/profile开机自动挂载.

    [root@localhost ~]# echo "/usr/bin/mfsmount /media -H 192.168.22.195" >> /etc/profile
    

    MooseFS常用功能

    1.数据误删除恢复操作,垃圾回收站机制.

    [root@localhost ~]# mfssettrashtime  64800  /ghost/l1.txt       #给1.txt设置一个保存时间
    [root@localhost ~]# mkdir /back
    [root@localhost ~]# chown mfs.mfs /back
    [root@localhost ~]# mfsmount -m /back -H 192.168.22.195         #指定服务器IP
    
    [root@localhost ~]# find . -name *1.txt*                        #搜索删除的1.txt
    [root@localhost ~]# mv 002/00000002|1.txt  /back/trash/undel/  #拿到undel队列里,就恢复了
    

    2.快照功能(提取数据).

    [root@localhost ~]# mkdir  /back
    [root@localhost ~]# chown  mfs.mfs  back/
    [root@localhost ~]# mfsmakesnapshot  1.txt  back/               #拷贝1.txt的源信息到back/目录下
    [root@localhost ~]# cd back/                                    #拷贝出来的数据
    

    3.冗余goal设置(自定义备份个数).

    [root@localhost ~]# mfsgetgoal /ghost/1.txt                    #查看1.txt的冗余数
    [root@localhost ~]# mfsfileinfo /ghost/1.txt                   #查看1.txt的冗余分布在那几台机器上
    [root@localhost ~]# mfssetgoal 	3 /ghost/1.txt                 #设置1.txt的冗余个数(要备份几份)
    

    4.还原 master数据(主服务器的宕机/数据丢失/恢复数据).

    我们要去从服务器,将从里的数据拷贝到主上,并重新建立文件索引,即可恢复丢失文件

    [root@localhost ~]# scp /usr/local/mfs/var/mfs/*  root@10.10.10.12:/usr/local/mfs/var/mfs
    [root@localhost ~]# mfsmaster -a                               #自动恢复重新建立索引
    [root@localhost ~]# netstat -an |grep "9419"                   #检查是否开启成功
    


    版权声明: 本博客,文章与代码均为学习时整理的笔记,博客中除去明确标注有参考文献的文章,其他文章【均为原创】作品,转载请务必【添加出处】,您添加出处是我创作的动力!

    警告:如果您恶意转载本人文章,则您的整站文章,将会变为我的原创作品,请相互尊重!
  • 相关阅读:
    HDU 1124 Factorial
    hdu 1690 Bus System
    hdu 1113 Word Amalgamation
    POJ 2482 Stars in Your Window
    hdu 1385 ZOJ 1456 Minimum Transport Cost(经典floyd)
    hdu 1907 John
    VMware 虚拟机 安装 UBuntu 9.10 命令模式转换成窗口模试
    #pragma CODE_SEG __NEAR_SEG NON_BANKED详解
    Ubuntu 下Hadoop 伪分布式 hadoop0.20.2.tar.gz 的安装
    文件拷贝代码以及疑问
  • 原文地址:https://www.cnblogs.com/LyShark/p/11827424.html
Copyright © 2011-2022 走看看