天天看点

mfs文件系统与分布式存储的高可用

什么是MFS文件系统:

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

MooseFS文件系统结构包括一下四种角色:

    1.管理服务器master

    管理服务器:负责各个数据存储服务的管理文件读写调度,文件空间回收以及恢复,多节点拷贝

    2.元数据日志服务器:

    负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出现问题的时候解体器 进行工作

    3.数据存储服务器data server(chunk servers)

    真正存储用户数据的服务器存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间赋值(复制份数可以手工指定,建议设置副本数为数据服务器可以为多个,并且数据越多,可使用的“磁盘空间越大,”可靠性也越高

    4.客户端挂在 使用clinet computers

    使用MFS文件系统来存储和访问的主机名称为MFS的客户端,成功挂载MFS系统以后,就可以像以前NFS一样共享这个虚拟性的存储了。

#####moosefs分布式存储

###重新开启虚拟机,环境要干净

mirror  /pub/docs/mfs/3.0.97

cd    3.0.97

Yum  install moosefs-cgi-3.0.80-1.x86_64.rpm moosefs-cgiserv-3.0.80-1.x86_64.rpm moosefs-master-3.0.80-1.x86_64.rpm -y

mfs文件系统与分布式存储的高可用

Vim /etc/hosts

172.25.17.1 server1  mfsmaster

mfs文件系统与分布式存储的高可用

/etc/init.d/moosefs-master  start

mfs文件系统与分布式存储的高可用

netstat  -antlupe ##会有好几个端口打开

scp  moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm  server2:

scp  moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm  server3:

###在server2俩面做

yum  install moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm

mfs文件系统与分布式存储的高可用

vim  /etc/hosts

172.25.17.1 server1  mfsmaster

mfs文件系统与分布式存储的高可用

mkdir  /mnt/chunk1

cd  /mnt

ll

chown -R  mfs.mfs  chunk1/

mfs文件系统与分布式存储的高可用

cd  /etc/mfs

vim mfshdd.cfg

##在最后添加 /mnt/chunk1

mfs文件系统与分布式存储的高可用

/etc/init.d/moosefs-chunkserver  start

cd   /mnt/chunk1

ls   

ls  |  wc  -l  ##一共有256行

mfs文件系统与分布式存储的高可用

##z在server3俩面做

yum  install moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm

vim  /etc/hosts

172.25.17.1 server1  mfsmaster

mkdir  /mnt/chunk2

chown   -R   mfs.mfs  /mnt/chunk2/

vim   /etc/mfs/mfshdd.cfg

##在最后添加 /mnt/chunk2

/etc/init.d/moosefs-chunkserver  start

###在物理机中做,也就是客户端做

yum  install  moosefs-client-3.0.97-1.rhsystemd.x86_64

cd   /etc/mfs

vim  mfsmount.cfg

打开注释/mnt/mfs

mkdir  /mnt/mfs

cd  /mnt/mfs

mfsmount  ##执行挂在命令

df  ##查看是否挂在上

mfs文件系统与分布式存储的高可用

vim  /etc/hosts

172.25.17.1  server1  mfsmaster

cd   /mnt/mfs

mkdir  dir1  dir2

mfsgetgoal  dir1/    ##都是两份存储

mfsgetgoal  dir2/

mfssetgoal  -r  1 dir1/  ##将dir1的存储删除一份

mfsgetgoal  dir1/    ##再次查看

mfsgetgoal  dir2/

mfs文件系统与分布式存储的高可用

cd  dir1

cp   /etc/passwd  .

mfsfileinfo  passwd    ###查看他们存储在那个后端设备里

cd  ..

cd dir2

cp  /etc/fstab  .

mfsfileinfo    fstab

mfs文件系统与分布式存储的高可用

###停掉他们存储的后端设备

/etc/init.d/moosefs-chunkserver  stop

##在去物理机里面做

cd  ..

cd  dir1/

mfsfileinfo    passwd   ###发现不能查看了

mfs文件系统与分布式存储的高可用

##在server1里面做

/etc/init.d/moosefs-cgiserv  start   ##开启cgi服务,可以去浏览器检查

##取浏览器检查

http://172.25.17.1:9425  

mfs文件系统与分布式存储的高可用

###当文件太大的时候,我们可以分别存储在物理机中做,因为块的容量为64M

cd    /mnt/mfs/dir2

dd  if=/dev/zero  of=bigfile  bs=1M  count=100

mfsfileinfo  bigfile  ##可以看见存储了4分

cd ..

cd  dir1/

dd  if=/dev/zero  of=bigfile bs=1M count=100

mfsfileinfo  bigfile

mfs文件系统与分布式存储的高可用

####数据丢失在物理机中做

mfsgettrashtime  passwd   #产看恢复时间

cd  /mnt/mfs/dir1

rm  -fr  passwd

mkdir  /mnt/mfsmeta  ##源数据的位置

mfs文件系统与分布式存储的高可用

ls

####在server1里面做

cd  /etc/mfs

cat  mfsmaster.cfg

####在物理机中做

mfsmount  -m  /mnt/mfsmeta

mount  #检查挂上去了没

cd   /mnt/mfsmeta

ls

cd  trash

ls

find  -name  *passwd*

cd  ./004/

ls

mv   0000004\|dir1\|passwd  undel/

ls   ##只有着一个目录 undel

mfs文件系统与分布式存储的高可用

cd  /mnt/mfs/dir1

ls

cat passwd  ##发现数据恢复了

###在server1里面做

cd   /var/lib/mfs

ll

/etc/init.d/moosefs-master  stop   ##让服务停掉

ll   ##我们发现metadata.mfs.back  文件不见了,出现了metadata.mfs 文件

mfs文件系统与分布式存储的高可用

/etc/init.d/moosefs-master  start

ll  ##metadata.mfs.back文件又出现了

mfs文件系统与分布式存储的高可用

ps ax

kill  -9  ##进程号mfsmaster

ll   ##metadata.mfs.back还有

/etc/init.d/moosefs-master  start  ##服务起来失败,我们要去改配置文件

mfs文件系统与分布式存储的高可用

vim   /etc/init.d/moosefs-master

start(){

##将$prog start >/dev/null   2>&1  &&  success  || $prog  -a &> /dev/null && success

mfs文件系统与分布式存储的高可用

kill  -9 ##进程号mfsmaster

/etc/init.d/moosefs-master  start  ##可以看见服务起来了

###分布式存储的高可用

####首先我们在开一个虚拟机server4

###在server4里面做

yum  install moosefs-master-3.0.97-1.rhsysv.x86_64.rpm

mfs文件系统与分布式存储的高可用

在server1里面传到server4的配置文件

cd   /etc/init.d/

scp  moosefs-master  server4:/etc/init.d

/etc/init.d/moosefs-master  start

/etc/init.d/moosefs-master   stop

cd   /var/lib/mfs

###在sever2里面做

给server2里面添加一个硬盘,并将其共享出去,

yum  install  -y  scsi-*

fedisk  -l  ##看有没有多出来一个设备/dev/vdb  cat /proc/partitions

mfs文件系统与分布式存储的高可用

vi   /etc/tgt/targets.conf  ##编辑iscsi的配置文件,允许server1和server4发现并登陆,找到相似的的代码进行改正

<target iqn.2018-11.com.example:server.target1>

    backing-store /dev/vdb

    initiator-address 172.25.17.1

    initiator-address 172.25.17.4

</target>

mfs文件系统与分布式存储的高可用

/etc/init.d/tgtd  start

###在server1上

yum   install   -y  iscsi-*

iscsiadm  -m  discovery  -t st -p 172.25.17.2  ##发现设备

mfs文件系统与分布式存储的高可用

iscsiadm  -m node -l   ##登陆进去

cat  /proc/partitions   ##查看多了设备  /dev/sda

mfs文件系统与分布式存储的高可用

fdisk  -cu  /dev/sda  n(创建) 一个主分区,默认开始,默认结束,保存退出

mkfs.ext4 /dev/sda1

mfs文件系统与分布式存储的高可用

dd if=/dev/sda of=mpt   bs=512  count=1

dd if=/dev/zero of=/dev/sda  bs=512  count=1

mount   /dev/sda1  /mnt

df  ##查看是否挂在上

cd  /mnt

cp  /etc/*  .  ####将/etc的东西考到当前位置

cd

umount /mnt  ##ext4文件系统不允许同时挂在

##在server4上

yum   install   -y  iscsi-*

iscsiadm  -m  discovery  -t st -p 172.25.17.2  ##发现设备

mfs文件系统与分布式存储的高可用

iscsiadm  -m node -l   ##登陆进去

cat  /proc/partitions   ##查看多了设备  /dev/sda

fdisk  -cu  /dev/sda  n(创建) 一个主分区,默认开始,默认结束,保存退出

mount   /dev/sda1  /mnt

cd  /mnt

ls   ##应该有东西,因为server1已经将东西cp到/mnt底下了,这是为了检验做法是否正确

cd

umount   /mnt

mfs文件系统与分布式存储的高可用

###在server1里面做

mount  /dev/sda1   /mnt

cd /mnt

rm -fr  *

cp   -p  /var/lib/mfs/*  .

ll   ##显示有没有copy过来

chown   -R mfs.mfs  .

ll -d  . ##将目录的所有人和所有组都改为mfs,检验是否正确

cd

umount   /mnt

mount  /dev/sda1  /var/lib/mfs

ll  -d  /var/lib/mfs  ##检查他的所有人和所有组是否为mfs

umount  /var/lib/mfs

mfs文件系统与分布式存储的高可用

/etc/int.d/moosefs-master  start  

/etc/int.d/moosefs-master  stop   ##做这两部是为了检验服务能不能起来

###在server4里面

mount  /dev/sda1  /var/lib/mfs

cd   /var/lib/mfs   

ls  ##此时应该有各种文件

/etc/int.d/moosefs-master  start  

/etc/int.d/moosefs-master  stop   ##做这两部是为了检验服务能不能起来

umount  /var/lib/mfs

####在server1里面

##更改yum源

vim  /etc/yum.repos.d/rhel_dvd.x86_64

[LoadBalancer]

name=LoadBalancer

baseurl=http://172.25.254.56/rhel6.5/LoadBalancer

gpgcheck=0

[HighAvailability]

name=HighAvailability

baseurl=http://172.25.254.56/rhel6.5/HighAvailability

gpgcheck=0

[ResilientStorage]

name=ResilientStorage

baseurl=http://172.25.254.56/rhel6.5/ResilientStorage

gpgcheck=0

[ScalableFileSystem]

name=ScalableFileSystem

baseurl=http://172.25.254.56/rhel6.5/ScalableFileSystem

yum  clean  all

yum  repolist

scp    /etc/yum.repos.d/rhel_dvd.x86_64  server4:/etc/yum.repos.d/

yum  install  -y  pacemaker  corosync

还要有检查语法的软件包 crmsh-1.2.6-0.rc2.2.1.x86_64.rpm  pass-2.3.1-2.1.x86_64.rpm

yum  install  -y crmsh-1.2.6-0.rc2.2.1.x86_64.rpm  pass-2.3.1-2.1.x86_64.rpm

##在server4里面做

cd  /etc/yum.repos.d/

ls   ##显示有没有传过来的文件

yum  clean  all

yum  repolist

yum  install  -y  pacemaker  corosync

还要有检查语法的软件包 crmsh-1.2.6-0.rc2.2.1.x86_64.rpm  pass-2.3.1-2.1.x86_64.rpm

yum  install  -y crmsh-1.2.6-0.rc2.2.1.x86_64.rpm  pass-2.3.1-2.1.x86_64.rpm

###在server1里面做

cd   /etc/corosync

ls

cp    corosync.conf.example  corosync.conf

mfs文件系统与分布式存储的高可用

vim  corosync.conf

##更改网端,多播地址和多播端口号

其他的不变,在最后加

service {

    name: pacemaker

    ver: 0

}

mfs文件系统与分布式存储的高可用
mfs文件系统与分布式存储的高可用

/etc/init.d/corosync  start

scp   corosync.conf   server4:/etc/corosync  ##在server4上开启服务/etc/init.d/corosync  start

crm_verify  -LV  ##检查语法,因为没有fence,所以回报错  ##在server4上面做监控crm_mon

###在真机做,因为以前在真机就下载过fence,所以我们直接开启服务就行

systemctl   status fence_virtd

netstat  -antlupe  |  grep :1229  ##看端口号有没有开

mfs文件系统与分布式存储的高可用

cat  /etc/fence_virt.conf

###可以看到key的位置在 /etc/cluster/fence_xvm.key

###他的接口为br0

mfs文件系统与分布式存储的高可用

cd   /etc/cluster  ##如果没有这个目录,进行创建

ls   ##有fence_xvm.key  这个文件

mfs文件系统与分布式存储的高可用

scp   fence_xvm.key  server1:/etc/cluster  ##首先server1/4要建立这个目录/etc/cluster

##在server1和server4俩面做

yum  install  fence-virt-*

stonith_admin  -I    #查看有没有fence设备

mfs文件系统与分布式存储的高可用

stonith_admin  -M  -a  fence_xvm  ##查看fence设备的详细信息

cd   /etc/cluster

ls   ##显示有没有key文件

server4上做监控,crm_mon

##在server1上面

crm

configure

show  #显示节点信息

mfs文件系统与分布式存储的高可用

property  stonith-enable=true   ##开启fence服务

property no-quorum-policy=ignore

commit

primitive  vmfence stonith:fence_xvm params  pcmk_host_map="server1:vm1;server4:vm4" op  monitor  interval=1min

commit

mfs文件系统与分布式存储的高可用

crm_verify   -LV   ##此时语法就不会出错

crm

configure

primitive vip ocf:heartbeat:IPaddr2  params ip=172.25.254.100 op monitor  interval=1min

primitive mfsdata ocf:heartbeat:Filesystem params  device=/dev/sda1 directory=/var/lib/mfs  fstype=ext4 op  monitor  interval=1min

primitive mfsmaster  lsb:moosefs-master  op monitor  interval=1min

group  mfsgroup vip mfsdata mfsmaster   ##在这之前一定要先做解析

commit

vim  /etc/hosts

##将虚拟ip和mfsmaster绑定在一起,5台机子都做包括真机

172.25.254.100   mfsmaster

####在server2和server3里面做

/etc/init.d/moosefs-chunkserver  start

###在真机,也就是客户端做

cd  /mnt/mfs/dir1

mfsfileinfo   passwd

###去server4监控里面看谁是master然后停掉master的服务  /etc/init.d/corosync  stop

###在真机,也就是客户端做

cd  /mnt/mfs/dir1

mfsfileinfo   passwd   ##我们看到信息并没有丢失,即使master服务听掉了

###去server1监控里面看谁是master,观看是否转换成功

然后在开启服务  /etc/init.d/corosync  start  进监控里面看,发现原来的master有接管这是符合常理的

##在真机里面做

dd  if=/dev/zero  of=bigfile  bs=1M  count=512

mfsfileinfo    bigfile

###在servers4里面做

我们物理破坏server4的服务,看fence能否发挥作用,能将她重启

echo  c >  /proc/sysrq-trigger

##等一回时间,看看 他能不能ssh  server4

/etc/init.d/corosync   start  ##观看他又转换了

mfs文件系统与分布式存储的高可用
mfs文件系统与分布式存储的高可用
mfs文件系统与分布式存储的高可用
mfs文件系统与分布式存储的高可用
上一篇: 自考之路