MFS分布式文件系统

MFS分布式文件系统

应用背景

公司之前的图片服务器采用的是 NFS,随着业务量增加,多台服务器通过 NFS方式共享一个服务器的存储空间,使得 NFS 服务器不堪重负,经常出现超时问题。

而且NFS存在着单点故障问题,尽管可以用 rsync 同步数据到另外一台服务器上做 NFS服务的备份,但这对提高整个系统的性能并无帮助。

基于目前的需求,我们需要对 NFS服务器进行优化或采取别的解决方案,然而优化并不能应对日益增多的客户端的性能要求,因此选择的解决方案是采用分布式文件系统

采用分布式文件系统后,服务器之间的数据访问不再是一对多的关系,而是多对多的关系,这样可以使性能得到大幅提升。

分布式原理

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。

简单来说,就是把一些分散的(分布在局域网内各个计算机上) 共享文件夹,集合到一个文件夹内(虚拟共享文件夹)。对于用户来说,要访问这些共享文件夹时,只要打开这个虚拟共享文件夹,就可以看到所有链接到虚拟共享文件夹内的共享文件夹,用户感觉不到这些共享文件是分散于各个计算机上的。

分布式文件系统的好处是集中访问、简化操作、数据容灾以及提高文件的存取性能

MFS 原理

MFS 是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。

MFS 文件系统的组成

  • 元数据服务器Master:在整个体系中负责管理文件系统,维护元数据。
  • 元数据日志服务器MetaLogger:备份 Master 服务器的变化日志文件,文件类型为 ‘changelog_m1.*.mfs’。当 Master 服务器数据丢失或者损坏时,可以从日志服务器中取得文件,进行恢复。
  • 数据存储服务器Chunk Server:真正存储数据的服务器。存储文件时会把文件分块保存,并在数据服务器之间进行复制。数据服务器越多,能使用的“容量”就越大,可靠性就越高,性能也就越好。
  • 客户端Client:可以像挂载 NFS 一样挂载 MFS 文件系统,其操作是相同的。

MFS :通过算法将数据切割成多个数据块存放在 chunk server ,而 master 将会这些记录存储。master不存储信息,它存储的是存储位。

在这里插入图片描述

MFS 读取数据的记录过程

  • 客户端向元数据服务器发出读请求。

  • 元数据服务器把所需数据存放的位置( Chunk Server 的 IP 地址和 Chunk 编号)告知客户端。

  • 客户端向己知的Chunk Server 请求发送数据。

  • Chunk Server 向客户端发送数据。

MFS 写入数据的处理过程

  • 客户端向元数据服务器发送写入请求。

  • 元数据服务器与 Chunk Server 进行交互(只有当所需的分块 Chunks 存在的时候才进行这个交互),但元数据服务器只在某些服务器创建新的分块 Chunks,创建成功后由 Chunk Servers 告知元数据服务器操作成功。

  • 元数据服务器告知客户端,可以在哪个 Chunk Server 的哪些 Chunks 写入数据。

  • 客户端向指定的Chunk Server 写入数据。

  • 该 Chunk Server 与其他 Chunk Server 进行数据同步,同步成功后 Chunk Server 告知客户端数据写入成功。

  • 客户端告知元数据服务器本次写入完毕。

部署 MFS 文件系统

案例环境

在这里插入图片描述

无论客户端还是服务端都只使用一个软件:mfs-1.6.27-5.tar.gz

搭建 master server

1 关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2 创建用户

useradd -M -s /sbin/nologin mfs

3 安装源码包

yum -y install gcc zlib-devel    # 安装依赖
tar xf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27/
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
make && make install

4 复制文件

cd /usr/local/mfs/etc/mfs/
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsexports.cfg.dist mfsexports.cfg
cp mfstopology.cfg.dist mfstopology.cfg

cd /usr/local/mfs/var/mfs
cp metadata.mfs.empty metadata.mfs

5 配置文件详解

  • mfsmaster.cfg为主配置文件
  • mfsexports.cfg是被挂载目录及权限配置文件

mfsmaster.cfg文件常用参数

# WORKING_USER = mfs    // 运行 masterserver 的用户
# WORKING_GROUP = mfs    // 运行 masterserver 的组
# SYSLOG_IDENT = mfsmaster    // 在 syslog 中表示是 mfsmaster 产生的日志
#							//masterserver 在 syslog 的标识,说明由 masterserver 产生的
# LOCK_MEMORY = 0    // 是否执行 mlockall(),以避免 mfsmaster 进程溢出;默认为0
# NICE_LEVEL = -19    // 运行的优先级(如果可以,默认是-19;注意,进程必须用 root 启动)

# EXPORTS_FILENAME = /usr/local/mfs/etc/mfs/mfsexports.cfg
#                 // 被挂载目录及其权限控制文件的存放位置
# TOPOLOGY_FILENAME = /usr/local/mfs/etc/mfs/mfstopology.cfg

# DATA_PATH = /usr/local/mfs/var/mfs    // 数据存放的路径

# BACK_LOGS = 50    //metadata 改变的 log 文件数目;默认为50
# BACK_META_KEEP_PREVIOUS = 1

# REPLICATIONS_DELAY_INIT = 300    // 初始延迟复制的时间;单位秒
# REPLICATIONS_DELAY_DISCONNECT = 3600    //chunkserver 断开后复制延迟;单位秒

# MATOML_LISTEN_HOST = *    //metalogger 监听的 IP 地址;*代表任何 IP 
# MATOML_LISTEN_PORT = 9419    //metalogger 监听的端口地址;9419为默认
# MATOML_LOG_PRESERVE_SECONDS = 600

# MATOCS_LISTEN_HOST = *    // 用于 chunkserver 连接的 IP 地址
# MATOCS_LISTEN_PORT = 9420    // 用于 chunkserver 连接的端口地址;默认9420

# MATOCL_LISTEN_HOST = *    // 用户客户端挂接连接的 IP 地址
# MATOCL_LISTEN_PORT = 9421    // 用于客户端挂接连接的端口地址;默认为9421

# CHUNKS_LOOP_MAX_CPS = 100000
# CHUNKS_LOOP_MIN_TIME = 300    //chunks 的回环频率

# CHUNKS_SOFT_DEL_LIMIT = 10
# CHUNKS_HARD_DEL_LIMIT = 25
# CHUNKS_WRITE_REP_LIMIT = 2    // 在一个循环里复制到一个 chunkserver 的最大 chunk 数
# CHUNKS_READ_REP_LIMIT = 10    // 在一个循环里从一个 chunkserver 复制的最大 chunk 数
# ACCEPTABLE_DIFFERENCE = 0.1

# SESSION_SUSTAIN_TIME = 86400
# REJECT_OLD_CLIENTS = 0

# deprecated:
# CHUNKS_DEL_LIMIT - use CHUNKS_SOFT_DEL_LIMIT instead
# LOCK_FILE - lock system has been changed, and this option is used only to search for old lockfile

mfsexports.cfg文件参数格式

# Allow everything but "meta".
*                       /       rw,alldirs,maproot=0

# Allow "meta".
*                       .       rw
————————————————————————————————————————————————
该文件的每一个条目分为三部分:
第一部分:客户端的 IP 地址
*  所有的IP地址
n.n.n.n  单个IP 地址
nn.n.n-IP  网络地址/位数掩码
n.n.n.n/m.m.m.m-IP  网络地址/子网掩码
fffft.t.t.t  IP段

第二部分:被挂接的目录
/  标识MFS根
.  表示 MFSMETA 文件系统

第三部分:客户端拥有的权限
ro  只读模式共享
rw  读写的方式共享
alldirs  允许挂载任何指定的子目录
admin  管理员权限
maproot  映射为root,还是指定的用户
Password  指定客户端密码

以上是对 Master Server 的 mfsmaster.cfgmfsexports.cfg 配置文件的解释,对于这两个文件不需要做任何修改就可以开始工作。

6 启动 master server

/usr/local/mfs/sbin/mfsmaster start 

在这里插入图片描述

# 停止 master server
/usr/local/mfs/sbin/mfsmaster -s

搭建 metalogger server

# 创建用户
[root@localhost ~]# useradd -M -s /sbin/nologin mfs
# 安装mfs
[root@localhost ~]# yum -y install gcc zlib-devel
[root@localhost ~]# tar xf mfs-1.6.27-5.tar.gz
[root@localhost ~]# cd mfs-1.6.27/
[root@localhost mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
[root@localhost mfs-1.6.27]# make && make install
# 编辑配置文件
[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/
[root@localhost mfs]# ll
总用量 20
-rw-r--r-- 1 root root 4060 628 12:07 mfsexports.cfg.dist
-rw-r--r-- 1 root root 1020 628 12:07 mfsmaster.cfg.dist
-rw-r--r-- 1 root root  417 628 12:07 mfsmetalogger.cfg.dist
-rw-r--r-- 1 root root 1123 628 12:07 mfstopology.cfg.dist
[root@localhost mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
[root@localhost mfs]# vim mfsmetalogger.cfg
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfsmetalogger
# LOCK_MEMORY = 0
# NICE_LEVEL = -19

# DATA_PATH = /usr/local/mfs/var/mfs

# BACK_LOGS = 50
# BACK_META_KEEP_PREVIOUS = 3
# META_DOWNLOAD_FREQ = 24

# MASTER_RECONNECTION_DELAY = 5

 MASTER_HOST = 192.168.153.145     // 修改为 master server 的 IP 地址
# MASTER_PORT = 9419

# MASTER_TIMEOUT = 60

# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfsmetalogger.lock
[root@localhost mfs]# /usr/local/mfs/sbin/mfsmetalogger start    // 启动 metalogger server
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly
[root@localhost mfs]# ps -ef | grep mfs
mfs       12616      1  0 14:14 ?        00:00:00 /usr/local/mfs/sbin/mfsmetalogger start
root      12621   7198  0 14:15 pts/0    00:00:00 grep --color=auto mfs
# metalogger server 的停止命令
/usr/local/mfs/sbin/mfsmetalogger -s

搭建 chunk server

两台 chunk server 的搭建步骤是相同的。

①建立独立的磁盘挂载到 ‘/data’ 目录,用于给 MFS 数据存储

[root@localhost ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sd[b-e]
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# fdisk -l

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00041e0c

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sde:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/md0:42.9 GB, 42914021376 字节,83816448 个扇区    # 建立 RAID 5 磁盘阵列成功
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):524288 字节 / 1048576 字节

[root@localhost ~]# mkfs.ext4 /dev/md0    // 格式化磁盘
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10477056 blocks
523852 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2157969408
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/md0 /data    // 挂载到 /data 目录
[root@localhost ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        17G  2.2G   15G   13% /
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.7M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  133M  882M   14% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/md0                ext4       40G   49M   38G    1% /data

②安装 mfs

[root@localhost ~]# useradd -M -s /sbin/nologin mfs
[root@localhost ~]# yum -y install gcc zlib-devel
[root@localhost ~]# tar xf mfs-1.6.27-5.tar.gz
[root@localhost ~]# cd mfs-1.6.27/
[root@localhost mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount  // 注意这里与前面不同
[root@localhost mfs-1.6.27]# make && make install
[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/
[root@localhost mfs]# ll
总用量 8
-rw-r--r-- 1 root root 531 628 11:36 mfschunkserver.cfg.dist
-rw-r--r-- 1 root root  57 628 11:36 mfshdd.cfg.dist
[root@localhost mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@localhost mfs]# cp mfshdd.cfg.dist mfshdd.cfg
[root@localhost mfs]# vim mfschunkserver.cfg
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfschunkserver
# LOCK_MEMORY = 0
# NICE_LEVEL = -19

# DATA_PATH = /usr/local/mfs/var/mfs

# MASTER_RECONNECTION_DELAY = 5

# BIND_HOST = *
 MASTER_HOST = 192.168.153.145    // 修改为 master server 的 IP 地址
# MASTER_PORT = 9420

# MASTER_TIMEOUT = 60

# CSSERV_LISTEN_HOST = *
# CSSERV_LISTEN_PORT = 9422

# HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg
# HDD_TEST_FREQ = 10

# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfschunkserver.lock
# BACK_LOGS = 50
# CSSERV_TIMEOUT = 5
[root@localhost mfs]# vim mfshdd.cfg
# mount points of HDD drives
#
#/mnt/hd1
#/mnt/hd2
#etc.
/data    # 添加一行 /data,在这里/data 是一个给 MFS 的分区

[root@localhost mfs]# chown -R mfs:mfs /data    // 需要给 /data 授权
[root@localhost 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: /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@localhost sbin]# ps -ef | grep mfs
mfs        7833      1  0 15:11 ?        00:00:00 ./mfschunkserver start
root       7859   7452  0 15:11 pts/0    00:00:00 grep --color=auto mfs
# 停止 chunk server 的命令
/usr/local/mfs/sbin/mfschunkserver -s

客户端配置

1 MFS 客户端依赖于 fuse

# 源码安装
[root@localhost ~]# tar xf fuse-2.9.7.tar.gz
[root@localhost ~]# cd fuse-2.9.7/
[root@localhost fuse-2.9.7]# ./configure
[root@localhost fuse-2.9.7]# make && make install
[root@localhost fuse-2.9.7]# echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" >> /etc/profile
[root@localhost fuse-2.9.7]# source /etc/profile

2 安装 MFS 客户端

[root@localhost ~]# tar xf mfs-1.6.27-5.tar.gz
[root@localhost ~]# cd mfs-1.6.27/
[root@localhost mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount
[root@localhost mfs-1.6.27]# make && make install

3 挂载 MFS 文件系统

[root@localhost ~]# mkdir /mnt/mfs    // 创建挂载点
[root@localhost ~]# modprobe fuse     // 加载fuse模块到内核
[root@localhost ~]# /usr/local/mfs/bin/mfsmount /mnt/mfs -H 192.168.153.145
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root          // 此时,client端写入的数据,就会以数据块的形式存在于chunk server上
[root@localhost ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        17G  5.8G   12G   34% /
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.7M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  133M  882M   14% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
192.168.153.145:9421    fuse.mfs   74G     0   74G    0% /mnt/mfs
[root@localhost mfs]# pwd
/mnt/mfs
[root@localhost mfs]# touch index.html

在这里插入图片描述

# 如果要卸载 MFS
umount /mnt/mfs

4 MFS 常用操作

MFS 在客户端安装完毕后,会生成 /usr/local/mfs/bin/ 目录,在这个目录下有很多命令是用户需要的,为了方便使用,需要优化路径

ln -s /usr/local/mfs/bin/* /usr/local/bin/

案例:查询文件被复制的次数

[root@localhost ~]# mfsgetgoal -r /mnt/mfs    // -r 对整个目录进行递归
/mnt/mfs:
 directories with goal  1 :          1    
			# goal 是指文件被复制的份数

案例:设置文件被复制的份数

在生产环境中,chunk server 节点数量应至少大于2,文件副本数量小于等于 chunk server 服务器的数量

[root@localhost ~]# mfssetgoal -r 3 /mnt/mfs
/mnt/mfs:					// 设置文件被复制的份数为3次
 inodes with goal changed:               1
 inodes with goal not changed:           0
 inodes with permission denied:          0
[root@localhost ~]# mfsgetgoal -r /mnt/mfs/
/mnt/mfs/:
 directories with goal  3 :          1
			# 再次查询文件被复制的份数,goal 的值已经改变

MFS 监控

Mfscgiserv 是用 python 编写的一个 Web 服务器,其监听端口是9425,可以在 Master Server 上通过命令 /usr/local/mfs/sbin/mfscgiserv 来启动,用户利用浏览器就可以全面监控所有客户挂载、Chunk Server、Master Server,以及客户端的各种操作等。

[root@localhost ~]# /usr/local/mfs/sbin/mfscgiserv
lockfile created and locked
starting simple cgi server (host: any, port: 9425, rootpath: /usr/local/mfs/share/mfscgi)

在客户端上通过浏览器访问master server的 IP 地址: http://192.168.153.145:9425

在这里插入图片描述

其中各部分的含义如下:
Info 部分:显示了 MFS 的基本信息
Servers 部分:列出现有 Chunk Server
Disks 部分:列出现有 Chunk Server 的硬盘信息。
Exports 部分:列出可被挂载的目录
Mounts 部分:列出被挂载的目录
Operations 部分:显示正在执行的操作
Resources 部分:列出当前存储信息
Quotas 部分:列出当前配额信息
Master Charts 部分:显示 Master Server 的操作情况,如读、写、删除等操作
Server Chats 部分:显示 Chunk Server 的操作情况、数据传输率及系统状态

MFS故障恢复

如果元数据节点宕机或异常导致 mfs-master 节点启动失败:

  • 尝试master节点进行/usr/local/mfs/sbin/mfsmetarestore -a恢复,成功则不丢失数据,若失败

  • 尝试使用 metalogger server 节点的/usr/local/mfs/var/mfs/metadata_ml.mfs.back,将它改名为metadata.mfs.back传到 master 节点相应数据目录,再进行mfsmetarestore -a恢复。成功则不丢失数据,若失败

在这里插入图片描述

  • 尝试使用log节点的所有 xxx_ml.xxxx 的数据文件,将它们改名为 xxx.xxx 传到master节点相应数据目录,最后进行mfsmetarestore -a恢复。确定会成功但数据最大丢失一个小时。。。。

强制使用 metadata.mfs.back 创建 metadata.mfs,可以启动 master,但应该会丢失1小时的数据。
mfs开发小组针对此问题回信:明确表示会丢失故障点到上一个整点之间的数据。因为对 mfs 的操作日志都记录到changelog.0.mfs里面。changelog.0.mfs每小时合并一次到metadata.mfs中,如果突然断电,则changelog.0.mfs里面的信息就没有合并到metadata中,强制使用metadata.mfs.back创建metadata.mfs,就会导致丢失changelog.0.mfs里的数据。

mfs故障模拟以数据恢复方式:

第一种:利用rsync+intofy实时备份 master 的 etc 和 var 文件下的所有数据到备服务器
第二种:利用 matelogger 来恢复,将 matelogger 的 var 目录下的数据上传到 master 服务器上
用命令来恢复数据

/usr/local/mfs/sbin/mfsmetarestore -m metadata_ml.mfs.back* -o  metadata.mfs changelog_ml*

第三种:将 matelogger 启用代替为 master,将 matelogger 停掉,用命令来恢复数据

/usr/local/mfs/sbin/mfsmetarestore -m metadata_ml.mfs.back* -o  metadata.mfs changelog_ml*

g.0.mfs里面。changelog.0.mfs每小时合并一次到metadata.mfs中,如果突然断电,则changelog.0.mfs里面的信息就没有合并到metadata中,强制使用metadata.mfs.back创建metadata.mfs,就会导致丢失changelog.0.mfs`里的数据。

mfs故障模拟以数据恢复方式:

第一种:利用rsync+intofy实时备份 master 的 etc 和 var 文件下的所有数据到备服务器
第二种:利用 matelogger 来恢复,将 matelogger 的 var 目录下的数据上传到 master 服务器上
用命令来恢复数据

/usr/local/mfs/sbin/mfsmetarestore -m metadata_ml.mfs.back* -o  metadata.mfs changelog_ml*

第三种:将 matelogger 启用代替为 master,将 matelogger 停掉,用命令来恢复数据

/usr/local/mfs/sbin/mfsmetarestore -m metadata_ml.mfs.back* -o  metadata.mfs changelog_ml*
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值