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