MFS : 网络分布式文件系统中的一种
Project web site: http://www.moosefs.com/
Installation and using MooseFS:
http://www.moosefs.org/reference-guide.html
mooseFS(moose 驼鹿)是一款网络分布式文件系统。它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源。MFS也像其他类unix文件系统一样,包含了层级结构(目录树),存储着文件属性(权限,最后访问和修改时间),可以创建特殊的文件(块设备,字符设备,管道,套接字),符号链接,硬链接。
拓扑图:
MooseFS文件系统介绍
MooseFS是一种分布式文件系统,MooseFS文件系统结构包括以下四种角色:
1 管理服务器managing server (master)
管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝
2 元数据日志服务器Metalogger server(Metalogger)
元数据日志服务器: 负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作
3 数据存储服务器data servers (chunk servers )
真正存储用户数据的服务器。存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间复 制(复制份数可以手工指定,建议设置副本数为3)。数据服务器可以是多个,并且数量越多,可使用的“磁盘空间”越大,可靠性也越高。
4 客户机挂载使用client computers
使用MFS文件系统来存储和访问的主机称为MFS的客户端,成功挂接MFS文件系统以后,就可以像以前使用NFS一样共享这个虚拟性的存储了。
什么场景用到MFS?
5T : 找一个大硬盘,做raid5
50T : SAN 存储
5000T:分布式存储, 比如:MFS技术
数据比较多时,会想使用SAN存储。
为什么要使用MFS?
LVS集群+IP SAN存储拓扑图:
SAN存储: 20盘位: SAS盘:600G *20= 12000G 大约12T
MFS实验拓扑图 :
实验环境:
服务器 角色
xuegod63 管理服务器managing server (master) 和元数据日志服务器(Metalogger)
xuegod64 数据存储服务器data servers (chunk servers )
xuegod62 客户机挂载使用client computers
安装环境准备:
fuse.ko
所有服务器端和客户端都要支持fuse内核模块。
由于mfs的客户端程序也就是加载mfs磁盘系统的命令是使用了fuse.
用户空间文件系统(Filesystem in Userspace,简称FUSE)是操作系统中的概念,指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。一些文件系统如NTFS-3G(作用:让Linux中对NTFS文件系统提供支持) 使用FUSE实现。
2.6以上内核,都自带fuse
配置 : mfs管理服务器 : xuegod63
准备:xuegod63,64, 62
[root@xuegod63 ~]# yum install gcc fuse fuse-devel zlib-devel -y
[root@xuegod63 mfs-1.6.27]# tar zxvf mfs-1.6.27-5.tar.gz
[root@xuegod63 ~]# cd mfs-1.6.27
创建用户:mfs
[root@xuegod63 mfs-1.6.27]# useradd -s /sbin/nologin mfs
[root@xuegod63 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
[root@xuegod63 mfs-1.6.27]# make && make install
[root@xuegod63 ~]# scp mfs-1.6.27-5.tar.gz 192.168.1.64:/root/
root@192.168.1.64's password:
mfs-1.6.27-5.tar.gz 100% 766KB 766.1KB/s 00:00
[root@xuegod63 ~]# scp mfs-1.6.27-5.tar.gz 192.168.1.62:/root/
root@192.168.1.62's password:
mfs-1.6.27-5.tar.gz 100% 766KB 766.1KB/s 00:00
安装:xuegod63 元数据日志服务器:
[root@xuegod63 ~]# rm -rf mfs-1.6.27
[root@xuegod63 ~]# tar -zxvf mfs-1.6.27-5.tar.gz
[root@xuegod63 ~]#cd mfs-1.6.27
[root@xuegod63 mfs-1.6.27]# useradd -s /sbin/nologin mfs
[root@xuegod63 mfs-1.6.27]# ./configure --prefix=/usr/local/mfsmeta --with-default-user=mfs --with-default-group=mfs && make && make install
安装:xuegod64 chunck server 数据存储
[root@xuegod64 mfs-1.6.27]# yum install gcc fuse fuse-devel zlib-devel -y
[root@xuegod64 mfs-1.6.27]#useradd -s /sbin/nologin mfs
[root@xuegod64 mfs-1.6.27]#./configure --prefix=/usr/local/mfsmetachunk --with-default-user=mfs --with-default-group=mfs && make && make install
安装:xuegod62 客户端:
[root@xuegod62 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount
报错:
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... configure: error: newly created file is older than distributed files!
Check your system clock
yum install gcc fuse fuse-devel zlib-devel -y
useradd -s /sbin/nologin mfs
./configure --prefix=/usr/local/mfsmeta --with-default-user=mfs --with-default-group=mfs && make && make install
开始配置:
xuegod63
查看安装后的目录结构:
[root@xuegod63 ~]# ls /usr/local/mfs*
/usr/local/mfs:
bin etc sbin share var
生成配置文件:
[root@xuegod63 mfs]# pwd
/usr/local/mfs/etc/mfs
[root@xuegod63 mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg
[root@xuegod63 mfs]# cp mfsexports.cfg.dist mfsexports.cfg
[root@xuegod63 mfs]# cp mfstopology.cfg.dist mfstopology.cfg
[root@xuegod63 mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
[root@xuegod63 mfs]# cp /usr/local/mfs/var/mfs/metadata.mfs.empty /usr/local/mfs/var/mfs/metadata.mfs
vim mfsmaster.cfg
# MATOCS_LISTEN_HOST = *
# MATOCS_LISTEN_PORT = 9420 # master会打开9420端口等待 mfschunkserver 数据存储服务器连接
修改目录权限:
[root@xuegod63 mfs]# chown -R mfs:mfs /usr/local/mfs
启动,关闭服务 master
[root@xuegod63 mfs]# /usr/local/mfs/sbin/mfsmaster restart/start/stop
[root@xuegod63 mfs]# ls var/mfs/
metadata.mfs.back metadata.mfs.empty stats.mfs
metadata.mfs.back.1 sessions.mfs
[root@xuegod63 mfs]# echo '/usr/local/mfs/sbin/mfsmaster restart ' >> /etc/rc.local
[root@xuegod63 mfs]# tail /var/log/messages
配置访问共享权限:
[root@xuegod63 mfs]# vim mfsexports.cfg
192.168.1.0/24 / rw,alldirs,maproot=0
b.被挂载的目录
/ 表示MooseFS的根
. 表示MFSMETA文件系统
c.客户端拥有的权限
ro 只读
rw 读写
alldirs 允许挂载任何指定的子目录
maproot 映射为root用户还是指定的用户
元数据日志服务器:
[root@xuegod63 mfs]# pwd
/usr/local/mfsmeta/etc/mfs
[root@xuegod63 mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg #改:
15 # MASTER_HOST = mfsmaster
16 # MASTER_PORT = 9419
MASTER_HOST = 192.168.1.63
MASTER_PORT = 9419
[root@xuegod63 mfs]# chown -R mfs:mfs /usr/local/mfsmeta/
启动:
[root@xuegod63 mfs]# /usr/local/mfsmeta/sbin/mfsmetalogger start
[root@xuegod63 mfsmeta]# pwd
/usr/local/mfsmeta
[root@xuegod63 mfsmeta]# ls var/mfs/
changelog_ml_back.0.mfs metadata.mfs.empty sessions_ml.mfs
changelog_ml_back.1.mfs metadata_ml.mfs.back
数据存储服务器 (chunkserver xuegod64)
生成配置文件:
[root@xuegod64 mfs]# pwd
/usr/local/mfs/etc/mfs
[root@xuegod64 mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@xuegod64 mfs]# cp mfshdd.cfg.dist mfshdd.cfg
[root@xuegod64 mfs]# vim mfschunkserver.cfg
12 MASTER_HOST = 192.168.1.63
13 MASTER_PORT = 9420
# DATA_PATH = /usr/local/mfs/var/mfs
# HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg #指点共享数据的位置
[root@xuegod64 mfs]# vim /usr/local/mfs/etc/mfs/mfshdd.cfg
修改权限:
[root@xuegod64 mfs]# chown -R mfs:mfs /tmp/
[root@xuegod64 mfs]# ls /tmp/
pulse-7FfPPwcWjR7M VMwareDnD
[root@xuegod64 mfs]# chown -R mfs:mfs /usr/local/mfs
启动:
[root@xuegod64 mfs]# /usr/local/mfs/sbin/mfschunkserver start
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfschunkserver modules ...
hdd space manager: path to scan: /tmp/
hdd space manager: start background hdd scanning (searching for available chunks)
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly
网盘上传一个 疯狂动物城.avi
网盘服务器的存储结点存储的是 疯狂动物城.avi 吗? 是:1 不是:2
存的效果如下: 每个块存在下面的文件中
查看方式在浏览器中输入http://192.168.1.63:9425 (我这个部署在MASTER服务器上)