天天看點

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檔案系統與分布式存儲的高可用
上一篇: 自考之路