1. 程式人生 > >linux——NFS+AUTOFS服務的基本配置

linux——NFS+AUTOFS服務的基本配置

NFS

為什麼要用NFS

NFS(Network File System)即網路檔案系統,是FreeBSD支援的檔案系統中的一種,它允許網路中的計算機之間通過TCP/IP網路共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的檔案,就像訪問本地檔案一樣。

FNS的好處
  • 節省本地儲存空間,將常用的資料存放在一臺NFS伺服器上且可以通過網路訪問,那麼本地終端將可以減少自身儲存空間的使用。
  • 使用者不需要在網路中的每個機器上都建有Home目錄,Home目錄可以放在NFS伺服器上且可以在網路上被訪問使用。
  • 一些儲存裝置CDROM和Zip(一種高儲存密度的磁碟驅動器與磁碟)等都可以在網路上被別的機器使用。這可以減少整個網路上可移動介質裝置的數量。
NFS 的基本原則是“容許不同的客戶端及服務端通過一組RPC分享相同的檔案系統”,它是獨立於作業系統,容許不同硬體及作業系統的系統共同進行檔案的分享。

NFS在檔案傳送或資訊傳送過程中依賴於RPC協議。RPC,遠端過程呼叫 (Remote Procedure Call) 是能使客戶端執行其他系統中程式的一種機制。NFS本身是沒有提供資訊傳輸的協議和功能的,但NFS卻能讓我們通過網路進行資料的分享,這是因為NFS使用了一些其它的傳輸協議。而這些傳輸協議用到這個RPC功能的。可以說NFS本身就是使用RPC的一個程式。或者說NFS也是一個RPC SERVER。所以只要用到NFS的地方都要啟動RPC服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實現PROGRAM PORT的對應。可以這麼理解RPC和NFS的關係:NFS是一個檔案系統,而RPC是負責負責資訊的傳輸。

一、準備階段(客戶端、服務端)

  • 下載nfs server服務

服務端

[root@server ~]# yum install nfs-utils -y  ##下載安裝nfs服務
[root@server ~]# systemctl start nfs       ##開啟nfs服務

客戶端

[root@client ~]# yum install nfs-utils -y   ##下載安裝nfs服務
[root@client ~]# showmount -e 172.25.254.227
Export list for 172.25.254.227:
[root@client
~]#

二、相關命令介紹

showmount 引數 nfs_server(IP)
    -e nfs_server(IP) 檢視nfs提供共享的檔案系統
    -a nfs_server 檢視nfs伺服器所有被掛載的檔案系統及其掛載的客戶端對應關係列表
    -d nfs_server 顯示nfs伺服器所有匯出的檔案系統
exportfs 引數:
    -a:跟-r或-u同時使用,表示重新掛載所有檔案系統或取消匯出所有檔案系統
    -r:重新匯出
    -u:取消匯出
    -v:顯示詳細資訊

三、實驗

 ehco “/mnt  172.25.254.0/24(ro,sync)” > /etc/exports

/mnt 172.25.254.0/24(ro,sync)
共享/mnt目錄,允許172.25.254.0網段地址使用掛載
模式可以為(ro只讀),(rw讀寫),(sync非同步),(async同步)

 ehco “/mnt  *(ro,sync)” > /etc/exports

共享/mnt目錄,允許所有網段地址使用掛載

  • 實驗一
[root@server ~]# vim /etc/exports
[root@server ~]# cat /etc/exports
/mnt   *(sync,ro)                ##同步、只讀模式
[root@server ~]# exportfs -rv
exporting *:/mnt
[root@server ~]#

測試
這裡寫圖片描述

  • 實驗二
[root@server ~]# vim /etc/exports
[root@server ~]# cat /etc/exports
/mnt   *(sync,rw)                ##同步、讀寫模式
[root@server ~]# exportfs -rv
exporting *:/mnt
[root@server ~]#

測試
這裡寫圖片描述
因為服務端的 /mnt 目錄許可權不夠

[root@server ~]# ls -ld /mnt/
drwxr-xr-x. 2 root root 18 Jun  4 07:03 /mnt/
[root@server ~]# chmod 777 /mnt/
[root@server ~]# ls -ld /mnt/
drwxrwxrwx. 2 root root 18 Jun  4 07:03 /mnt/
[root@server ~]# 

測試
這裡寫圖片描述

  • 實驗三

no_root_squash:登入 NFS 主機使用分享目錄的使用者,如果是 root 的話,那麼對於這個分享的目錄來說,他就具有 root 的許可權!這個專案『極不安全』,不建議使用!
root_squash:在登入 NFS 主機使用分享之目錄的使用者如果是 root 時,那麼這個使用者的許可權將被壓縮成為匿名使用者,通常他的 UID 與 GID 都會變成 nobody 那個系統賬號的身份。

[root@server ~]# vim /etc/exports
[root@server ~]# cat /etc/exports
/mnt   *(sync,rw,no_root_squash)
[root@server ~]# exportfs -rv
exporting *:/mnt
[root@server ~]#

測試
這裡寫圖片描述

[root@server ~]# vim /etc/exports
[root@server ~]# cat /etc/exports
/mnt   *(sync,rw,root_squash)
[root@server ~]# exportfs -rv
exporting *:/mnt
[root@server ~]#

測試
這裡寫圖片描述

  • 實驗四
[root@server ~]# vim /etc/exports
[root@server ~]# cat /etc/exports
/mnt   *(sync,rw,anonuid=1000,anongid=1000)
##同步、讀寫、建立的檔案屬性是uid=1000、gid=1000的使用者 
[root@server ~]# exportfs -rv
exporting *:/mnt
[root@server ~]#

測試
這裡寫圖片描述
實驗後,進行下面的操作,以便 autofs 實驗

[root@server ~]# vim /etc/exports
[root@server ~]# cat /etc/exports
/westos 172.25.254.0/24(sync,rw,no_root_squash)
[root@server ~]# exportfs -rv
exporting 172.25.254.0/24:/westos
[root@server ~]#

四、Autofs

autofs —— 自動掛載工具
特點:它與mount的不同,autofs是一個守護程序,如果它檢測到使用者正在訪問一個尚未掛載的檔案系統,如果存在,autofs會自動將其掛載;如果它檢測到某個已經掛載的檔案系統在一段時間內沒有被使用,那麼autofs會自動將其解除安裝。

  • 安裝autofs(客戶端)
[root@client ~]# yum install autofs -y

測試

[root@client ~]# cd /net                   
-bash: cd: /net: No such file or directory
##沒有開啟 autofs 服務之前,目錄/net是不存在的
[root@client ~]# vim /etc/sysconfig/autofs 
##修改第13行   
##設定空閒解除安裝時間,空閒5秒後自動解除安裝
[root@client ~]# cat /etc/sysconfig/autofs | head -n 13 | tail -n 1
TIMEOUT=5
[root@client ~]# systemctl start autofs          
[root@client ~]# cd /net/
[root@client net]# pwd
/net
[root@client net]# ls       
[root@client net]# cd 172.25.254.227
[root@client 172.25.254.227]# pwd
/net/172.25.254.227
[root@client 172.25.254.227]# ls
westos
[root@client 172.25.254.227]# cd westos/
[root@client westos]# ls
[root@client westos]# df    ##掛載點預設在/net/172.25.254.227/westos
Filesystem             1K-blocks    Used Available Use% Mounted on
/dev/vda1               10473900 3155092   7318808  31% /
devtmpfs                  469344       0    469344   0% /dev
tmpfs                     484932      84    484848   1% /dev/shm
tmpfs                     484932   12784    472148   3% /run
tmpfs                     484932       0    484932   0% /sys/fs/cgroup
/dev/mapper/vg0-vo        483670    2355    451824   1% /home
172.25.254.227:/westos  10473984 3168256   7305728  31% /net/172.25.254.227/westos
[root@client westos]# cd
[root@client ~]# pwd
/root
##過大概 5 秒後
[root@client ~]# df
Filesystem         1K-blocks    Used Available Use% Mounted on
/dev/vda1           10473900 3154928   7318972  31% /
devtmpfs              469344       0    469344   0% /dev
tmpfs                 484932      84    484848   1% /dev/shm
tmpfs                 484932   12784    472148   3% /run
tmpfs                 484932       0    484932   0% /sys/fs/cgroup
/dev/mapper/vg0-vo    483670    2355    451824   1% /home
[root@client ~]#
  • 指定掛載點為/nfs/westos
[root@client ~]# vim /etc/auto.master
[root@client ~]#  cat /etc/auto.master | head -n 8 | tail -n 1
/nfs    /etc/auto.westos
##/nfs ——掛載目錄的上層全部路徑,若是掛載在/nfs/tutu/westos,那麼此處應是/nfs/tutu
##/etc/auto.westos   自動掛載的配置檔案
[root@client ~]# ll /etc/auto.westos
ls: cannot access /etc/auto.westos: No such file or directory
[root@client ~]# vim /etc/auto.westos
[root@client ~]# cat /etc/auto.westos
westos   -ro   172.25.254.227:/westos
##westos ——掛載點,檔名可以不存在,若是掛載在/nfs/tutu/westos,那麼此處應是westos
##-ro ——掛載模式(ro:只讀)
##172.25.254.227:/westos ——需要掛載的裝置,本地的——“: 裝置“,網路的——“IP : 目錄“
[root@client ~]# systemctl restart autofs.service

測試
這裡寫圖片描述
這裡寫圖片描述

[root@client westos]# vim /etc/auto.westos 
[root@client westos]# cat /etc/auto.westos
westos   -rw,vers=3   172.25.254.227:/westos
[root@client westos]# cd
[root@client ~]# systemctl restart autofs.service

這裡寫圖片描述