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


Vim /etc/hosts
172.25.17.1 server1  mfsmaster


/etc/init.d/moosefs-master  start


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


vim  /etc/hosts
172.25.17.1 server1  mfsmaster


mkdir  /mnt/chunk1
cd  /mnt
ll
chown -R  mfs.mfs  chunk1/


cd  /etc/mfs
vim mfshdd.cfg
##在最后添加 /mnt/chunk1


/etc/init.d/moosefs-chunkserver  start
cd   /mnt/chunk1
ls   
ls  |  wc  -l  ##一共有256行


##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  ##查看是否挂在上


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/


cd  dir1
cp   /etc/passwd  .
mfsfileinfo  passwd    ###查看他们存储在那个后端设备里
cd  ..
cd dir2
cp  /etc/fstab  .
mfsfileinfo    fstab


###停掉他们存储的后端设备
/etc/init.d/moosefs-chunkserver  stop
##在去物理机里面做
cd  ..
cd  dir1/
mfsfileinfo    passwd   ###发现不能查看了


##在server1里面做
/etc/init.d/moosefs-cgiserv  start   ##开启cgi服务,可以去浏览器检查
##取浏览器检查
http://172.25.17.1:9425  

###当文件太大的时候,我们可以分别存储在物理机中做,因为块的容量为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


####数据丢失在物理机中做
mfsgettrashtime  passwd   #产看恢复时间
cd  /mnt/mfs/dir1
rm  -fr  passwd
mkdir  /mnt/mfsmeta  ##源数据的位置


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


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 文件


/etc/init.d/moosefs-master  start
ll  ##metadata.mfs.back文件又出现了


ps ax
kill  -9  ##进程号mfsmaster
ll   ##metadata.mfs.back还有
/etc/init.d/moosefs-master  start  ##服务起来失败,我们要去改配置文件


vim   /etc/init.d/moosefs-master
start(){
##将$prog start >/dev/null   2>&1  &&  success  || $prog  -a &> /dev/null && success


kill  -9 ##进程号mfsmaster
/etc/init.d/moosefs-master  start  ##可以看见服务起来了
###分布式存储的高可用
####首先我们在开一个虚拟机server4
###在server4里面做
yum  install moosefs-master-3.0.97-1.rhsysv.x86_64.rpm


在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


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>


/etc/init.d/tgtd  start
###在server1上
yum   install   -y  iscsi-*
iscsiadm  -m  discovery  -t st -p 172.25.17.2  ##发现设备


iscsiadm  -m node -l   ##登陆进去
cat  /proc/partitions   ##查看多了设备  /dev/sda


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


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  ##发现设备


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


###在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


/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


vim  corosync.conf
##更改网端,多播地址和多播端口号
其他的不变,在最后加
service {
    name: pacemaker
    ver: 0
}


/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  ##看端口号有没有开


cat  /etc/fence_virt.conf
###可以看到key的位置在 /etc/cluster/fence_xvm.key
###他的接口为br0


cd   /etc/cluster  ##如果没有这个目录,进行创建
ls   ##有fence_xvm.key  这个文件


scp   fence_xvm.key  server1:/etc/cluster  ##首先server1/4要建立这个目录/etc/cluster
##在server1和server4俩面做
yum  install  fence-virt-*
stonith_admin  -I    #查看有没有fence设备


stonith_admin  -M  -a  fence_xvm  ##查看fence设备的详细信息
cd   /etc/cluster
ls   ##显示有没有key文件
server4上做监控,crm_mon
##在server1上面
crm
configure
show  #显示节点信息


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


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  ##观看他又转换了

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值