MFS架构图
- 元数据服务器(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 通知客户端数据写入乐成。
- 客户端通知元数据服务器本次写入操纵已完成。
实行案例:
本案例使用六台服务器模仿搭建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
- 关闭防火墙:
- [root@mfsmaster ~]# systemctl stop firewalld
- [root@mfsmaster ~]# systemctl disable firewalld
复制代码 编辑 /etc/sysconfig/selinux 文件,将 SELINUX 设置为 disabled。
- [root@mfsmaster ~]# vi /etc/sysconfig/selinux
复制代码 修改内容:
编辑 /etc/hosts 文件,添加以下内容:
- [root@mfsmaster ~]# 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
复制代码- [root@mfsmaster ~]# yum -y install gcc zlib-devel
复制代码 在全部更改完成后,重启体系以使设置收效。
1. 搭建 Master Server
- [root@mfsmaster ~]# useradd -s /sbin/nologin -M mfs
复制代码- [root@mfsmaster ~]# tar zxvf moosefs-3.0.84-1.tar.gz
复制代码- [root@mfsmaster ~]# cd moosefs-3.0.84/
复制代码- [root@mfsmaster moosefs-3.0.84]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmount --disable-mfschunkserver
- [root@mfsmaster moosefs-3.0.84]# make && make install
复制代码- [root@mfsmaster mfs]# cd /usr/local/mfs/etc/mfs
复制代码- [root@mfsmaster mfs]# cp mfsmaster.cfg.sample mfsmaster.cfg
- [root@mfsmaster mfs]# cp mfsexports.cfg.sample mfsexports.cfg
- [root@mfsmaster mfs]# cp mfstopology.cfg.sample mfstopology.cfg
复制代码- [root@mfsmaster mfs]# cd /usr/local/mfs/var/mfs
复制代码- [root@mfsmaster mfs]# 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
- [root@mfsmaster mfs]# /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
复制代码- [root@mfsmaster mfs]# ps -ef | grep mfs
复制代码 如果 mfsmaster 乐成启动,你会看到相关的进程信息。
停止 Master Server 的命令为:
- [root@mfsmaster mfs]# /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 服务,并解压安装包。
- [root@metalogger ~]# useradd -s /sbin/nologin -M mfs
- [root@metalogger ~]# tar zvxf moosefs-3.0.84-1.tar.gz
- [root@metalogger ~]# 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/
- ...
复制代码 运行配置脚本,指定安装路径及配置选项:
- [root@metalogger moosefs-3.0.84]# ./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
复制代码 编译并安装:
- [root@metalogger moosefs-3.0.84]# make && make install
复制代码 编译和安装输出:
- Making all in src
- make[1]: Entering directory '.../moosefs-3.0.84/src'
- ...
- make[1]: Leaving directory '.../moosefs-3.0.84/src'
- Making install in src
- ...
复制代码 2. 复制 Metalogger 主配置文件
进入配置文件目录并复制示例配置文件:
- [root@metalogger moosefs-3.0.84]# cd /usr/local/mfs/etc/mfs
- [root@metalogger mfs]# ll
- total 24
- -rw-r--r--. 1 root root 4057 Feb 20 17:42 mfsexports.cfg.sample
- -rw-r--r--. 1 root root 8597 Feb 20 17:42 mfsmaster.cfg.sample
- -rw-r--r--. 1 root root 2175 Feb 20 17:42 mfsmetalogger.cfg.sample
- -rw-r--r--. 1 root root 1052 Feb 20 17:42 mfstopology.cfg.sample
复制代码 复制配置文件:
- [root@metalogger mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg
复制代码 3. 修改 Metalogger 主配置文件,指定 Master Server 地点
编辑 mfsmetalogger.cfg 文件,找到以下行并修改为 Master Server 的 IP 地点:
- [root@metalogger mfs]# vi mfsmetalogger.cfg
复制代码 找到 MASTER_HOST 行并修改:
- MASTER_HOST = 192.168.9.200 # 修改为Master Server的IP地址
复制代码 4. 启动 Metalogger 服务
启动 Metalogger 服务:
- [root@metalogger mfs]# /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 服务状态:
- [root@metalogger mfs]# ps -ef | grep mfs
复制代码 查抄服务状态输出:
- root 5895 1 0 20:31 ? 00:00:00 /usr/local/mfs/sbin/mfsmetalogger start
- root 5897 1111 0 20:32 pts/0 00:00:00 grep mfs
复制代码 5. 停止 MetaLogger Server
要停止 MetaLogger Server,可以使用以下命令:
- [root@metalogger mfs]# /usr/local/mfs/sbin/mfsmetalogger stop
复制代码 总结
以上是完整的搭建 MetaLogger Server 的步骤和每一条命令的输出。从安装服务、复制配置文件、修改配置文件到启动和停止服务,确保每一步都精确执行以包管 Metalogger 正常运行。
3.搭建Chunk Server
搭建Chunk Server的过程涉及三个Chunk Server(chunk1、chunk2、chunk3),每台服务器的搭建步骤是雷同的。以下是搭建步骤的详细说明:
同一配置
步骤1:安装Metalogger服务
- [root@chunk1 ~]# useradd -s /sbin/nologin -M mfs
复制代码- [root@chunk1 ~]# tar zvxf moosefs-3.0.84-1.tar.gz
复制代码- [root@chunk1 ~]# cd moosefs-3.0.84/
复制代码
- 配置MooseFS,禁用mfsmaster和mfsmount,指定安装路径和默认用户、组为mfs:
- [root@chunk1 moosefs-3.0.84]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
复制代码- [root@chunk1 moosefs-3.0.84]# make && make install
复制代码 步骤2:复制mfschunk配置文件
- [root@chunk1 moosefs-3.0.84]# cd /usr/local/mfs/etc/mfs
复制代码- [root@chunk1 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配置文件:
- [root@chunk1 mfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg
复制代码- [root@chunk1 mfs]# cp mfshdd.cfg.sample mfshdd.cfg ```
复制代码 步骤3:修改mfschunk主配置文件,指定Master Server
- 使用vi编辑mfschunkserver.cfg文件:
- [root@chunk1 mfs]# 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分区
- [root@chunk1 mfs]# vi mfshdd.cfg
复制代码
- 在文件中添加一行/data,表示为MFS指定的分区路径:
- # mount points of HDD drives
- #
- # /mnt/hd1
- # /mnt/hd2
- …
- # /mnt/hd7
- /data
复制代码 在这里,/data是一个给MFS使用的分区,建议在生产情况中使用独立的分区或将磁盘挂载到此目录。
- [root@chunk1 mfs]# mkdir /data
复制代码- [root@chunk1 mfs]# chown -R mfs:mfs /data
复制代码- [root@chunk1 mfs]# /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
复制代码- [root@chunk1 mfs]# 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,可以使用以下命令:
- [root@chunk1 mfs]# /usr/local/mfs/sbin/mfschunkserver stop
复制代码 以上步骤完整形貌了在三台服务器上搭建Chunk Server的过程,请按步骤逐步执行。
4.MFS客户端
搭建和配置MFS客户端涉及多个步骤,包罗安装FUSE、安装MFS客户端、挂载MFS文件体系等。以下是详细的步骤说明:
步骤1:安装FUSE
- [root@client ~]# wget https://github.com/libfuse/libfuse/releases/download/fuse-2.9.7/fuse-2.9.7.tar.gz
复制代码- [root@client ~]# tar zvxf fuse-2.9.7.tar.gz
复制代码- [root@client ~]# cd fuse-2.9.7/
复制代码- [root@client fuse-2.9.7]# ./configure
复制代码- [root@client fuse-2.9.7]# make && make install
复制代码 bash [root@client ~]# vim /etc/profile
在文件末了添加以下内容以设置PKG_CONFIG_PATH情况变量:
- export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
复制代码- [root@client ~]# source /etc/profile
复制代码 步骤2:安装MFS客户端
- [root@client ~]# useradd -s /sbin/nologin -M mfs
复制代码- [root@client ~]# tar zvxf moosefs-3.0.84-1.tar.gz
复制代码- [root@client ~]# cd moosefs-3.0.84/
复制代码
- 配置MooseFS客户端,禁用mfsmaster和mfschunkserver,启用mfsmount,指定安装路径和默认用户、组为mfs:
- [root@client moosefs-3.0.84]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount
复制代码- [root@client moosefs-3.0.84]# make && make install
复制代码 步骤3:挂载MFS文件体系
- [root@client ~]# mkdir /mnt/mfs
复制代码- [root@client ~]# modprobe fuse
复制代码
- 挂载MFS文件体系,指定Master Server的IP地点:
- [root@client ~]# /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
复制代码 大概的输出示例:
- Filesystem Type Size Used Avail Use% Mounted on
- /dev/mapper/cl-root xfs 19G 5.3G 13G 29% /
- devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
- tmpfs tmpfs 2.0G 144k 2.0G 1% /dev/shm
- tmpfs tmpfs 2.0G 27M 2.0G 2% /run
- tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
- /dev/vda1 xfs 1.1G 181M 883M 17% /boot
- tmpfs tmpfs 398M 4.1k 398M 1% /run/user/42
- tmpfs tmpfs 398M 37k 398M 1% /run/user/0
- 192.168.9.200:9421 fuse.mfs 65G 16G 50G 24% /mnt/mfs
复制代码- [root@client ~]# umount /mnt/mfs
复制代码 步骤4:MFS常用操纵
- 添加MFS命令路径到情况变量,编辑/etc/profile文件:
- [root@client ~]# vim /etc/profile
复制代码 在文件末了添加以下内容:
- export PATH=/usr/local/mfs/bin:$PATH
复制代码- [root@client ~]# source /etc/profile
复制代码
- 使用mfsgetgoal命令检察文件的复制份数,可以通过-r选项递归查询整个目录:
- [root@client ~]# mfsgetgoal -r /mnt/mfs/
复制代码 输出示例:
- /mnt/mfs/:
- directories with goal 2 : 1
复制代码- [root@client ~]# mfssetgoal-r 3 /mnt/mfs/
复制代码 修改后的复制份数可以通过以下命令验证:
- [root@client ~]# mfsgetgoal -r /mnt/mfs/
复制代码- [root@client ~]# cd /mnt/mfs
- [root@client mfs]# touch test
- [root@client mfs]# mfsgetgoal test
复制代码 输出示例:
以上步骤完整形貌了配置MFS客户端的过程,请按步骤逐步执行。
5. MFS 监控
- MFS 监控简介:
- Mfscgiserv 是一个用 Python 编写的 Web 服务器,监听端口为 9425。
- 可在 Master Server 上通过命令 /usr/local/mfs/sbin/mfscgiserv 启动。
- 用户可以通过浏览器访问 http://192.168.9.200:9425 举行全面监控。
- 监控内容:
- 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企服之家,中国第一个企服评测及商务社交产业平台。 |