建立 NFS 服務,含NFSv4

最近公司這邊,主機硬碟空間不足,最後決定架設NFS服務(有人一定會問為什麼不使用 samba ,其原因是 nfs 效能比較好),之前就有架過,可是是很久之前的事了,這次再架時,還是有一些問題,在此在記憶還記得的情況下,做一下記錄好了,如下:

環境如下:

NFS Server IP: 192.168.1.30 ( Ubutun Server 8.04 LTS)

Client IP:192.168.1.2、192.168.1.3

分享目錄: /backup/1.2 與 /backup/1.3

NFS Server 設定:

Step1:安裝 ntf 套件
$ sudo apt-get install nfs-kernel-server

Step2:建立分享目錄
$ sudo mkdir -p /backup/1.2 && sudo mkdir /backup/1.3

Step3:建立NFSV4設定
//建立pipe 目錄給 nfsv4 使用,如果已經有就不用建立
$ sudo mkdir -p /var/lib/nfs/rpc_pipefs

//編輯 /etc/fstab,並啟動掛載
$ sudo vi /etc/fstab
rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs defaults 0 0
nfsd /proc/fs/nfsd nfsd 0 0
$ sudo mount rpc_pipefs && sudo mount nfsd

//編輯 /etc/default/nfs-common,啟動 NFSv4,改成如下設定
$ sudo vi /etc/default/nfs-common
# Do you want to start the idmapd daemon? It is only needed for NFSv4.
NEED_IDMAPD= yes

Step4:在 Server重新啟動相關服務
//重新啟動 nfs 服務
$ sudo /etc/init.d/portmap restart
$ sudo /etc/init.d/nfs-kernel-server restart
$ sudo /etc/init.d/nfs-common restart

Step5:設定 nfs 主要設定檔
$ sudo vi /etc/exports
#目錄 允許IP/netmask或domain(參數)
/backup 192.168.1.*(rw,fsid=0,nohide,insecure,no_subtree_check,async,root_squash,anonuid=512,anongid=512)
/backup/1.2 192.168.1.2(rw,nohide,insecure,no_subtree_check,async,root_squash)
/backup/1.3 192.168.1.3(rw,nohide,insecure,no_subtree_check,async,root_squash)

rw:分享目錄可以讀寫
ro:分享目錄只能唯讀
fsid=0:定義 NFSv4 中的根目錄,只能有一個
nohide:目前掛載子目錄
insecure:允許 client 自行決定自動的機器使用的 port
no_subtree_check:不做權限測試
async:允許非同步
root_squash:如果clinet 以 root 掛載時,其目錄權限會被成匿名權限
anonuid:指定 Client 在操作該目錄的權限帳號
anongid:指定 Client 在操作該目錄的權限群組

Step6:重新載入設定
$ sudo exportfs -rv

註:如果核心不支援 NFSv4,除了更新核心版本外,還可以使用 NFSv3

Client 設定:
Step1:啟動相關服務
//對於 client 需要安裝,是 Client 端哦,別搞錯了
$ sudo apt-get -y install nfs-common
$ sudo /etc/init.d//portmap restart && sudo /etc/init.d/nfs-commom restart

Step2:掛載 nfs 分享目錄,在此只設定 1.2 的主機,至1.3也是筆照即可
$ sudo mkdir -p /nfs/1.2
$ sudo mount -t nfs4 192.168.1.30:/ /nfs
$ sudo mount -t nfs4 192.168.1.30:/backup/1.2 /backup/1.2

註:
1、在 Server 設定 /etc/exports,其中分享 /backup 其參數是有設定 fsid=0 ,
故此掛載時,必須指定 IP:/ 而不是 IP:/backup,這部份是 NFSv4 的設定,如果是
NFSv3 就沒有這種設定,。
2、在 Server 設定 /etc/exports,其中有設定參數有設定 nohide,當我們掛載 /backup
時,應該會自動掛載目錄下的子目錄,這部份我還沒有試出來。

Setp3:設定開機自動啟動
$ sudo vi /etc/fstab
192.168.1.30:/ /backup nfs4 defaults,rsize=32768,nosuid 0 2
192.168.1.30:/backup/1.2 /backup/1.2 nfs4 defaults 0 2

$ sudo mount -a

註:其在掛載時,可以額外指定參數

rsize:每次讀取的大小,預設是1024 byte, 在區域下,建議設成 rsize= 8192,NFSv4最大到 32768
wsize:每次寫入的大小,和rsize 一權的設定值
proto=udp:使用udp擬定來傳輸資料
nosuid:掛載不使用 suid 特殊權限

安全性設定:

設定 IPTABLES
iptables -A INPUT -i eth0 -p TCP -s 192.168.1.0/24 –dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UTP -s 192.168.1.0/24 –dport 111 -j ACCEPT

設定 TCP_Wrappers
$ vi /etc/hosts.allow
portmap: 192.168.1.2
portmap: 192.168.1.3

$ vi /etc/hosts.deny
portmap: ALL

發表留言