什麼是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 ##觀看他又轉換了