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