MFS分布式文件系统

MFS分布式文件系统

MooseFS是一个具有容错性的网络分布式文件系统。它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。通用文件系统,不需要修改上层应用就可以使用,通过附加新的计算机或者硬盘可以实现容量的动态扩展,体系架构可伸缩性极强,删除的文件可以根据配置的时间周期进行保留(一个文件系统级别的回收站),高可靠(数据的多个拷贝被存储在不同的计算机上),提供 web 监控接口,提高随机读或写的效率,提高海量小文件的读写效率。但是mfs 把文件系统的结构缓存到 master 的内存中,文件越多,master 的内存消耗越大,8g 对应 2500w 的文件数,2 亿文件就得 64GB 内存。支持特殊文件(块和字符设备、管道以及套接字),符号连接和硬连接。

MFS文件系统的部署

MFS 文件系统结构包含 4 种角色:

管理服务器 managing server (master):负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝。
元数据日志服务器 Metalogger server(Metalogger):负责备份 master 服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在 master server 出问题的时候接替其进行工作。
数据存储服务器 data servers (chunkservers):负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输以及存储。
客户机挂载使用 client :通过 fuse 内核接口挂接远程管理服务器上所管理的数据存储服务器,看起来共享的文件系统和本地 unix 文件系统使用一样的效果。

内部运行机制

1.客户端请求访问存储,请求发送到了MFS Master
2.MFS Master根据我们的请求,查询所需要的文件分布在那些服务器上
3.客户端直接和存储服务器进行数据存储和读写

官网地址:http://www.moosefs.com/


部署MFS分布式文件系统

MFS管理服务器
172.25.8.1

 yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel –y
 useradd -s /sbin/nologin mfs           //运行mfs的用户
 tar xvf moosefs-3.0.86-5.tar.gz  && cd moosefs-3.0.86
 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
 make -j 4 && make install
 cp mfsmaster.cfg.dist mfsmaster.cfg              # Master配置文件
 cp mfsexports.cfg.dist mfsexports.cfg            # 输出目录配置文件
 cp mfsmetalogger.cfg.dist mfsmetalogger.cfg      # 元数据日志
 cd /usr/local/mfs/var/mfs/
 cp metadata.mfs.empty metadata.mfs               #首次安装 master 时,会自动生成一个名为 metadata.mfs.empty 的元数据文件 metadata,该文件是空的。MooseFS master 运必须有文件 metadata.mfs
 cd /usr/local/mfs/etc/mfs/             # 配置文件(不用修改)

 vim mfsmaster.cfg
23 # MATOCS_LISTEN_HOST = *            #监听所有 IP,也直接写一个 IP 地址
24 # MATOCS_LISTEN_PORT = 9420  
11 # DATA_PATH = /usr/local/mfs/var/mfs 
注:这个配置文件中所有注释的设置都是默认的配置
如果有需要还可以修改 DATA_PATH 的设置将元数据目录存储到其他的分区或磁盘。其他的参数都很简单根据需要调整即可。

master 会打开 9420 端口等待 mfschunkserver 数据存储服务器连接

 chown -R mfs:mfs /usr/local/mfs/
 /usr/local/mfs/sbin/mfsmaster start
 netstat -antup | grep 942*
tcp        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  
 echo "/usr/local/mfs/sbin/mfsmaster start" >> /etc/rc.local 
 chmod +x /etc/rc.local
 /usr/local/mfs/sbin/mfsmaster stop
9422:chunkserver连接client
9421:master连接client
9420:master连接chunkserver
9425:mfs的web页面访问接口
 cd/usr/local/mfs/etc/mfs
 vim mfsexports.cfg
# Allow everything but "meta".
*                       /       rw,alldirs,maproot=0

# Allow "meta".
*                       .       rw                                      #次行下面添加下面一行
172.25.8.0/24          /        rw,alldirs,maproot=0
# 配置密码
 cd /usr/local/mfs/etc/mfs/
 vim mfsexports.cfg             #权限后面跟上密码即可
# Allow everything but "meta".
*                       /       rw,alldirs,maproot=0

# Allow "meta".
*                       .       rw
172.25.8.0/24         /         rw,alldirs,maproot=0,password=westo
mfsexports.cfg 文件每一条由三部分组成,第一部分表示客户端的 IP 地址,第二部分表示被挂接的目录,第三部分表示客户端拥有的权限,下面对三给部分迚行解释
1.客户端 IP 地址 
 *                       所有 IP 地址 
 x.x.x.x                 单个 IP 地址 
 x.x.x.x/m.m.m.m         IP 网络地址/子网掩码 
 f.f.f.f-t.t.t.t         IP 段 
2.被挂载的目录 
  /                      表示 MooseFS 的根 
  .                      表示 MFSMETA 文件系
3.客户端拥有的权限
  ro                     只读
  rw                     读写
  alldirs                允许挂载任何指定的子目录 
  maproot                映射为 root 用户还是指定的用户
  password               指定客户端密码
 sh /etc/rc.local        # 启动服务

MFS元数据日志服务器

元数据日志守护进程是在安装master server 时一同安装的,最小的要求并不比master 本身大,可以被运行在任何机器上(例如任一台chunkserver),但是最好是放置在MooseFS master 的备份机上,备份master 服务器的变化日志文件,文件类型为changelog_ml.*.mfs。因为主要的master server 一旦失效,可能就会将这台metalogger 机器取代而作为master server。

 rm -rf moosefs-3.0.86    #元数据又是另外一台服务器,这里我们在一台机器上做,那么我们也要重新编译
 tar xvf moosefs-3.0.86-5.tar.gz && cd moosefs-3.0.86       #编译的时候,用户在若在其他设备,需要新建运行mfs角色的用户,本机在安装master的时候,已经新建,略过,其他机器上,应该执行useradd -s /sbin/nologin mfs
 ./configure --prefix=/usr/local/mfsmeta --with-default-user=mfs --with-default-group=mfs
 make && make install
 cd /usr/local/mfsmeta/etc/mfs/
 cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
 vim mfsmetalogger.cfg
# META_DOWNLOAD_FREQ = 24   
##24元数据备份文件下载请求频率。默认为24小时,即每隔一天从元数据服务器 
##(MASTER) 下载一个 metadata.mfs.back 文 件 。 当 元 数 据 服 务 器 关 闭 戒 者 出 故 障 时 , matedata.mfs.back 文件将消失,那么要恢复整个 mfs,则需从 metalogger 服务器取得该文件。请特别注意这个文件,它与日志文件一起,才能够恢复整个被损坏的分布式文件系统。 

MASTER_HOST = 172.25.8.1
## MASTER_HOST,这个文件中需要修改的是 MASTER_HOST 变量,这个变量的值是 MASTER SERVER 的 IP 地址 
 chown -R mfs:mfs /usr/local/mfsmeta/
启动元数据日志服务器
 /usr/local/mfsmeta/sbin/mfsmetalogger start
 echo "/usr/local/mfsmeta/sbin/mfsmetalogger start" >> /etc/rc.local
 /usr/local/mfsmeta/sbin/mfsmetalogger stop
 /usr/local/mfsmeta/sbin/mfsmetalogger start
 lsof -i :9419
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mfsmaster 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)

Master和Metalogger服务器安装完成,且在一台机器上

Chunk Server安装配置

172.25.8.2

安装数据服务器(chunkservers),这些机器的磁盘上要有适当的剩余空间,而且操作系统要遵循POSIX 标准(验证了的有这些: Linux, FreeBSD, Mac OS X and OpenSolaris)。
Chunkserver存储数据时,是在一个普通的文件系统如ext4上储存数据块或碎片(chunks/fragments)作为文件。 你在chunkserver上看不到完整的文件。

     useradd -s /sbin/nologin mfs
     tar xvf moosefs-3.0.86-5.tar.gz
     cd moosefs-3.0.86 && ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs && make && make install

配置文件修改

 cp mfschunkserver.cfg.dist mfschunkserver.cfg          #主配置文件
 cp mfshdd.cfg.dist mfshdd.cfg                          #使用的磁盘空间配置文件
 vim mfschunkserver.cfg
MASTER_HOST = 192.168.0.11                              #元数据服务器的名称或地址,可以是主机名,也可以是 ip 地址
MASTER_PORT = 9420                                       #可以启用它,也可以不启用,不启用,默认就是9420
# CSSERV_LISTEN_PORT = 9422                              #这个监听端口用于与其它数据存储服务器间的连接,通常是数据复制

# HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg  #分配给 MFS 使用的磁盘空间配置文件的位置 
 vim mfshdd.cfg
# mount points of HDD drives
#
#/mnt/hd1
#/mnt/hd2
#etc.
/tmp
#在这里/tmp 是一个给 mfs 的分区,但在生产环境是一个独立的磁盘的挂载目录 
 chown -R mfs:mfs /usr/local/mfs/
 /usr/local/mfs/sbin/mfschunkserver start
 echo "/usr/local/mfs/sbin/mfschunkserver start" >> /etc/rc.local 
 chmod +x /etc/rc.local
 ls /tmp                            # 分块存储,人工无法认识
00  11  22  33  44  55  66  77  88  99  AA  BB  CC  DD  EE  FF
01  12  23  34  45  56  67  78  89  9A  AB  BC  CD  DE  EF  keyring-J8XeaN
02  13  24  35  46  57  68  79  8A  9B  AC  BD  CE  DF  F0  orbit-gdm
03  14  25  36  47  58  69  7A  8B  9C  AD  BE  CF  E0  F1  orbit-root
04  15  26  37  48  59  6A  7B  8C  9D  AE  BF  D0  E1  F2  pulse-oErxG6JvcJR1
05  16  27  38  49  5A  6B  7C  8D  9E  AF  C0  D1  E2  F3  pulse-ZvGMw7hIpLaC
06  17  28  39  4A  5B  6C  7D  8E  9F  B0  C1  D2  E3  F4  vgauthsvclog.txt.0
07  18  29  3A  4B  5C  6D  7E  8F  A0  B1  C2  D3  E4  F5  virtual-root.qMLdFF
08  19  2A  3B  4C  5D  6E  7F  90  A1  B2  C3  D4  E5  F6  VMwareDnD
09  1A  2B  3C  4D  5E  6F  80  91  A2  B3  C4  D5  E6  F7  vmware-root
0A  1B  2C  3D  4E  5F  70  81  92  A3  B4  C5  D6  E7  F8
0B  1C  2D  3E  4F  60  71  82  93  A4  B5  C6  D7  E8  F9
0C  1D  2E  3F  50  61  72  83  94  A5  B6  C7  D8  E9  FA
0D  1E  2F  40  51  62  73  84  95  A6  B7  C8  D9  EA  FB
0E  1F  30  41  52  63  74  85  96  A7  B8  C9  DA  EB  FC
0F  20  31  42  53  64  75  86  97  A8  B9  CA  DB  EC  FD
10  21  32  43  54  65  76  87  98  A9  BA  CB  DC  ED  FE
 /usr/local/mfs/sbin/mfschunkserver stop

配置客户端
172.25.8.3

 yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel -y
 useradd -s /sbin/nologin mfs
 tar xvf moosefs-3.0.86-5.tar.gz 
 cd moosefs-3.0.86
 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount       #mfsmount必须有,作为客户端必须有的一个选项
 make && make install
 mkdir /mfs
 lsmod | grep fuse
fuse                   73530  4
 modprobe fuse                           #若没有,加载一下
 ln -s /usr/local/mfs/bin/mfsmount /usr/bin/mfsmount
 mfsmount /mfs/ -H 172.25.8.1-p          #将mfs共享出来的存储空间挂载到172.25.8.1的/mfs目录下
MFS Password:                            #直接回车
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root
 df –h

172.25.8.1:9421  5.3G     0  5.3G   0% /mfs
 echo "modprobe fuse" >> /etc/rc.local 
 echo "/usr/local/mfs/bin/mfsmount /mfs -H 172.25.8.3" >> /etc/rc.local 
 chmod +x /etc/rc.local

测试:

 yum install -y tree
 tree /tmp/
/tmp/
├── 00
├── 01
├── 02
├── 03
├── 04
├── 05
├── 06
├── 07
├── 08
├── 09
├── 0A
├── 0B
├── 0C
├── 0D
├── 0E
 cp -r /boot/* /mfs/            # 客户端写入数据
 tree /tmp/                     # 存储服务器监控
/tmp/
├── 00
├── 01
│   └── chunk_0000000000000001_00000001.mfs
├── 02
│   └── chunk_0000000000000002_00000001.mfs
├── 03
│   └── chunk_0000000000000003_00000001.mfs
├── 04
│   └── chunk_0000000000000004_00000001.mfs
├── 05
│   └── chunk_0000000000000005_00000001.mfs
 ls /mfs           #客户端是看得到的文件内容,而在我们的Chunk Server上看到的都是一些碎片
config-2.6.32-431.el6.x86_64         lost+found
efi                                  symvers-2.6.32-431.el6.x86_64.gz
grub                                 System.map-2.6.32-431.el6.x86_64
initramfs-2.6.32-431.el6.x86_64.img  vmlinuz-2.6.32-431.el6.x86_64
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值