专栏首页容器云生态Moosefs分布式文件系统集群讲解配置

Moosefs分布式文件系统集群讲解配置

MFS的官方网站为http://www.moosefs.org ,详细信息您可以去官网进行更多的了解,在这里我只将简单的知识和大家分享。

MFS的网络组成有三部分,Master Server;Chunk Server;Client.其中Chunk Server和Client可以有多个,而Master主控端只能一个。

MFS文件系统结构:

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

2 元数据日志服务器(changelog-server): 负责备份master服务器的变化,(一般情况下可以和管理服务器放在一起)文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作

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

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

MFS文件系统的写原理:

MFS文件系统的读原理:

MFS分布式文件系统搭建:

系统环境:

                RHEL6.4 

                selinux is disabled

                iptables is flush

一、yum 源定义,用来解决软件包的依赖性问题 # cat yum.repo [base] name=yum baseurl=ftp://192.168.2.234/pub/RHEL6.4 gpgcheck=0 [HA] name=ha baseurl=ftp://192.168.2.234/pub/RHEL6.4/HighAvailability gpgcheck=0 [lb] name=LB baseurl=ftp://192.168.2.234/pub/RHEL6.4/LoadBalancer gpgcheck=0 [Storage] name=St baseurl=ftp://192.168.2.234/pub/RHEL6.4/ResilientStorage gpgcheck=0 [SFS] name=FS baseurl=ftp://192.168.2.234/pub/RHEL6.4/ScalableFileSystem gpgcheck=0 二、主机解析准备 # cat /etc/hosts 192.168.2.88 node1        mfsmaster 192.168.2.89 node2 192.168.2.90 node3 192.168.2.82 node4 192.168.2.85 node5 实验将用node1作为master-server node3和node4作为chunk-server node5作为clients 所有节点必须有以上准备 三、安装准备 #yum install rpm-build gcc make fuse-devel zlib-devel -y         安装编译环境使用的依赖(其实安装过程中会提示安装) #rpmbuild -tb mfs-1.6.27.tar.gz                              将gz包构建成rpm包的方式  注意:包的格式很重要(只支持大的版本)

## ls /root/rpmbuild/RPMS/x86_64/                            生成的rpm包 mfs-cgi-1.6.27-2.x86_64.rpm          mfs-client-1.6.27-2.x86_64.rpm mfs-cgiserv-1.6.27-2.x86_64.rpm      mfs-master-1.6.27-2.x86_64.rpm mfs-chunkserver-1.6.27-2.x86_64.rpm  mfs-metalogger-1.6.27-2.x86_64.rpm 1.master-server安装: # yum localinstall mfs-cgi-1.6.27-2.x86_64.rpm mfs-master-1.6.27-2.x86_64.rpm mfs-cgiserv-1.6.27-2.x86_64.rpm -y 可以用cgi进行页面监控 master-server:主要文件和目录 /var/lib/mfs            mfs数据目录 metadata.mfs            mfs启动文件 /etc/mfs                    主目录(存储配置文件) mfsmaster.cfg            mfs主配置文件(定义相关参数,用户、组等设定) mfsexports.cfg            mfs被挂接目录及其权限控制文件 mfstopology.cfg            定义 MFS 网络拓扑结构的文件 配置文件默认不需要修改就可以使用 #chown -R nobody /var/lib/mfs      注意给数据目录以mfs的权限 # mfsmaster            启动mfs #mfsmaster stop            关闭mfs #netstat  -antlpe(mfsmaster开启三个端口:客户端连接9421端口,监听9422端口;数据节点9420端口) #/usr/share/mfscgi #chmod +x  *.cgi            给所有的cgi页面可执行权限(以便与在web下查看状态) # mfscgiserv -------        -》启动cgi监控 http://192.168.2.88:9425/ 查看mfs监控信息 2.chunk-server安装配置(node3 and node4) #rpm -ivh mfs-chunkserver-1.6.27-2.x86_64.rpm #cd /etc/mfs/ #cp mfschunkserver.cfg.dist mfschunkserver.cfg # cp mfshdd.cfg.dist mfshdd.cfg # vim mfshdd.cfg            存储文件     /mnt/chunk            真正存储的目录(将客户端/mnt/mfs的文件存储) #mkdir /mnt/chunk #mkdir /var/lib/mfs #chown nobody /var/lib/mfs/ #chown nobody /mnt/chunk # mfschunkserver         启动mfs服务器(注意,mfsmaster的解析必须到位) #l.                                    产生一个隐藏锁文件 .mfschunkserver.lock

3.clients端的安装与配置; # yum localinstall mfs-client-1.6.27-2.x86_64.rpm #cp mfsmount.cfg.dist mfsmount.cfg #vim mfsmount.cfg         修改master和分布式目录/mnt/mfs #mkdir /mnt/mfs #mfsmounts        执行客户端挂载 mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root            挂载成功 # df                查看挂载设备 mfsmaster:9421         6714624         0   6714624   0% /mnt/mfs # ll -d /mnt/mfs/            挂载后自动读写 drwxrwxrwx 2 root root 0 Jun  8 10:29 /mnt/mfs/ 测试:MFS测试: # mkdir hello{1,2} # ls hello1  hello2 # mfsdirinfo hello1/ hello1/:  inodes:                          1   directories:                    1   files:                          0  chunks:                          0  length:                          0  size:                            0  realsize:                        0 # mfssetgoal -r 3 hello1/        设置备份次数 hello1/:  inodes with goal changed:               1  inodes with goal not changed:           0  inodes with permission denied:          0 # mfsgetgoal hello1/        查看文件备份数 hello1/: 3 # mfsgetgoal hello2 hello2: 1 #cp /etc/fstab hello1/ # cp /etc/passwd hello2/ # mfsfileinfo /hello/fstab             查看文件具体信息 fstab:     chunk 0: 000000000000000B_00000001 / (id:11 ver:1)         copy 1: 192.168.2.82:9422         copy 2: 192.168.2.90:9422 # mfscheckfile passwd 测试存储关系: # mfsfileinfo fstab fstab:     chunk 0: 000000000000000B_00000001 / (id:11 ver:1)         copy 1: 192.168.2.90:9422 [root@node5 hello1]# mfsfileinfo ../hello2/passwd ../hello2/passwd:     chunk 0: 000000000000000C_00000001 / (id:12 ver:1)         no valid copies !!! 客户端:误删除文件(不小心删除/mnt/mfs/hello*/passwd) # mfsmount -m /mnt/test/ -H mfsmaster        恢复目录挂载到mfsmaster上 mfsmaster accepted connection with parameters: read-write,restricted_ip # mount #cd /mnt/test/ ## mfscheckfile passwd # mv 00000005\|hello2\|passwd undel/ 直接恢复到之前的mfs目录中 # umount /mnt/meta/ mfschunk-server可以自动检测客户端的配置文件: # mfschunkserver stop 在客户端重新拷贝文件, #cp /etc/inittab /mnt/mfs/hello1 #mfsgetgoal hello1/fstab        查看文件份数 #mfsgetgoal hello1/inittab # mfsfileinfo inittab             刚开始只有一个chukserver,只能保存一份 开启chunkserver #mfschunkserver # mfsfileinfo inittab             查看文件的备份数,恢复成chunkserver的数 inittab:     chunk 0: 0000000000000006_00000001 / (id:6 ver:1)         copy 1: 192.168.2.184:9422         copy 2: 192.168.2.185:9422 注意: 在mfsmaster中,正常运行时,数据文件为metadata.mfs.back 当主机出现故障,数据文件会保存成metadata.mfs 使用非正常关闭,(kill -9  pid) 数据文件将不会恢复 # mfsmetarestore -a-            非正常启动后会丢失metadata.mfs文件,必须恢复一下 然后重新启动mfsmaster(mfsmaster启动必须有metadata.mfs文件)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Golang中的格式化时间输出 顶

    通常我们在程序处理过程需要对时间进行一定格式化的输出,以便让用户或者其他程序能够更加友好的识别时间,本篇记录下在使用golang语言过程中如何格式化时间。 通常...

    BGBiao
  • 怎样快速将网络repo源中的软件包缓存到本地

    首先使用wget命令下载网络源:     比如下载CDH的源:wget -c http://archive.cloudera.com/cm4/redhat/6/...

    BGBiao
  • Docker监控方案(TIG)的研究与实践之Telegraf

    前言 Docker由于使用了基于namespace和cgroup的技术,因此监控docker容器和监控宿主机在某些性能指标和方式上有一些区别,而传统的监控方式可...

    BGBiao
  • 机器学习(18)——神经网络算法思想:从线性思想到最基础神经网络神经网络算法

    前言: 关于“神经网络”这个词想必对人工智能感兴趣额的早已经熟得不能再熟悉了,在机器学习和认知科学领域,人工神经网络(artificial neural ne...

    DC童生
  • python 中numpy基本方法总结可以类推tensorflow

    一、数组方法 创建数组:arange()创建一维数组;array()创建一维或多维数组,其参数是类似于数组的对象,如列表等 反过来转换则可以使用numpy.n...

    学到老
  • python 中numpy基本方法总结可以类推tensorflow

    学到老
  • 浅谈甲方企业信息安全建设的方法论

    从目前了解的情况来看,甲方安全团队规模在一个企业内部的人员占比还是非常低的,在企业安全建设中,大部分安全措施的落地都是由系统、业务和开发团队来实施。这时候,对于...

    FB客服
  • 手把手教你使用sklearn快速入门机器学习

    sklearn(scikit-learn)是一个非常优秀的Python库,它封装了机器学习中常用的算法,包括监督学习、非监督学习等。它有以下几个特点:

    abs_zero
  • iOS开发之ImageView复用实现图片无限轮播

      在上篇博客中iOS开发之多图片无缝滚动组件封装与使用给出了图片无限轮播的实现方案之一,下面在给出另一种解决方案。今天博客中要说的就是在ScrollView上...

    lizelu
  • 纸上谈兵: 表 (list)

    表 表(list)是常见的数据结构。从数学上来说,表是一个有序的元素集合。在C语言的内存中,表储存为分散的节点(node)。每个节点包含有一个元素,以及一个指向...

    Vamei

扫码关注云+社区

领取腾讯云代金券