NFS 是Network File System的縮寫,即網絡文件系統。一種使用于分散式文件系統的協定。功能是通過網絡讓不同的機器、不同的操作系統能夠彼此分享個別的數據讓應用程序在客戶端通過網絡訪問位于服務器磁盤中的數據,是在類Unix系統間實現磁盤文件共享的一種方法。NFS 的基本原則是“容許不同的客戶端及服務端通過一組RPC分享相同的文件系統”,它是獨立于操作系統,容許不同硬件及操作系統的系統共同進行文件的分享。NFS在文件傳送或信息傳送過程中依賴于RPC協議。RPC,遠程過程調用(Remote Procedure Call) 是能使客戶端執行其他系統中程序的一種機制。NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網絡進行資料的分享,這是因為NFS使用了一些其它的傳輸協議。而這些傳輸協議用到這個RPC功能的??梢哉fNFS本身就是使用RPC的一個程序?;蛘哒fNFS也是一個RPC SERVER。所以只要用到NFS的地方都要啟動RPC服務,不論是NFSSERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實現PROGRAM PORT的對應??梢赃@么理解RPC和NFS的關系:NFS是一個文件系統,而RPC是負責信息的傳輸。
操作系統:CentOS Linux release 7.3.1611 (Core)
服務端:10.0.1.16
客戶端:10.0.1.1 10.0.1.2
命令如下:
#yum list |grep nfs-utils #查看是否有nfs-utils的rpm包
#yum install nfs-utils.x86_64 -y #安裝nfs-utils
#groupadd -g 1005 rick
#useradd -g 1005 -u 1005-M rick
#mkdir -p /share/data
#chown -R rick:rick /share/data
注:1005是用戶id和用戶組id,這個實驗我使用自定義的;也可以使用默認的,使用
cat /etc/passwd |grep rick 命令行查看,例如
rick:x:1001:1001::/home/rick:/bin/bash
以冒號為分隔符,第一個字段是用戶名稱;第二個字段是密碼,是隱藏的;第三個字段是用戶id;第四個字段是用戶組id;第五個字段是描述;第六個字段是用戶的主目錄;第七個字段是用戶可用的shell。
命令:vim /etc/exports
添加 /share/data *(rw,sync,all_squash,anonuid=1005,anongid=1005)
共享目錄 權限設置,*代表允許所有ip訪問,其他權限參考2.4節
注:這里為了方便使用*來設置可訪問共享目錄的ip,為了安全起見,部署的時候建議指定可訪問的單個ip或者一個網段,
例如
/share/data 10.0.1.1(rw,sync,all_squash,anonuid=1005,anongid=1005)
#指定單個ip可訪問共享文件目錄
/share/data 10.0.1.0/24(rw,sync,all_squash,anonuid=1005,anongid=1005)
#指定某個網段可以訪問共享文件目錄
或者
/share/data 10.0.1.1(rw,sync,all_squash,anonuid=1005,anongid=1005)
10.0.1.2(rw,sync,all_squash,anonuid=1005,anongid=1005)
#上面兩行是連接起來的哦,ip()空格ip(),多個ip使用空格分隔
#指定多ip可訪問共享文件目錄
systemctl start rpcbind.service
systemctl start nfs-server.service
#firewall-cmd --permanent --add-port=111/tcp
#firewall-cmd --permanent --add-port=2049/tcp
#firewall-cmd --reload
yum install nfs-utils.x86_64 -y
mount -t nfs 10.0.1.16:/share/data /opt
注:/opt目錄是自定義的,如果本地沒有此目錄會自動創建
vim /etc/fstab
添加10.0.1.16:/share/data /opt nfs defaults 0 0
參數值 | 內容說明 |
rw | 該目錄分享的權限是可讀寫 (read-write) 或唯讀 (read-only),但最終能不能讀寫,還是與檔案系統的 rwx 及身份有關。 |
sync | sync 代表資料會同步寫入到記憶體與硬碟中,async 則代表資料會先暫存於記憶體當中,而非直接寫入硬碟! |
no_root_squash | 用戶端使用 NFS 檔案系統的帳號若為 root 時,系統該如何判斷這個帳號的身份?預設的情況下,用戶端 root 的身份會由 root_squash 的設定壓縮成 nfsnobody, 如此對伺服器的系統會較有保障。但如果你想要開放用戶端使用 root 身份來操作伺服器的檔案系統,那麼這裡就得要開 no_root_squash 才行! |
all_squash | 不論登入 NFS 的使用者身份為何, 他的身份都會被壓縮成為匿名使用者,通常也就是 nobody(nfsnobody) 啦! |
anonuid | anon 意指 anonymous (匿名者) 前面關於 *_squash 提到的匿名使用者的 UID 設定值,通常為 nobody(nfsnobody),但是你可以自行設定這個 UID 的值!當然,這個 UID 必需要存在於你的 /etc/passwd 當中! anonuid 指的是 UID 而 anongid 則是群組的 GID 囉。 |
本文是參考鳥哥的私房菜-服務器而進行的實驗,且本文沒有鳥哥寫的那么詳細。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。