顯示廣告
隱藏 ✕
看板 KnucklesNote
作者 Knuckles (站長 那克斯)
標題 [CentOS] 檔案伺服器 NFS (CentOS 7)
時間 2017-02-15 Wed. 22:09:15


NFS (Network File System)
可以將 NFS 伺服器上的目錄,掛載到另一台主機上
讓多台主機可以共用一個檔案目錄

安裝環境: Linode CentOS 7

由於 NFS 會用到很多 port
需要使用 RPC (Remote Procedure Call) 服務來管理開啟的 port
所以必需先開啟 RPC 後再開啟 NFS
在伺服器與用戶端都要安裝

安裝NFS主程式 nfs-utils 時
就會一起安裝RPC的主程式 rpcbind

以下設定為伺服器端為 host0,
要開放 /var/nfs 目錄讓用戶端 host1 與 host2 掛載至 /home/nfs 存取


伺服器端的設定

$ sudo yum install nfs-utils

設定檔為 /etc/exports
檔案不一定存在,若沒有的話就新建一個

例如要設定將 /var/nfs 目錄開放給用戶端 host1 與 host2
$ sudo vim /etc/exports
/var/nfs    host1(rw)    host2(rw)

主機名稱也可以用IP,例如 192.168.0.1
後面小括弧的 rw 代表可讀寫(read-write),ro 的話代表唯讀(read-only)

目錄權限還會以用戶端帳號的UID來限制
例如用戶端的帳號knuckles,UID為501
若伺服器端的 /var/nfs 目錄設定擁有者knuckles的UID也是501
則掛載至用戶端後,用戶端帳號knuckles會有目錄擁有者的權限
所以最好兩邊的帳號UID要相同

若用戶端帳號的UID在伺服器端不存在,或是使用root時
在掛載的目錄權限會被更改為 nfsnobody

若不想讓root帳號權限變成 nfsnobody 的話,可以加上 no_root_squash
像這樣
/var/nfs    host1(rw,no_root_squash)    host2(rw,no_root_squash)




啟動 RPC 服務
$ sudo systemctl start rpcbind

啟動 NFS
$ sudo systemctl start nfs-server

啟動用來管理檔案鎖定問題的 nfs-lock
$ sudo systemctl start nfs-lock

設定開機自動啟動
$ sudo systemctl enable rpcbind
$ sudo systemctl enable nfs-server
$ sudo systemctl enable nfs-lock


若要修改 /etc/exports
不用重新啟動 nfs
只要用 exportfs -arv 即可重新掛載 /etc/exports 的設定


用戶端設定

$ sudo yum install nfs-utils

開啟 rpcbind 與 nfs-lock
$ sudo systemctl start rpcbind
$ sudo systemctl start nfs-lock
$ sudo systemctl enable rpcbind
$ sudo systemctl enable nfs-lock

將伺服器端 host0 的 /var/nfs 掛載至用戶端的 /home/nfs
$ sudo mount -t nfs host0:/var/nfs /home/nfs

使用 df 看看是否掛載成功

要卸載的話,使用
$ sudo umount /home/nfs

如果只是一般資料,不使用SUID、不需執行、不是裝置檔案
可以加上參數 -o nosuid,noexec,nodev 增加安全性

當網路斷線,或伺服器主機關機時,用戶端會持續嘗試掛載
加上參數 bg 可讓 mount 在背景執行,不會顯響到前景程式
加上參數 soft 在連線中斷後重覆呼叫,而非持續呼叫,減少系統延遲

如果是用區網時,可使用 rsize, wsize 增加讀寫區塊的大小以提升傳輸能力
預設值是 1024 (byte)

例如可以設定成這樣
$ sudo mount -t nfs -o nosuid,noexec,nodev,bg,soft,rsize=32768,wsize=32768 host0:/var/nfs /home/nfs


寫進fstab讓開機自動掛載
$ sudo vim /etc/fstab
加上這一行
host0:/var/nfs /home/nfs nfs nosuid,noexec,nodev,bg,soft,rsize=32768,wsize=32768 0 0


參考 http://linux.vbird.org/linux_server/0330nfs.php


□ 錯誤修改記錄

用戶端沒掛載成功

使用 df 看看沒有掛載上去的話,執行 mount -a 後再看看
執行 mount -a 沒回應的話,可能是被伺服器端防火牆阻檔了
檢查伺服器端的 /etc/hosts 看用戶端的IP是否正確
有修改的話要重啟防火牆以及 NFS 後再試試看






--
※ 作者: Knuckles 時間: 2017-02-15 22:09:15
※ 編輯: Knuckles 時間: 2017-02-25 00:39:44
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 352 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇