Heartbeat+DRBD+MFS高可用

                                         Heartbeat+DRBD+MFS高可用、

前言:MFS系统简介

组件名称及作用
管理服务器(Managing Server)  
简称Master Server
这个组件的角色是管理整个mfs文件系统的主服务器,除了分发用户请求外,还用来存储整个文件系统中的每个数据文件的metadata信息,metadata(元数据)信息包括文件(也可以是目录、socket、管道、设备等)的大小、属性、文件位置路径等,以及文件空间的回收和恢复,控制多chunk server节点的数据拷贝。很类似lvs负载均衡主服务器,不同的是lvs仅仅根据算法分发请求,而master根据内存里的metadata信息来分发请求。这个master只能有一台处于激活工作的状态。

 

元数据备份服务器(Metadata backup servers)
简称metalogger Server
这个组件的作用是备份管理服务器master的变化的metadata信息日志文件,文件类型为changelog_ml.*.mfs,以便于在主服务器出现问题的时候,可以经过简单的操作即可让新主服务器进行工作。这很类似Mysql的主从同步,只不过他不像mysql从库那样在本地应用数据,而只是接收主服务器上文件写入时记录的文件相关的metadata信息。这个backup可以有一台或多台,它很类似于lvs从负载均衡器。

 

数据存储服务器组(Data Servers)
简称Chunk Servers
这个组件就是真正存放数据文件实体的服务器了,这个角色可以有多台不同的物理服务器或不同的磁盘及分区来充当,当配置数据的副本多于一份时,剧写入到一个数据服务器后,会根据算法在其他数据服务器上进行同步备份。这个很像lvs集群的rs节点。

 

客户机服务器组
Client
这个组件就是挂载并使用mfs文件系统的客户端,当读写文件时,客户端首先连接主管理服务器获取数据的metadata信息,然后根据得到的metadata信息,访问数据服务器读取或写入文件实体。mfs客户端通过FUSE mechanism实现挂载MFS文件系统的。因此,只要系统支持FUSE,就可以作为客户端访问MFS整个文件系统。所谓的客户端并不是网站用户,而是前端访问文件系统的应用服务器,如web
 
 
优点:
1.轻量、易配置、易维护
2.开发活跃,社区也比较活跃,资料丰富
3.扩容成本低,支持在线扩容,不影响业务
4.以文件系统的方式展示,虽然存储在chunkserver上的数据是二进制文件,但是挂载在client端仍以图片和文件形式展示,便于数据备份
5.硬盘利用率高
6可设置文件回收站,避免误删除文件丢失
7.系统负载,即数据读写分配到所有的服务器上
8.可以设置文件副本,官方建议三份以上
缺点:
1.master是单点,需要做高可用
2.master对内存要求略高
3.metalogger复制元数据时间间隔较长

 

 

一、配置基本环境及准备

系统及版本:centos6.6—x86_64
 
角色         IP地址           主机名
mfs-master     eth0:10.1.1.243     mfsmaster 两块磁盘
虚IP         eth0:0:10.1.1.111     mfs-master
           eth1:192.168.1.8     心跳线直连IP
mfs-backup     eth0:10.1.1.244     mfsbackup 两块磁盘
          eth1:192.168.1.7      heartbeat 心跳线直连IP
data-server1    eth0:10.1.1.245     mfsdata01 两块磁盘
data-server2    eth0:10.1.1.246     mfsdata02 两块磁盘
data-server3    eth0:10.1.1.247     mfsdata03 两块磁盘
mfs-client      eth0:10.1.1.248      mfslient 
mfs-meatlogger   eth0:10.1.1.248(和client同一台主机)
data服务器官方建议单台以上,副本个数3个以上
hosts文件:

10.1.1.243   mfsmaster
10.1.1.111   mfs-master
10.1.1.244   mfs-backup
10.1.1.245   mfs-data01
10.1.1.246   mfs-data02
10.1.1.247   mfs-data03
10.1.1.248   mfs-client01

其他准备:

更改主机名,主机名要与 uname -n 命令结果一致
关闭selinux和iptables
配置好yum源、epel源
时间同步 ,最好做定时任务
配置hosts文件

 

 

二、安装heartbeat服务

1)配置心跳线连接

master:
[root@mfsmaster ~]#/sbin/route add -host 192.168.1.7 dev eth1
[root@mfsmaster ~]#echo "/sbin/route add -host 192.168.1.7 dev eth1" >>/etc/rc.local 

slave:
[root@mfsmaster ~]#/sbin/route add -host 192.168.1.8 dev eth1
[root@mfsmaster ~]#echo "/sbin/route add -host 192.168.1.8 dev eth1" >>/etc/rc.local 
2)安装、配置heartbeat软件(slave端与master端相同)

 slave 与master配置项相同

[root@mfsmaster drbd.d]#yum install heartbeat -y
[root@mfsmaster drbd.d]#cd  /usr/share/doc/heartbeat-3.0.4/ &&  cp ha.cf haresources authkeys /etc/ha.d/
[root@mfsmaster ha.d]#cd  /etc/ha.d/ && chmod 600 authkeys
[root@mfsmaster ha.d]# cp ha.cf ha.cf-bak
[root@mfsmaster ha.d]# grep "^[a-Z]" ha.cf 
debugfile /var/log/ha-debug
logfile    /var/log/ha-log
logfacility    local1
keepalive 2  #发送心跳信息间隔
deadtime 30  #节点没有应答后,过多长时间死亡
warntime 10  #节点没有应答后,过多长时间告警
initdead 60  #多长时间启动节点资源
mcast eth1 225.0.0.181 694 1 0 #多播地址通讯,心跳网卡配置
auto_failback on    #回复后是否重新为master,生产环境可以关闭
node    mfsmaster  #节点名称
node    mfsbackup
[root@mfsmaster ha.d]# cp haresources haresources-bak
[root@mfsmaster ha.d]# grep "^[a-Z]" haresources
 mfsmaster IPaddr::10.1.1.111/24/eth0  #VIP地址

[root@mfsmaster ha.d]#cp authkeys authkeys-bak
[root@mfsmaster ha.d]#grep "^[0-9a-Z]" authkeys 
auth 1
1 sha1 dc8d9af580c6847d54ef276c8bc25471


[root@mfsmaster ha.d]#chkconfig heartbeat off
[root@mfsmaster ha.d]#/etc/init.d/heartbeat start 开启服务
[root@mfsmaster ha.d]# ip a|grep eth0
 
三、安装DRBD(slave端与master端相同)

 1)添加磁盘,分区

fdisk /dev/sdb #添加一块磁盘,一个data分区,需要大空间,一个meat date分区,生产环境1-2G
partprobe      #同步
mkfs.ext4 /dev/sdb1   注:meat date分区一定不能格式化创建文件系统,分区现在不能挂载
tune2fs -c -1 /dev/sdb1
2)编译安装
wget http://www.linbit.com/downloads/drbd/8.4/archive/drbd-8.4.4.tar.gz
tar xf drbd-8.4.4.tar.gz && cd drbd-8.4.4&& ll
./configure --prefix=/usr/local/drbd-8.4 --with-km  --with-heartbeat --sysconfdir=/etc/
ls -ld  /usr/src/kernels/$(uname -r)  #如果不存在yum安装kernel-devel包
make KDIR=/usr/src/kernels/$(uname -r)
make install
modprobe drbd
lsmod |grep drbd
echo "/sbin/modprobe  drbd " >> /etc/rc.local 
3)配置资源

cat  /etc/drbd.conf
global {
        usage-count no;
}
common {
    syncer {
        rate 100M;
        verify-alg crc32c;
  }
}

resource data {
    protocol C;

    disk {
        on-io-error    detach;
    }

    on  mfsmaster {
        device /dev/drbd0;
        disk  /dev/sdb1;
        address 10.1.1.243:7788;
        meta-disk /dev/sdb2[0];
    }
     on mfsbackup {
        device /dev/drbd0;
        disk  /dev/sdb1;
        address 10.1.1.244:7788;
        meta-disk /dev/sdb2[0];  #使用drbd外部模式,还有另外一种内部模式
    }
}
4)启动服务
[root@mfsmaster drbd.d]#mkdir -p /usr/local/drbd-8.4/var/run/drbd #或根据下一条命令的提示创建
[root@mfsmaster drbd.d]#drbdadm create-md data #与resource data名称一致或者all 代表所有资源
[root@mfsmaster drbd.d]#drbdadm up data [root@mfsmaster drbd.d]#cat
/proc/drbd
  

5)drbd数据同步
master端:
[root@mfsmaster drbd.d]#drbdadm -- --overwrite-data-of-peer primary data  
注意:
1.如果硬盘为空,可以随意操作
2.如果两边硬盘数据不一致,会丢失数据

[root@mfsmaster drbd.d]#cat /proc/drbd #可以看到数据同步的进度
  
  [root@mfsmaster drbd.d]#cat /proc/drbd #同步完成后,主从状态发生变化,标记三个分别代表:1.是否连接状态 2.角色状态,前面的使自己角色状态 3.是否更新完成
  
slave端:
[root@mfsmaster drbd.d]#cat /proc/drbd #查看状态是否与master端一致
master端:
[root@mfsmaster drbd.d]#mkdir /usr/local/mfs #mfs安装目录
[root@mfsmaster drbd.d]#mount /dev/drbd0 /usr/local/mfs # 挂载的是drbd的逻辑设备
[root@mfsmaster drbd.d]#df -h
[root@mfsmaster drbd.d]#cd /usr/local/mfs
[root@mfsmaster drbd.d]#touch {1..10}.txt #创建测试数据
 
slave端:
[root@mfsmaster drbd.d]#drbdadm down data
[root@mfsmaster drbd.d]#mount /dev/sdb1 /mnt #必须先把drbd停掉才能挂载,因为drbd up状态下也会挂载
[root@mfsmaster drbd.d]#ll /mnt/ #查看数据是否同步
[root@mfsmaster drbd.d]#umount /mnt
[root@mfsmaster drbd.d]#drbdadm up data
[root@mfsmaster ~]# sed -i 's#^PATH.*$#&:/usr/local/drbd-8.4/sbin/#g' /root/.bash_profile && . /root/.bash_profile #配置环境

 

 四、heartbeat+drbd结合
master端(slave端同master端):
chkconfig drbd  off #yum 安装情况下
/etc/init.d/heartbeat stop
[root@data-1-1 /]# cat /etc/ha.d/haresources
mfsmaster IPaddr::10.1.1.111/24/eth0 drbddisk::data Filesystem::/dev/drbd0::/usr/local/mfs::ext4
/etc/init.d/heartbeat start
查看资源信息
master端:
[root@mfsmaster ~]# ip a|grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.1.1.243/24 brd 10.1.1.255 scope global eth0
    inet 10.1.1.111/24 brd 10.1.1.255 scope global secondary eth0
[root@mfsmaster ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        15G  3.0G   11G  22% /
tmpfs           176M     0  176M   0% /dev/shm
/dev/sda1       190M   27M  153M  16% /boot
/dev/sda3       2.9G  4.5M  2.7G   1% /home
/dev/drbd0      1.5G  2.3M  1.4G   1% /usr/local/mfs
[root@mfsmaster ~]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@mfsmaster, 2017-10-18 17:00:38
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:1542212 nr:0 dw:4 dr:1542882 al:1 bm:95 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
slave
[root@mfsbackup drbd.d]# ip a|grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.1.1.244/24 brd 10.1.1.255 scope global eth0
[root@mfsbackup drbd.d]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        15G  3.0G   11G  22% /
tmpfs           176M     0  176M   0% /dev/shm
/dev/sda1       190M   27M  153M  16% /boot
/dev/sda3       2.9G  4.5M  2.7G   1% /home
[root@mfsbackup drbd.d]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@mfsbackup, 2017-10-18 17:00:38
 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
    ns:0 nr:1542212 dw:1542212 dr:0 al:0 bm:95 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
测试配置是否生效
master端:
/etc/init.d/heartbeat stop
查看master和slave端VIP、drbd主从状态以及挂载点状态
master端:
[root@mfsmaster ~]# ip a|grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.1.1.243/24 brd 10.1.1.255 scope global eth0
[root@mfsmaster ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        15G  3.0G   11G  22% /
tmpfs           176M     0  176M   0% /dev/shm
/dev/sda1       190M   27M  153M  16% /boot
/dev/sda3       2.9G  4.5M  2.7G   1% /home
[root@mfsmaster ~]# !cat
cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@mfsmaster, 2017-10-18 17:00:38
 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
    ns:1542216 nr:4 dw:12 dr:1542882 al:1 bm:95 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
slave端:
[root@mfsbackup drbd.d]# ip a|grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.1.1.244/24 brd 10.1.1.255 scope global eth0
    inet 10.1.1.111/24 brd 10.1.1.255 scope global secondary eth0
[root@mfsbackup drbd.d]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        15G  3.0G   11G  22% /
tmpfs           176M     0  176M   0% /dev/shm
/dev/sda1       190M   27M  153M  16% /boot
/dev/sda3       2.9G  4.5M  2.7G   1% /home
/dev/drbd0      1.5G  2.3M  1.4G   1% /usr/local/mfs
[root@mfsbackup drbd.d]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@mfsbackup, 2017-10-18 17:00:38
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:4 nr:1542216 dw:1542220 dr:674 al:1 bm:95 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
可以看到,VIP、挂载和DRBD状态在slave上生效
[root@mfsmaster ~]# /etc/init.d/heartbeat start #查看主恢复后是否可以自动接管

五、搭建mfs集群

1) master 主服务器安装配置

[root@mfsmaster ~]# groupadd -g 1000 mfs  && useradd -g mfs -u 1000 mfs -s /sbin/nologin                        
[root@mfsmaster ~]#yum install fuser* zlib* -y 
[root@mfsmaster ~]# tar xf mfs-1.6.27-5.tar.gz    #文件在左侧
[root@mfsmaster ~]# cd mfs-1.6.27
[root@mfsmaster mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs 
[root@mfsmaster mfs-1.6.27]# make && make install
[root@mfsmaster mfs-1.6.27]# chown -R mfs.mfs /usr/local/mfs
[root@mfsmaster mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/
[root@mfsmaster mfs]# ll
总用量 24
-rw-r--r--. 1 root root  545 10月 13 20:20 mfschunkserver.cfg.dist
-rw-r--r--. 1 root root 4060 10月 13 20:20 mfsexports.cfg.dist
-rw-r--r--. 1 root root   57 10月 13 20:20 mfshdd.cfg.dist
-rw-r--r--. 1 root root 1041 10月 13 20:20 mfsmaster.cfg.dist
-rw-r--r--. 1 root root  424 10月 13 20:20 mfsmetalogger.cfg.dist
-rw-r--r--. 1 root root 1123 10月 13 20:20 mfstopology.cfg.dist

2)配置master

[root@mfsmaster mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg  #主配置文件
[root@mfsmaster mfs]# cp mfsexports.cfg.dist mfsexports.cfg #共享目录的挂载、权限设置
[root@mfsmaster mfs]# egrep -v "^#|^$" mfsexports.cfg #修改export配置文件,结果如下
10.1.1.0/24            /    rw,alldirs,maproot=mfs:mfs,password=111111
*            .    rw

[root@mfsmaster mfs]# cd /usr/local/mfs/var/mfs/
[root@mfsmaster mfs]# cp metadata.mfs.empty metadata.mfs
[root@mfsmaster mfs]# /usr/local/mfs/sbin/mfsmaster start  #启动服务,-s或者 stop 停止服务
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfsmaster modules ...
loading sessions ... file not found
if it is not fresh installation then you have to restart all active mounts !!!
exports file has been loaded
mfstopology configuration file (/usr/local/mfs/etc/mfstopology.cfg) not found - using defaults
loading metadata ...
create new empty filesystemmetadata file has been loaded
no charts data file - initializing empty charts
master <-> metaloggers module: listen on *:9419
master <-> chunkservers module: listen on *:9420
main master server module: listen on *:9421
mfsmaster daemon initialized properly
查看结果:
[root@mfsmaster ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      944/sshd
tcp        0      0 0.0.0.0:9419                0.0.0.0:*                   LISTEN      12060/mfsmaster
tcp        0      0 0.0.0.0:9420                0.0.0.0:*                   LISTEN      12060/mfsmaster
tcp        0      0 0.0.0.0:9421                0.0.0.0:*                   LISTEN      12060/mfsmaster
tcp        0      0 :::22                       :::*                        LISTEN      944/sshd
[root@mfsmaster ~]# ps -elf|grep mfs
5 S mfs       12060      1  0  61 -19 - 27401 poll_s 17:42 ?        00:00:01 /usr/local/mfs/sbin/mfsmaster start
0 S root      14351   7189  0  80   0 - 25816 pipe_w 17:57 pts/0    00:00:00 grep mfs


[root@mfsmaster mfs]#  sed -i 's#^PATH.*$#&:/usr/local/mfs/sbin/#g' /root/.bash_profile   #添加mfs命
[root@mfsmaster ~]# cd 
[root@mfsmaster ~]# . .bash_profile
[root@mfsmaster ~]# echo " /usr/local/mfs/sbin/mfsmaster start" >> /etc/rc.local #开机自启动
[root@mfsmaster ~]# mfsmaster stop
[root@mfsmaster ~]# cp /usr/local/mfs/sbin/mfsmaster /etc/init.d/ 
[root@mfsmaster ~]# umount /usr/local/mfs/

 

六、mfs-slave配置

因为mfs-slave是使用的drbd,所以我们只需要中一些简单的操作就可以启动mfs了
#让DRBD设备下线
[root@mfsbackup ~]#   drbdadm down data
[root@mfsbackup ~]#  mkdir -p /usr/local/mfs
[root@mfsbackup ~]#  mount /dev/sdb1 /usr/local/mfs
[root@mfsbackup ~]#  cp /usr/local/mfs/sbin/mfsmaster /etc/init.d/
[root@mfsbackup ~]# /etc/init.d/mfsmaster start
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfsmaster modules ...
loading sessions ... ok
sessions file has been loaded
exports file has been loaded
mfstopology configuration file (/usr/local/mfs/etc/mfstopology.cfg) not found - using defaults
loading metadata ...
loading objects (files,directories,etc.) ... ok
loading names ... ok
loading deletion timestamps ... ok
loading chunks data ... ok
checking filesystem consistency ... ok
connecting files and chunks ... ok
all inodes: 1
directory inodes: 1
file inodes: 0
chunks: 0
metadata file has been loaded
stats file has been loaded
master <-> metaloggers module: listen on *:9419
master <-> chunkservers module: listen on *:9420
main master server module: listen on *:9421
mfsmaster daemon initialized properly
[root@mfsbackup ~]# netstat -tnpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      944/sshd
tcp        0      0 0.0.0.0:9419                0.0.0.0:*                   LISTEN      12323/mfsmaster
tcp        0      0 0.0.0.0:9420                0.0.0.0:*                   LISTEN      12323/mfsmaster
tcp        0      0 0.0.0.0:9421                0.0.0.0:*                   LISTEN      12323/mfsmaster
tcp        0      0 :::22                       :::*                        LISTEN      944/sshd

#关闭服务 [root@mfsbackup
~]# /etc/init.d/mfsmaster stop sending SIGTERM to lock owner (pid:12323) waiting for termination ... terminated #配置环境变量 [root@mfsbackup ~]# sed -i 's#^PATH.*$#&:/usr/local/mfs/sbin/#g' .bash_profile && . .bash_profile [root@mfsbackup ~]# sed -i 's#^PATH.*$#&:/usr/local/drbd-8.4/sbin/#g' /root/.bash_profile && . /root/.bash_profile #最后将文件系统卸载,让DRBD上线 [root@mfsbackup ~]# umount /usr/local/mfs/ [root@mfsbackup ~]# drbdadm up data
配置heartbeat管理相关服务

将mfs服务交给heartbeat管理(slave同master相同)
[root@mfsmaster ha.d]# cat haresources
mfsmaster IPaddr::10.1.1.111/24/eth0 drbddisk::data Filesystem::/dev/drbd0::/usr/local/mfs::ext4 mfsmaster
#停止mfs-master的heartbeat服务 
[root@mfsmaster ha.d]# /etc/init.d/heartbeat stop
Stopping High-Availability services: Done.
查看master资源是否转移
 [root@mfsmaster ~]# cat /proc/drbd
[root@mfsmaster ~]# df -h
[root@mfsmaster ~]# ip a


#查看mfs-slave的信息
[root@mfsbackup drbd.d]# ip a|grep eth0
[root@mfsbackup drbd.d]# df -h
[root@mfsbackup drbd.d]# cat /proc/drbd

 

 七、安装数据服务器 data server(chunk server)

软件安装步骤同上
root@mfsdata01 mfs]# fdisk /dev/sdb
........
root@mfsdata01 mfs]# partprobe 
[root@mfsdata01 mfs]# mkfs.ext4 /dev/sdb1 
[root@mfsdata01 mfs]# tune2fs -c -1 /dev/sdb1
[root@mfsdata03 mfs]# mkdir /data/mfsdata -p
[root@mfsdata01 mfs]# chown -R mfs.mfs /data/mfsdata
[root@mfsdata02 mfs]# mount /dev/sdb1  /data/mfsdata
[root@mfsdata02 mfs]# df -h
[root@mfsdata01 mfs]# grep /dev/sdb1 /etc/fstab  
/dev/sdb1        /data/mfsdata        ext4    defaults    0 0
[root@mfsdata01 mfs]# umount /data/mfsdata/  #测试配置语法是否有错误
[root@mfsdata01 mfs]# mount -a
[root@mfsdata01 mfs]# df -h
[root@mfsdata01 mfs]# cd /usr/local/mfs/etc/mfs/
[root@mfsdata01 mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg && cp mfshdd.cfg.dist mfshdd.cfg
[root@mfsdata01 mfs]# grep "^MASTER" mfschunkserver.cfg #指定master地址
MASTER_HOST = mfsmaster.etiantian.org
[root@mfsdata01 mfs]# grep -v "^#"  mfshdd.cfg  #配置数据目录
/data/mfsdata
[root@mfsdata01 mfs]# /usr/local/mfs/sbin/mfschunkserver start
[root@mfsdata01 mfs]# lsof -i:9422
[root@mfsdata01 mfs]# ll /data/mfsdata/
[root@mfsdata01 mfs]# echo "/usr/local/mfs/sbin/mfschunkserver start" >> /etc/rc.local 
#三台data server 操作步骤相同
[root@mfsdata01 mfs]# df -h
 
开启主服务器图形监控
[root@mfsmaster ~]# mfscgiserv start
http://192.168.1.17:9425/mfs.cgi   #访问url路径
查看监控图
df -h 大小和监控图大小有差异是因为每次master会向date服务器默认申请4个chunk空间,每个chunk空间默认大小为64M,即总共256M磁盘空间
 
#测试:将mfs-master的heartbeat服务停止
[root@mfsmaster ~]# /etc/init.d/heartbeat stop
Stopping High-Availability services: Done.
 
#在mfs-slave上查看连接信息
[root@localhost mfs]# netstat -anpt |grep mfs
tcp 0 0 0.0.0.0:9422 0.0.0.0:* LISTEN 8329/mfschunkserver
tcp 0 0 10.1.1.245:30654 10.1.1.111:9420 ESTABLISHED 8329/mfschunkserver
#可以看到mfs-chun一直处于连接状态
 
#最后配置环境变量
[root@localhost ~]# sed -i 's#^PATH.*$#&:/usr/local/mfs/sbin#g' .bash_profile && . .bash_profile

 

八、安装配置客户端服务器(client)和backup(meatlogger)服务器

客户端服务器(client)安装配置:

[root@mfsclient ~]# yum install fuse*  -y #client端依赖fuse模块
安装mfs,操作同上
[root@mfsclient01 ~]# modprobe fuse
[root@mfsclient01 ~]# lsmod|grep fuse
fuse                   79956  0
[root@mfsclient mfs]# ll /usr/local/mfs/bin/
[root@mfsclient ~]# echo "modprobe fuse" >> /etc/rc.local 
[root@mfsclient mfs]# cd 
[root@mfsclient ~]# grep -i ^path .bash_profile #配置命令环境变量
PATH=$PATH:$HOME/bin:/usr/local/mfs/bin/
[root@mfsclient ~]#.  .bash_profile
[root@mfsclient ~]# mkdir /mnt/mfs  #工作中此目录应为应用服务器实际数据目录
[root@mfsclient ~]# chown -R mfs.mfs /mnt/mfs
[root@mfsclient ~]# mfsmount /mnt/mfs -H mfs-master -o mfspassword=111111   #或者使用-p交互式输入密码,具体可以查看命令帮助 --help
 mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to mfs:mfs
[root@mfsclient01 ~]# df -h
Filesystem       Size  Used Avail Use% Mounted on
/dev/sda2         15G  2.9G   11G  21% /
tmpfs            153M     0  153M   0% /dev/shm
/dev/sda1        190M   27M  153M  16% /boot
/dev/sda3        2.9G  4.5M  2.7G   1% /home
mfs-master:9421  3.3G     0  3.3G   0% /mnt/mfs


backup(meatlogger)服务器安装配置:
安装方式同master一样,忽略。。。
[root@mfsclient01 mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/
[root@mfsclient01 mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
[root@mfsclient01 mfs]# grep "MASTER_HOST"  mfsmetalogger.cfg
MASTER_HOST =  mfs-master #修改master为master VIP对应的域名(IP也可以)
[root@mfsclient01 mfs]# telnet mfsmaster.etiantian.org 9419 #测试9419端口是否打开,命令没有直接yum安装 
[root@mfsclient01 mfs]# /usr/local/mfs/sbin/mfsmetalogger start
[root@mfsclient01 mfs]# lsof -i:9419
[root@mfsclient01 ~]# lsof -i:9419 #master端查看
[root@mfsbackup mfs-1.6.27]# ll /usr/local/mfs/var/mfs/  #元数据、日志存放路径
总用量 12
-rw-r-----. 1 mfs  mfs   0 10月 13 14:51 changelog_ml_back.0.mfs
-rw-r-----. 1 mfs  mfs   0 10月 13 14:51 changelog_ml_back.1.mfs
-rw-r--r--. 1 root root  8 10月 13 2017 metadata.mfs.empty
-rw-r-----. 1 mfs  mfs  95 10月 13 14:51 metadata_ml.mfs.back
-rw-r-----. 1 mfs  mfs  10 10月 13 14:56 sessions_ml.mfs
[root@mfsclient01 mfs-1.6.27]# echo "/usr/local/mfs/sbin/mfsmetalogger start" >> /etc/rc.local 
[root@mfsclient01 ~]#vim .bash_profile   #添加mfs命令路径
切换hearbeat主从,查看slave端是否可以正常接收资源,client是否可以正常挂载、读取和写入,这里就不一一测试了

 

 九、其他杂项

1)测试写入删除操作

测试操作前观察master、backup以及data服务器发生的变化
[root@mfsmaster ~]# ll /usr/local/mfs/var/mfs/
[root@mfsbackup ~]# ll /usr/local/mfs/var/mfs/
[root@mfsdata03 mfsdata]# find /data/mfsdata/  -type f

[root@mfsclient ~]# cd /mnt/mfs/
[root@mfsclient mfs]# ll
总用量 0
[root@mfsclient mfs]# echo 123456 > my.txt  #测试的文件必须有数据,不能为空文件
[root@mfsclient mfs]# for i in {1..9};do cp /bin/cat $i;done
[root@mfsclient mfs]# ll

对比操作后发生的变化
[root@mfsmaster ~]# ll /usr/local/mfs-1.6.27/var/mfs/
[root@mfsbackup ~]# ll /usr/local/mfs-1.6.27/var/mfs/
[root@mfsdata03 mfsdata]# find /data/mfsdata/  -type f

 

2)查看和设置文件副本个数

查看:
[root@mfsclient01 panwenbin]# mfsfileinfo my.txt my.txt: chunk
0: 0000000000000011_00000001 / (id:17 ver:1) copy 1: 10.1.1.245:9422 copy 2: 10.1.1.246:9422 copy 3: 10.1.1.247:9422
设置
[root@mfsclient mfs]# mfssetgoal -r 3 /mnt/mfs/ #工作中可以根据目录的重要性做不同个数的副本

 

3)查看及设置文件删除后的清理时间

[root@mfsclient panwenbin]# mfsgettrashtime 100M.img #查看回收时间, 默认是一天
[root@mfsclient panwenbin]# mfssettrashtime -r 1200 /mnt/mfs/panwenbin/ #自定义回收时间

 

4)还原被删除文件

[root@mfsclient panwenbin]# mkdir  /mnt/mfs-trash
[root@mfsclient panwenbin]# mfsmount -H mfsmaster.etiantian.org -m /mnt/mfs-trash/
[root@mfsclient panwenbin]# ll /mnt/mfs-trash/  
#该目录有两个文件,reserved目录存放的是已删除但是用户还在打开的文件,用户关闭后数据将被删除,该目录不能进行操作。trash目录存放的是已删除的文件  trash/undel 是数据还原目录
 
[root@mfsclient panwenbin]# rm -f test #删除一个文件
[root@mfsclient panwenbin]# ll /mnt/mfs-trash/trash #删除文件在 /mnt/mfs-trash/trash目录下
[root@mfsclient panwenbin]# ll #恢复前查看数据目录还在打开的文件
[root@mfsclient panwenbin]# mv /mnt/mfs-trash/trash/0000000E\|panwenbin\|test /mnt/mfs-trash/trash/undel/ #进行还原操作,也就是将被删除文件移动到undel目录下
[root@mfsclient panwenbin]# ll #再次查看被删除文件恢复了

写的不好请多包涵!!!

 
 
 
 

 

posted @ 2017-10-19 22:05  百衲本  阅读(776)  评论(0编辑  收藏  举报
cnblogs_post_body { color: black; font: 0.875em/1.5em "微软雅黑" , "PTSans" , "Arial" ,sans-serif; font-size: 15px; } cnblogs_post_body h1 { text-align:center; background: #333366; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 23px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h2 { text-align:center; background: #006699; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 20px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h3 { background: #2B6695; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 18px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } 回到顶部 博客侧边栏 回到顶部 页首代码 回到顶部 页脚代码