1. 程式人生 > 其它 >Linux 架構篇 知識心得05 rsync備份例項

Linux 架構篇 知識心得05 rsync備份例項

NFS服務

一.什麼是NFS服務

共享儲存,檔案伺服器

1.基本概述

	NFS是Network File System的縮寫及網路檔案系統。NFS主要功能是通過區域網絡讓不同的主機系統之間可以共享檔案或目錄。
	NFS系統和Windows網路共享、網路驅動器類似, 只不過windows用於區域網, NFS用於企業叢集架構中, 如果是大型網站, 會用到更復雜的分散式檔案系統FastDFS,glusterfs,HDFS

2.為什麼使用NFS

1)實現多臺伺服器之間資料共享
2)實現多臺伺服器之間資料一致

二、NFS應用

1.沒有NFS時

1.A使用者上傳圖片經過負載均衡,負載均衡將上傳請求排程至WEB1伺服器上。
2.B使用者訪問A使用者上傳的圖片,此時B使用者被負載均衡排程至WEB2上,因為WEB2上沒有這張圖片,所以B使用者無法看到A使用者傳的圖片。

2.有NFS時

1.A使用者上傳圖片無論被負載均衡排程至WEB1還是WEB2, 最終資料都被寫入至共享儲存
2.B使用者訪問A使用者上傳圖片時,無論排程至WEB1還是WEB2,最終都會上共享儲存訪問對應的檔案,這樣就可以訪問到資源了

3.NFS工作原理

vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash)
1.使用者訪問NFS客戶端,將請求轉化為函式
2.NFS通過TCP/IP連線服務端
3.NFS服務端接收請求,會先呼叫portmap程序進行埠對映
4.Rpc.nfsd程序用於判斷NFS客戶端能否連線服務端;
5.Rpc.mount程序用於判斷客戶端對服務端的操作許可權
6.如果通過許可權驗證,可以對服務端進行操作,修改或讀取

三、NFS實踐

1.環境準備

主機	      IP	     角色
web01	172.16.1.7	 NFS客戶端
web02   172.16.1.8   NFS客戶端
web03   172.16.1.9   NFS客戶端
nfs	    172.16.1.31  NFS服務端

2.服務端準備工作

1) 關閉SElinux和防火牆
	vim /etc/selinux/config  : enforcing -->disabled
    setenforce 0
    systemctl disable --now firewalld
    
2) 安裝NFS和rpcbind
	yum install -y nfs-utils rpcbind

3)配置NFS
	#NFS預設的配置檔案是 /etc/exports
	vim /etc/exports
	/data 172.16.1.0/24(rw,sync,all_squash)
    語法	       /data	         172.16.1.0/24	   (rw,sync,all_squash)
    含義	  NFS服務端共享的目錄	 NFS允許連線的客戶端IP	  允許操作的許可權

4) 建立共享目錄
	mkdir /data
	
5) 啟動服務
	systemctl start rpcbind nfs
	
6)驗證啟動
	netstat -lntp | grep rpc
	cat /var/lib/nfs/etab  # 驗證NFS配置
	

3.客戶端準備工作

1) 關閉SElinux和防火牆
	vim /etc/selinux/config  : enforcing -->disabled
    setenforce 0
    systemctl disable --now firewalld

2) 安裝NFS和rpcbind
	yum install -y nfs-utils rpcbind
	
3)檢視掛載點
    [root@web01 ~]# showmount -e 172.16.1.31
    Export list for 172.16.1.31:
    /data 172.16.1.0/24
    
4)掛載
    [root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
    [root@web01 ~]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    devtmpfs                 475M     0  475M   0% /dev
    tmpfs                    487M     0  487M   0% /dev/shm
    tmpfs                    487M  7.5M  479M   2% /run
    tmpfs                    487M     0  487M   0% /sys/fs/cgroup
    /dev/mapper/centos-root   99G  2.6G   97G   3% /
    /dev/sda1               1014M  168M  847M  17% /boot
    172.16.1.31:/data         99G  2.7G   97G   3% /mnt
    tmpfs                     98M     0   98M   0% /run/user/0

5)寫入資料進行測試
    #第一次寫入測試
    [root@web01 ~]# cd /backup/
    [root@web01 backup]# touch 123.txt
    touch: cannot touch ‘123.txt’: Permission denied    #沒有許可權

    #授權目錄 在服務端進行授權操作
    [root@nfs ~]# chown -R nfsnobody.nfsnobody /data/

    #再次建立測試
    [root@web01 backup]# touch 123.txt
    [root@web01 backup]# ll
    total 0
    -rw-r--r--. 1 nfsnobody nfsnobody 0 Nov 20 09:26 123.txt

    #服務端檢視
    [root@nfs ~]# ll /data/
    total 0
    -rw-r--r-- 1 nfsnobody nfsnobody 0 Nov 20 09:26 123.txt

四、NFS掛載與解除安裝

	NFS客戶端的配置步驟也十分簡單。先使用showmount命令,查詢NFS伺服器的遠端共享資訊,其輸出格式為“共享的目錄名稱 允許使用客戶端地址(許可權)”。
 
	NFS掛載:客戶端的目錄僅僅是服務端共享目錄的一個入口,可以簡單理解為軟連線,真正的資料全都是儲存在服務端的目錄,客戶端寫入的資料也是在服務端儲存的
	
	NFS解除安裝:
        #解除安裝的兩種方式
        [root@web01 ~]# umount /backup 
        [root@web01 ~]# umount 172.16.1.31:/data

        #強制取消掛載
        [root@web01 ~]# umount -lf /backup

	NFS開機自動掛載
        1、開機自啟動指令碼
            vim /etc/rc.local
            chmod +x /etc/rc.local
            echo "mount -t nfs 172.16.1.31:/data/image /mnt" >> /etc/rc.local

        2、寫入/etc/fstab
            1、編寫配置檔案
                172.16.1.31:/data /backup nfs defaults 0 0
                
            2、檢查配置檔案
                1、mount -a :檢查語法
                2、showmount -e 172.16.1.31 : 檢查服務

            3、重啟測試
	
	#注意事項:
    1.掛載目錄後,原來檔案下的內容不會丟失,僅僅是被遮蓋住,取消掛載後仍然存在
    2.取消掛載時不要在掛載的目錄下面操作,否則會提示忙碌,切換到其他目錄再進行解除安裝
    3.掛載是如果在掛載的目錄下,還是可以看到掛載前目錄下的檔案,需要重新進入目錄才會顯示掛載後目錄的內容

五、檢查nfs服務是否正常

客戶端檢測指令碼:
#!/bin/bash
IP=172.16.1.31

#監測NFS服務是否正常
showmount -e $IP &>/dev/null
[ $? -eq 0 ] && mount -t nfs $IP:/data /mnt || /usr/bin/bash /root/nfs.sh

ps:nfs.sh指令碼如下:
#!/bin/bash
echo "NFS服務異常,請及時處理!" |mail -s "異常報警" [email protected] >/dev/null 2>&1