水军大提督 发表于 2024-9-4 09:37:31

Linux中MFS分布式文件体系(实战教程)全网最详细

MFS架构图

https://img-blog.csdnimg.cn/img_convert/6af046a769fafe56bfb05bfb39ac1ab9.png

[*] 元数据服务器(Master):在整个体系中负责管理文件体系,维护元数据。
[*] 元数据日志服务器(MetaLogger):备份Master服务器的变化日志文件,文件范例为 changelog_ml.*.mfs。当 Master 服务器数据丢失或者破坏,可以从日志服务器中取得 文件恢复。
[*] 数据存储服务器(Chunk Server):真正存储数据的服务器。存储文件时,会把文件分 块保存,并在数据服务器之间复制,数据服务器越多,能使用的“容量”就越大,可靠 性就越高,性能越好。
[*] 客户端(Client):可以像挂载NFS一样挂载MFS文件体系,其操纵是雷同的。
MFS的原理

数据读取流程


[*]客户端向元数据服务器发送读取请求。
[*]元数据服务器返回所需数据的存放位置,包罗 Chunk Server 的 IP 地点和对应的 Chunk 编号。
[*]客户端向指定的 Chunk Server 请求数据。
[*]Chunk Server 将所请求的数据发送给客户端。
数据写入流程


[*]客户端向元数据服务器发送写入请求。
[*]元数据服务器与 Chunk Server 交互(仅在所需的分块 Chunks 存在时举行)。
[*]元数据服务器在指定的 Chunk Server 上创建新的分块 Chunks,乐成创建后,Chunk Server 通知元数据服务器操纵乐成。
[*]元数据服务器告知客户端可以在哪个 Chunk Server 的哪些 Chunks 中写入数据。
[*]客户端向指定的 Chunk Server 写入数据。
[*]该 Chunk Server 与其他 Chunk Server 举行数据同步,同步乐成后,Chunk Server 通知客户端数据写入乐成。
[*]客户端通知元数据服务器本次写入操纵已完成。
实行案例:

https://img-blog.csdnimg.cn/img_convert/87167492e3c0c3d576f59709e8e10e70.png

本案例使用六台服务器模仿搭建MFS文件体系,
主机操纵体系IP 地点主要软件Master ServerCentOS 7.3 x86_64192.168.9.200moosefs-3.0.84-1.tar.gzMetaLogger ServerCentOS 7.3 x86_64192.168.9.202moosefs-3.0.84-1.tar.gzChunk Server 1CentOS 7.3 x86_64192.168.9.209moosefs-3.0.84-1.tar.gzChunk Server 2CentOS 7.3 x86_64192.168.9.168moosefs-3.0.84-1.tar.gzChunk Server 3CentOS 7.3 x86_64192.168.9.246moosefs-3.0.84-1.tar.gzClientCentOS 7.3 x86_64192.168.9.247moosefs-3.0.84-1.tar.gzfuse-2.9.7.tar.gz 案例实施 分别在六台服务器上关闭防火墙、设置地点解析记载、安装相关依赖包。
为了确保集群各节点能够正常通信,并顺利安装 MooseFS,必要在六台服务器上举行以下操纵:

[*] 在全部服务器上关闭防火墙并设置 SELinux
[*] 关闭防火墙:
# systemctl stop firewalld
# systemctl disable firewalld

[*]禁用 SELinux:
编辑 /etc/sysconfig/selinux 文件,将 SELINUX 设置为 disabled。
# vi /etc/sysconfig/selinux
修改内容:
SELINUX=disabled

[*]配置地点解析记载:
编辑 /etc/hosts 文件,添加以下内容:
# vi /etc/hosts
添加内容:
192.168.9.200 mfsmaster
192.168.9.202 metalogger
192.168.9.209 chunk1
192.168.9.168 chunk2
192.168.9.246 chunk3
192.168.9.247 client

[*]安装相关依赖包:
# yum -y install gcc zlib-devel

[*]重启体系:
在全部更改完成后,重启体系以使设置收效。
1. 搭建 Master Server


[*]创建用户:
# useradd -s /sbin/nologin -M mfs

[*]安装源码包:
[*]解压安装包:

# tar zxvf moosefs-3.0.84-1.tar.gz
2. 进入解压后的目录:
# cd moosefs-3.0.84/
3. 配置并编译安装:
# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmount --disable-mfschunkserver
# make && make install

[*]复制并修改 Master 配置文件:
[*]进入配置文件目录:

# cd /usr/local/mfs/etc/mfs
2. 复制配置文件模板并修改:
# cp mfsmaster.cfg.sample mfsmaster.cfg
# cp mfsexports.cfg.sample mfsexports.cfg
# cp mfstopology.cfg.sample mfstopology.cfg

[*]初始化元数据文件:
[*]进入元数据目录:

# cd /usr/local/mfs/var/mfs
2. 复制空的元数据文件:
# cp metadata.mfs.empty metadata.mfs
至此,Master Server 的底子搭建工作完成。
4) 修改配置文件
以下内容相识即可,此实行并没有修改任何内容
在 MooseFS 的 Master Server 上,主要必要配置两个文件:mfsmaster.cfg(主配置文件)和 mfsexports.cfg(被挂载目录及权限配置文件)。
1. **mfsmaster.cfg** 文件常用参数表明:


[*]RUNTIME OPTIONS:

[*]WORKING_USER=mfs:运行 masterserver 的用户。
[*]WORKING_GROUP=mfs:运行 masterserver 的组。
[*]SYSLOG_IDENT=mfsmaster:在 syslog 中表示是 mfsmaster 产生的日志。
[*]DATA_PATH=/usr/local/mfs/var/mfs:数据存放路径。
[*]EXPORTS_FILENAME=/usr/local/mfs/etc/mfs/mfsexports.cfg:导出的文件配置路径。
[*]TOPOLOGY_FILENAME=/usr/local/mfs/etc/mfs/mfstopology.cfg:拓扑配置文件路径。
[*]MATOML_LISTEN_PORT=9419:metalogger 监听的端口地点。
[*]MATOCS_LISTEN_PORT=9420:chunkserver 连接的端口地点。
[*]MATOCL_LISTEN_PORT=9421:客户端挂接连接的端口地点。


[*]**mfsexports.cfg**** 文件参数格式**:


[*]每个条目分为三部分:
[*]客户端的 IP 地点:例如 * 表示全部的 IP 地点。
[*]被挂接的目录:例如 / 标识 MFS 根目录。
[*]客户端的权限:例如 rw 表示读写权限。

[*]参数示例:
* / rw,alldirs,admin,maproot=0:0
以上是 Master Server 的 mfsmaster.cfg 和 mfsexports.cfg 配置文件的表明。根据需求,这些文件可以在生产情况中针对业务需求修改,以优化 MFS 性能。
5) 启动 Master Server

[*]启动命令:
# /usr/local/mfs/sbin/mfsmaster start
如果乐成启动,会显示类似如下信息:
open files limit has been set to: 16384
working directory: /usr/local/mfs/var/mfs
...
mfsmaster daemon initialized properly

[*]查抄是否启动乐成:
# ps -ef | grep mfs
如果 mfsmaster 乐成启动,你会看到相关的进程信息。
停止 Master Server 的命令为:
# /usr/local/mfs/sbin/mfsmaster stop
以上是 Master Server 完整的配置与启动流程。
2.搭建 MetaLogger Server 详细步骤

MetaLogger Server 主要用于备份 Master Server 的变更日志文件 (changelog_ml.*.mfs),确保在 Master Server 出现题目时能够接替其工作。下面是搭建 MetaLogger Server 的详细步骤和每一条命令的输出:
1. 安装 Metalogger 服务

首先,我们必要添加一个体系用户来运行 Metalogger 服务,并解压安装包。
# useradd -s /sbin/nologin -M mfs
# tar zvxf moosefs-3.0.84-1.tar.gz
# cd moosefs-3.0.84/
解压安装包输出:

moosefs-3.0.84/
moosefs-3.0.84/configure
moosefs-3.0.84/Makefile.in
moosefs-3.0.84/src/
...
运行配置脚本,指定安装路径及配置选项:
# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
配置脚本输出:

checking for gcc... gcc
checking whether the C compiler works... yes
checking for a BSD-compatible install... /usr/bin/install -c
...
config.status: creating Makefile
编译并安装:
# make && make install
编译和安装输出:

Making all in src
make: Entering directory '.../moosefs-3.0.84/src'
...
make: Leaving directory '.../moosefs-3.0.84/src'
Making install in src
...
2. 复制 Metalogger 主配置文件

进入配置文件目录并复制示例配置文件:
# cd /usr/local/mfs/etc/mfs
# ll
total 24
-rw-r--r--. 1 root root4057 Feb 20 17:42 mfsexports.cfg.sample
-rw-r--r--. 1 root root8597 Feb 20 17:42 mfsmaster.cfg.sample
-rw-r--r--. 1 root root2175 Feb 20 17:42 mfsmetalogger.cfg.sample
-rw-r--r--. 1 root root1052 Feb 20 17:42 mfstopology.cfg.sample
复制配置文件:
# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg
3. 修改 Metalogger 主配置文件,指定 Master Server 地点

编辑 mfsmetalogger.cfg 文件,找到以下行并修改为 Master Server 的 IP 地点:
# vi mfsmetalogger.cfg
找到 MASTER_HOST 行并修改:
MASTER_HOST = 192.168.9.200# 修改为Master Server的IP地址
4. 启动 Metalogger 服务

启动 Metalogger 服务:
# /usr/local/mfs/sbin/mfsmetalogger start
启动服务输出:

open files limit has been set to: 4096
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly
查抄 Metalogger 服务状态:
# ps -ef | grep mfs
查抄服务状态输出:

root      5895   10 20:31 ?      00:00:00 /usr/local/mfs/sbin/mfsmetalogger start
root      589711110 20:32 pts/0    00:00:00 grep mfs
5. 停止 MetaLogger Server

要停止 MetaLogger Server,可以使用以下命令:
# /usr/local/mfs/sbin/mfsmetalogger stop
总结

以上是完整的搭建 MetaLogger Server 的步骤和每一条命令的输出。从安装服务、复制配置文件、修改配置文件到启动和停止服务,确保每一步都精确执行以包管 Metalogger 正常运行。
3.搭建Chunk Server

搭建Chunk Server的过程涉及三个Chunk Server(chunk1、chunk2、chunk3),每台服务器的搭建步骤是雷同的。以下是搭建步骤的详细说明:
同一配置
步骤1:安装Metalogger服务


[*]添加mfs用户,不答应登录且不创建home目录:
# useradd -s /sbin/nologin -M mfs

[*]解压MooseFS安装包:
# tar zvxf moosefs-3.0.84-1.tar.gz

[*]进入解压后的目录:
# cd moosefs-3.0.84/

[*]配置MooseFS,禁用mfsmaster和mfsmount,指定安装路径和默认用户、组为mfs:
# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount

[*]编译并安装MooseFS:
# make && make install
步骤2:复制mfschunk配置文件


[*]进入配置文件目录:
# cd /usr/local/mfs/etc/mfs

[*]检察配置文件列表:
# ll   total 12
-rw-r--r--. 1 root root 3491 Feb 20 17:42 mfschunkserver.cfg.sample
-rw-r--r--. 1 root root 1648 Feb 20 17:42 mfshdd.cfg.sample
-rw-r--r--. 1 root root 2175 Feb 20 17:42 mfsmetalogger.cfg.sample

[*]复制mfschunkserver.cfg配置文件:
# cp mfschunkserver.cfg.sample mfschunkserver.cfg

[*]复制mfshdd.cfg配置文件:
# cp mfshdd.cfg.sample mfshdd.cfg   ```
步骤3:修改mfschunk主配置文件,指定Master Server


[*]使用vi编辑mfschunkserver.cfg文件:
# vi mfschunkserver.cfg

[*]在配置文件中,找到以下部分并修改MASTER_HOST为Master Server的IP地点:
# MASTER CONNECTION OPTIONS #
# LABELS =
# BIND_HOST = *
MASTER_HOST = 192.168.9.200
# MASTER_PORT = 9420
# MASTER_TIMEOUT = 60
# MASTER_RECONNECTION_DELAY = 5
# AUTH_CODE = mfspassword
在这里,将MASTER_HOST设置为实际的Master Server的IP地点,例如192.168.9.200。
步骤4:创建MFS分区


[*]使用vi编辑mfshdd.cfg文件:
# vi mfshdd.cfg

[*]在文件中添加一行/data,表示为MFS指定的分区路径:
# mount points of HDD drives
#
# /mnt/hd1
# /mnt/hd2

# /mnt/hd7
/data
在这里,/data是一个给MFS使用的分区,建议在生产情况中使用独立的分区或将磁盘挂载到此目录。

[*]创建/data目录:
# mkdir /data

[*]修改/data目录的全部者为mfs用户和组:
# chown -R mfs:mfs /data

[*]启动Chunk Server:
# /usr/local/mfs/sbin/mfschunkserver start
启动时会显示以下输出:
open files limit has been set to: 16384
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
setting glibc malloc arena max to 4
setting glibc malloc arena test to 4
initializing mfschunkserver modules ...
hdd space manager: path to scan: /data/
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

[*]查抄Chunk Server进程是否正常运行:
# ps -ef | grep mfs
大概的输出示例:
mfs 5699 1 0 21:56 ? 00:00:00 /usr/local/mfs/sbin/mfschunkserver start
root 5725 1111 0 21:57 pts/0 00:00:00 grep mfs
停止Chunk Server

要停止Chunk Server,可以使用以下命令:
# /usr/local/mfs/sbin/mfschunkserver stop
以上步骤完整形貌了在三台服务器上搭建Chunk Server的过程,请按步骤逐步执行。
4.MFS客户端

搭建和配置MFS客户端涉及多个步骤,包罗安装FUSE、安装MFS客户端、挂载MFS文件体系等。以下是详细的步骤说明:
步骤1:安装FUSE


[*]下载FUSE源码包:
# wget https://github.com/libfuse/libfuse/releases/download/fuse-2.9.7/fuse-2.9.7.tar.gz

[*]解压FUSE源码包:
# tar zvxf fuse-2.9.7.tar.gz

[*]进入解压后的目录:
# cd fuse-2.9.7/

[*]配置FUSE:
# ./configure

[*]编译并安装FUSE:
# make && make install

[*]设置情况变量,编辑/etc/profile文件:
bash # vim /etc/profile

在文件末了添加以下内容以设置PKG_CONFIG_PATH情况变量:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

[*]重新加载情况变量:
# source /etc/profile

步骤2:安装MFS客户端


[*]添加mfs用户,不答应登录且不创建home目录:
# useradd -s /sbin/nologin -M mfs

[*]解压MooseFS安装包:
# tar zvxf moosefs-3.0.84-1.tar.gz

[*]进入解压后的目录:
# cd moosefs-3.0.84/

[*]配置MooseFS客户端,禁用mfsmaster和mfschunkserver,启用mfsmount,指定安装路径和默认用户、组为mfs:
# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount

[*]编译并安装MooseFS客户端:
# make && make install
步骤3:挂载MFS文件体系


[*]创建挂载点目录:
# mkdir /mnt/mfs

[*]加载FUSE模块到内核:
# modprobe fuse

[*]挂载MFS文件体系,指定Master Server的IP地点:
# /usr/local/mfs/bin/mfsmount /mnt/mfs -H 192.168.9.200
挂载乐成后,会显示以下信息:
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root

[*]检察挂载情况:
# df -Th
大概的输出示例:
Filesystem                Type      SizeUsed Avail Use% Mounted on
/dev/mapper/cl-root       xfs      19G5.3G   13G29% /
devtmpfs                  devtmpfs2.0G   02.0G   0% /dev
tmpfs                     tmpfs   2.0G144k2.0G   1% /dev/shm
tmpfs                     tmpfs   2.0G   27M2.0G   2% /run
tmpfs                     tmpfs   2.0G   02.0G   0% /sys/fs/cgroup
/dev/vda1               xfs       1.1G181M883M17% /boot
tmpfs                     tmpfs   398M4.1k398M   1% /run/user/42
tmpfs                     tmpfs   398M   37k398M   1% /run/user/0
192.168.9.200:9421      fuse.mfs   65G   16G   50G24% /mnt/mfs

[*]如果必要卸载MFS文件体系,可以使用以下命令:
# umount /mnt/mfs
步骤4:MFS常用操纵


[*]添加MFS命令路径到情况变量,编辑/etc/profile文件:
# vim /etc/profile
在文件末了添加以下内容:
export PATH=/usr/local/mfs/bin:$PATH

[*]重新加载情况变量:
# source /etc/profile


[*]使用mfsgetgoal命令检察文件的复制份数,可以通过-r选项递归查询整个目录:
# mfsgetgoal -r /mnt/mfs/

输出示例:
/mnt/mfs/:
directories with goal 2 : 1

[*]使用mfssetgoal命令设置文件的复制份数:
# mfssetgoal-r 3 /mnt/mfs/
修改后的复制份数可以通过以下命令验证:
# mfsgetgoal -r /mnt/mfs/


[*]测试在MFS中创建文件:
# cd /mnt/mfs
# touch test
# mfsgetgoal test
输出示例:
test: 3
以上步骤完整形貌了配置MFS客户端的过程,请按步骤逐步执行。
5. MFS 监控



[*] MFS 监控简介:

[*]Mfscgiserv 是一个用 Python 编写的 Web 服务器,监听端口为 9425。
[*]可在 Master Server 上通过命令 /usr/local/mfs/sbin/mfscgiserv 启动。
[*]用户可以通过浏览器访问 http://192.168.9.200:9425 举行全面监控。
https://i-blog.csdnimg.cn/direct/7ca80017f260472481a2941432a11740.png

[*] 监控内容:

[*]Info 部分: 显示 MFS 的基本信息。
[*]Servers 部分: 列出现有的 Chunk Server。
[*]Disks 部分: 显示 Chunk Server 的硬盘信息。
[*]Exports 部分: 列出可被挂载的目录。
[*]Mounts 部分: 列出已经被挂载的目录。
[*]Operations 部分: 显示当前正在执行的操纵。
[*]Resources 部分: 列出当前的存储信息。
[*]Quitas 部分: 显示当前的配额信息。
[*]Master charts 部分: 展示 Master Server 的操纵情况(如读、写、删除等操纵)。
[*]Server charts 部分: 展示 Chunk Server 的操纵情况、数据传输率及体系状态。

6. MFS 维护及灾难恢复

1) MFS 集群的启动与停止



[*]启动次序:
[*]启动 mfsmaster 进程。
[*]启动全部的 mfschunkserver 进程。
[*]启动 mfsmetalogger 进程(如果配置了 mfsmetalogger)。
[*]在全部客户端挂载 MFS 文件体系。

[*]停止次序:
[*]在全部客户端卸载 MFS 文件体系。
[*]使用 mfschunkserver stop 命令停止 Chunk Server 进程。
[*]使用 mfsmetalogger stop 命令停止 Metalogger 进程。
[*]使用 mfsmaster stop 命令停止 Master 进程。

2) MFS 灾难恢复



[*]主服务器故障处置惩罚:

[*]直接断电后,Master Server 大概无法启动。可以使用命令 /usr/local/mfs/sbin/mfsmaster-a
举行修复。

[*]元数据:

[*]metadata.mfs: 主要元数据文件,当 mfsmaster 运行时会被命名为 metadata.mfs.back。
[*]changelog.*.mfs: 存储了过去 N 小时的文件变更日志(由 BACK_LOGS 参数决定,配置在 mfschunkserver.cfg 中)。

[*]从 Metalogger 恢复 Master:
[*]安装一台新的 mfsmaster,使用与原 Master 雷同的配置。
[*]将 Metalogger 上的 /usr/local/mfs/var/mfs/ 目录下的文件复制到新的 mfsmaster 目录中。

scp root@192.168.9.202:/usr/local/mfs/var/mfs/* /usr/local/mfs/var/mfs/
3. 使用 `mfsmetarestore` 命令合并元数据 `changelogs`。
/usr/local/mfs/sbin/mfsmaster-a


[*]留意事项:

[*]如果是全新安装的 Master,恢复数据后必要更改 metalogger 和 chunkserver 的配置文件中的 MASTER_HOST IP 地点,并重新挂载客户端。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Linux中MFS分布式文件体系(实战教程)全网最详细