看板 KnucklesNote
作者 標題 [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 累積人氣: 359
回列表(←)
分享