NFS 什麼是NFS?(NAS) NFS(網路文件系統):它的主要功能是通過網路讓不同的機器系統之間可以彼此共用文件和目錄。NFS伺服器可以允許NFS客戶端將遠端NFS伺服器端的共用目錄掛載到本地的NFS客戶端中。在本地的NFS客戶端的機器看來,NFS伺服器端共用的目錄就好像自己的磁碟分區和目錄一樣 ...
NFS
什麼是NFS?(NAS)
NFS(網路文件系統):它的主要功能是通過網路讓不同的機器系統之間可以彼此共用文件和目錄。NFS伺服器可以允許NFS客戶端將遠端NFS伺服器端的共用目錄掛載到本地的NFS客戶端中。在本地的NFS客戶端的機器看來,NFS伺服器端共用的目錄就好像自己的磁碟分區和目錄一樣。一般客戶端掛載到本地目錄的名字可以隨便,但為方便管理,我們要和伺服器端一樣比較好。
這個再往簡單點,就相當於windows裡面共用文件,然後其他主機把這個共用文件映射成了本地盤使用一樣。接下來我們會學習兩部分:NFS原理(共用原理)、服務端如何搭建NFS(怎麼共用)、客戶端怎麼掛載(怎麼映射網盤)
NFS簡介
NFS是(Network File System)的縮寫,既網路文件系統。一種使用於分散式文件系統的協議,由SUN公司開發,於1984年向外公佈。NFS允許一個系統在網路上與他人共用文件和目錄,通過使用NFS,用戶和程式可以像訪問本地文件一樣訪問遠端系統上的文件。多用於類Unix操作系統上。
工作原理
伺服器端和客戶端通信過程:
1)首先伺服器端啟動RPC遠程過程調用(remote procedure call)服務,並開啟111埠
2)啟動NFS服務,並向RPC註冊埠信息
3)客戶端啟動RPC(portmap服務),向服務端的RPC(portmap)服務請求服務端的NFS埠
4)服務端的RPC(portmap)服務反饋NFS埠信息給客戶端。
5)客戶端通過獲取的NFS埠來建立和服務端的NFS連接併進行數據的傳輸。
NFS有很多功能,不同的功能需要使用不同的埠。因此NFS無法固定埠。而RPC會記錄NFS埠的信息,這樣我們就能夠通過RPC實現服務端和客戶端的RPC來溝通埠信息。
那RPC和NFS之間又是如何之間相互通訊的?
首先當NFS啟動後,就會隨機的使用一些埠,然後NFS就會向RPC去註冊這些埠。RPC就會記錄下這些埠。並且RPC會開啟111埠,等待客戶端RPC的請求,如果客戶端有請求,那服務端的RPC就會將記錄的NFS埠信息告知客戶端。
兩台機器能夠ping通
軟體包的安裝:
預設情況下,LINUX當中已經安裝了NFS相關的軟體包。只要確保本地上安裝了NFS文件系統的支持即可! nfs-utils 。
服務的啟動:
# systemctl enable nfs-server
# systemctl start nfs-server
NFS配置文件/etc/exports解析:
語法:
本機需要輸入的文件夾 輸出給誰(輸出的約定,多個用“,”分隔)
規則:
● 一行一個輸出項目。一行寫不下,自動換行即可。
● 本機需要輸入的文件夾 輸出給誰兩個參數之間使用一個或多個空格分隔。
● 輸出給誰(輸出的約定,多個用“,”分隔)兩個參數之間不能有空格。
● (輸出的約定,多個用“,”分隔)裡面不能有空格,多條預定中間使用“,”分隔。
範例:
/etc 172.25.250.0/255.255.255.0(rw,async)
/tmp/dir1 *(ro) 192.168.100.1(rw)
/test1 *.lab.exmaple.com(ro)
伺服器端重新載入配置文件而不中斷連接
# exportfs -rv
#setenforce 0 //設置selinux為關閉狀態
伺服器端的掛載參數
參數 |
含義 |
secure |
這個選項是預設選項,它使用了 1024 以下的 TCP/IP 埠實現 NFS 的連接。指定 insecure 可以禁用這個選項。
|
rw |
這個選項允許 NFS 客戶機進行讀/寫訪問。預設選項是只讀的ro。 |
async |
這個選項可以改進性能,但是如果沒有完全關閉 NFS 守護進程就重新啟動了 NFS 伺服器,這也可能會造成數據丟失。預設設置為 sync。 |
no_wdelay |
這個選項關閉寫延時。如果設置了 async,那麼 NFS 就會忽略這個選項。 |
nohide |
如果將一個目錄掛載到另外一個目錄之上,那麼原來的目錄通常就被隱藏起來或看起來像空的一樣。要禁用這種行為,需啟用 hide 選項。 |
no_subtree_check |
這個選項關閉子樹檢查,子樹檢查會執行一些不想忽略的安全性檢查。預設選項是啟用子樹檢查。
|
no_auth_nlm |
這個選項也可以作為 insecure_locks 指定,它告訴 NFS 守護進程不要對加鎖請求進行認證。如果關心安全性問題,就要避免使用這個選項。預設選項是 auth_nlm 或 secure_locks。 |
mp(mountpoint=path) |
通過顯式地聲明這個選項,NFS 要求掛載所導出的目錄。 |
fsid=num |
這個選項通常都在 NFS 故障恢復的情況中使用。如果希望實現 NFS 的故障恢復,請參考 NFS 文檔。 用戶映射的選項包括:
|
root_squash |
這個選項不允許 root 用戶訪問掛載上來的 NFS 捲 |
no_root_squash |
這個選項允許 root 用戶訪問掛載上來的 NFS 捲。 |
all_squash |
這個選省設置是 no_all_squash。 項對於公共訪問的 NFS 捲來說非常有用,它會限制所有的 UID 和 GID,只使用匿名用戶。缺
|
anonuid |
這兩個選項將匿名 UID 和 GID 修改成特定用戶和組帳號 |
NFS客戶端:
1、查看監測伺服器端的輸出的項目
# showmount -e 伺服器IP地址
2、客戶端單次掛載:
# mount -t nfs 伺服器的ip地址:/輸出的文件夾 本地掛載點
3、永久掛載:/etc/fstab
伺服器的ip地址:/輸出的文件夾 本地掛載點 nfs defaults 0 0
基於kerberos加密保護的NFS
NFS在以前只適合在區域網中使用,但由於NFSV4開始使用TCP協議進行傳輸,所以希望在工作當中在互聯網中使用NFS!!!
伺服器端:
1、伺服器端下載伺服器端的kerberos的密鑰,放到/etc/krb5.keytab
2、在輸出項目的掛載參數中加入(, sec=krb5p)
3、編輯NFS的系統配置文件:/etc/sysconfig/nfs 修改
RPCNFSDARGS="" 改為
RPCNFSDARGS="-V 4.2"
4、啟動伺服器
# systemctl restart nfs-server //enable
# systemctl restart nfs-secure-server //enable
客戶端:
1、下載客戶端的kerberos的密鑰,放到/etc/krb5.keytab
2、# system restart nfs-secure //enable
3、寫/etc/fstab
伺服器的ip地址:/輸出的文件夾 本地掛載點 nfs defaults,sec=krb5p,v4.2 0 0
10、配置 NFS 服務
一共有system1和system2 兩台機器
System1
# yum install nfs-utils -y //安裝軟體包
# mkdir /securenfs //創建共用文件
# chmod 777 /securenfs
# vim /etc/exports
/securenfs *(rw) //添加共用目錄
#exportfs -rv //載入/etc/exports文件
# systemctl restart nfs-server
# systemctl enable nfs-server
#firewall-cmd --permanent --add-service=nfs
#firewall-cmd --reload
11、掛載一個 NFS 共用
System2
# mkdir /mnt/secureshare
# vim /etc/fstab
system1:/securenfs /mnt/secureshare nfs defaults 0 0
# mount -a
# touch /mnt/nfssecure/secret
System1
1、創建一個包含“hello world”的新文件
#echo “hello world” > /securenfs/testfile.txt
System2上在 /mnt/secureshare就可以看到system1上創建的新文件