MFS分布式存储

MFS分布式对象存储

分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机、服务器模式。一个典型的网络可能包括多个用户访问服务器。

一、MFS优越性如下

  • Free通用文件系统

  • 可在线扩展,体系架构伸缩性极强

  • 部署简单

  • 高可用,可设置任意文件冗余程度(提供比raid10更高的冗余级别,而不影响读写性能,只会加速)

  • 可回收在指定时间内删除的文件

  • 提供了类似于EMC,IBM等商业存储的快照特性。(可对整个文件或正在读写的文件创建快照)

二、MFS工作原理和设计架构

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

 

MFS读取数据的过程

当client需要数据时,首先向master server发起查询请求 ​ 管理服务器检索自己的数据,获取到数据所在的可用数据服务器位置ip|port|chunkid ​ 管理服务器将数据服务器的地址发送给客户端 ​ 客户端向具体的数据服务器发起数据获取请求 ​ 数据服务器将数据发送给客户端

MFS删除数据的过程

l 客户端有删除操作时,首先向Master发送删除信息

l Master定位到相应元数据信息进行删除,并将chunk server上块的删除操作加入队列异步清理

l 响应客户端删除成功的信号MFS修改文件内容的过程客户端有修改文件内容时,首先向Master发送操作信息

l Master申请新的块给.swp文件,客户端关闭文件后,会向Master发送关闭信息

l Master会检测内容是否有更新,若有,则申请新的块存放更改后的文件,删除原有块和.swp文件块

l 若无,则直接删除.swp文件块。

注:
​
l Master记录着管理信息,比如:文件路径|大小|存储的位置(ip,port,chunkid)|份数|时间等,元数据信息存在于内存中,会定期写入metadata.mfs.back文件中,定期同步到metalogger,操作实时写入changelog.*.mfs,实时同步到metalogger server中。master启动将metadata.mfs载入内存,重命名为metadata.mfs.back文件。
​
l 文件以chunk大小存储,每chunk最大为64M,小于64M的,该chunk的大小即为该文件大小(验证实际chunk文件略大于实际文件),超过64M的文件将被切分,以每一份(chunk)的大小不超过64M为原则;块的生成遵循规则:目录循环写入(00-FF 256个目录循环,step为2)、chunk文件递增生成、大文件切分目录连续。
​
l Chunkserver上的剩余存储空间要大于1GB,新的数据才会被允许写入,否则,你会看到No space left on device的提示,实际中,测试发现当磁盘使用率达到95%左右的时候,就已经不行写入了,当时可用空间为1.9GB。
​
l 文件可以有多份copy,当goal为1时,文件会被随机存到一台chunkserver上,当goal的数大于1时,copy会由master调度保存到不同的chunkserver上,goal的大小不要超过chunkserver的数量,否则多出的copy,不会有chunkserver去存。

三、MFS的安装、部署、配置

实验规划

身份IP
client server192.168.30.10
master server192.168.30.20
metalogger server192.168.30.30
chunk server1192.168.30.40
chunk server2192.168.30.50

安装包:Index of /src

步骤一:配置master server 192.168.30.20

  • 安装

[root@localhost ~]# yum -y install gcc zlib-devel
[root@localhost ~]# useradd -r -s /sbin.nologin mfs
[root@localhost ~]# tar -xf moosefs-3.0.101
[root@localhost ~]# cd moosefs-3.0.101
[root@localhost ~]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmount --disable-mfschunkserver
[root@localhost ~]# make && make install
  • 配置

[root@localhost ~]# ln -s /usr/local/mfs/bin/*  /usr/local/bin
[root@localhost ~]# ln -s /usr/local/mfs/sbin/* /usr/local/sbin
[root@localhost ~]# cd /usr/local/mfs/etc/mfs
[root@localhost mfs]# cp -a mfsmaster.cfg.sample   mfsmaster.cfg
[root@localhost mfs]# cp -a mfsexports.cfg.sample  mfsexports.cfg
[root@localhost mfs]# cp -a mfstopology.cfg.sample  mfstopology.cfg
[root@localhost mfs]# vim mfsexports.cfg
客户端IP            允许挂载的目录   客户端挂载的权限
*                       /         rw,alldirs,admin,maproot=0:0
*                       .         rw
  • 管理

[root@localhost ~]# cd /usr/local/mfs/var/mfs
[root@localhost mfs]# cp -a metadata.mfs.empty metadata.mfs
[root@localhost ~]# mfsmaster start
[root@localhost ~]# netstat -anpt
tcp     0   0 0.0.0.0:9419     0.0.0.0:*   LISTEN      15534/mfsmaster  tcp     0   0 0.0.0.0:9420     0.0.0.0:*   LISTEN      15534/mfsmaster  tcp     0   0 0.0.0.0:9421     0.0.0.0:*   LISTEN      15534/mfsmaster 

步骤二:配置metalogger server 192.168.30.30

  • 安装moosefs-3.0.101(同上)

  • 配置

[root@localhost ~]# ln -s /usr/local/mfs/bin/*  /usr/local/bin
[root@localhost ~]# ln -s /usr/local/mfs/sbin/* /usr/local/sbin
[root@localhost ~]# cd /usr/local/mfs/etc/mfs/
[root@localhost mfs]# cp -a mfsmetalogger.cfg.sample  mfsmetalogger.cfg
[root@localhost mfs]# vim mfsmetalogger.cfg
META_DOWNLOAD_FREQ = 2
MASTER_HOST = 192.168.30.20
[root@localhost ~]# mfsmetalogger start
[root@localhost ~]# lsof  -i :9419
mfsmetalo 12659  mfs    8u  IPv4  44244      0t0  TCP localhost.localdomain:59956->192.168.30.20:9419 (ESTABLISHED)
​

步骤三:配置chunk server 192.168.30.40&50

  • 安装

[root@localhost ~]# yum -y install gcc zlib-devel
[root@localhost ~]# useradd -r -s /sbin/nologin mfs
[root@localhost ~]# tar -xf moosefs-3.0.101-1.tar.gz 
[root@localhost ~]# cd moosefs-3.0.101
[root@localhost moosefs-3.0.101]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
[root@localhost moosefs-3.0.101]# make
[root@localhost moosefs-3.0.101]# make install
  • 配置

[root@localhost moosefs-3.0.101]# ln -s /usr/local/mfs/bin/* /usr/local/bin/
[root@localhost moosefs-3.0.101]# ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
[root@localhost moosefs-3.0.101]# cd /usr/local/mfs/etc/mfs
[root@localhost mfs]# cp -a mfschunkserver.cfg.sample mfschunkserver.cfg 
​
[root@localhost mfs]# vim mfschunkserver.cfg
MASTER_HOST = mfsmaster   #指明master server服务器地址
MASTER_PORT = 9420        #指明master server 端口
HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg   #共享磁盘的配置文件
​
[root@localhost mfs]# cp -a mfshdd.cfg.sample mfshdd.cfg
[root@localhost mfs]# vim mfshdd.cfg
/chunkdir   #填写挂载点
​
[root@localhost mfs]# pvcreate /dev/sdb
[root@localhost mfs]# vgcreate vg01 /dev/sdb
[root@localhost mfs]# lvcreate  -L 18G -n lv01 vg01
[root@localhost mfs]# mkfs.ext4 /dev/vg01/lv01
[root@localhost mfs]# mkdir /chunkdir
[root@localhost mfs]# mount -t xfs /dev/vg01/lv01 /chunkdir #建议写入/etc/fstab
[root@localhost mfs]# chown -R mfs.mfs /chunkdir        
#注意在挂载完成后,修改目录归属
#添加一块磁盘并创建分区,然后挂载到指定的挂载点下(使用ext4文件系统格式化)
  • 管理

[root@localhost etc]# mfschunkserver start
[root@localhost etc]# ps -ef | grep mfs
405681002:14 ? 00:00:00 mfschunkserver startroot 

步骤三:配置client server 192.168.30.10

  • 安装

[root@localhost ~]# yum -y install gcc zlib-devel fuse fuse-devel fuse-libs
[root@localhost ~]# useradd -r -s /sbin/nologin mfs
[root@localhost ~]# tar -xf moosefs-3.0.101-1.tar.gz 
[root@localhost ~]# cd moosefs-3.0.101
[root@localhost moosefs-3.0.101]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver
[root@localhost moosefs-3.0.101]# make
[root@localhost moosefs-3.0.101]# make install
  • 配置

测试
[root@localhost ~]# ln -s /usr/local/mfs/bin/* /usr/local/bin/
[root@localhost ~]# ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
[root@localhost ~]# mfsmount /mfsdata/ -H 192.168.88.10
[root@localhost ~]# mfsmount /mfsmeta/ -H 192.168.88.10
[root@localhost ~]# mfsmount  -m  /mfsmeta/ -H 192.168.88.10
# -H 指定 master server IP
  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据引用,MooseFS是一种分布式文件系统,用作共享存储服务器。要手动切换MooseFS的主备节点,可以按照以下步骤进行操作: 1. 首先,根据引用中的指示,需要通过运行"./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount"来配置MooseFS。 2. 接下来,根据引用中的指示,需要修改配置文件"/usr/local/mfs/etc/mfshdd.cfg"。在这个文件中,你需要指定MooseFS的主备角色。 3. 修改配置文件时,你需要注意以下几个步骤: a. 确保每个服务器只贡献一个分区作为MooseFS的一部分。 b. 根据你的服务器配置,将分区的挂载点修改为MooseFS的写目录的属主。 c. 确保配置文件中只包含一行内容,指定MooseFS的主备角色。 通过完成以上步骤,你就可以手动切换MooseFS的主备节点。请确保按照正确的配置和指示进行操作,以确保系统的正常运行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [分布式文件系统MFS(moosefs)实现存储共享](https://blog.csdn.net/weixin_35953844/article/details/119661796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值