2016年1月27日 星期三

ubuntu 14.04架設NFS(Network Filesystem)

Service IP:110.1.1.1
Client IP:123.1.1.1

Server 

//更新系統及安裝相關package
$ sudo apt-get update
$ sudo apt-get install nfs-kernel-server

//建立提供的NFS資料夾
$ sudo mkdir /var/nfs

//修改資料夾擁有者
$ sudo chown nobody:nogroup /var/nfs

//修改開放可mount資料夾
$ sudo vi /etc/exports
//規則 [NFS server folder]       [client ip or hostname]([權限等設定])
//開放資料夾權限等資訊可參考說明(http://linux.vbird.org/linux_server/0330nfs.php#nfsclient_mount)
/home       110.1.1.1(rw,sync,no_root_squash,no_subtree_check)
/var/nfs    110.1.1.1(rw,sync,no_subtree_check)

//重新執行相關服務
$ sudo exportfs -a
$ sudo service nfs-kernel-server start

//檢查是否成功開放
$ sudo showmount -e localhost


NFS每次重新restart時都會導致port隨機產生,為了讓port可以固定,以下為設定方式。

$ vim /etc/default/nfs-common
STATDOPTS="--port 32765 --outgoing-port 32766"

$ vim /etc/default/nfs-kernel-server
RPCMOUNTDOPTS="-p 32767"

//網路上教學需要修改此檔案,但是本人操作後未修改仍然可以固定相關port
$ vim /etc/default/quota
RPCRQUOTADOPTS="-p 32769"

$ vim /etc/services
rpc.nfsd        2049/tcp                        # RPC nfsd
rpc.nfsd        2049/udp                        # RPC nfsd
rpc.nfs-cb      32764/tcp                       # RPC nfs callback
rpc.nfs-cb      32764/udp                       # RPC nfs callback
rpc.statd-bc    32765/tcp                       # RPC statd broadcast
rpc.statd-bc    32765/udp                       # RPC statd broadcast
rpc.statd       32766/tcp                       # RPC statd listen
rpc.statd       32766/udp                       # RPC statd listen
rpc.mountd      32767/tcp                       # RPC mountd
rpc.mountd      32767/udp                       # RPC mountd
rpc.lockd       32768/tcp                       # RPC lockd/nlockmgr
rpc.lockd       32768/udp                       # RPC lockd/nlockmgr
rpc.quotad      32769/tcp                       # RPC quotad
rpc.quotad      32769/udp                       # RPC quotad

$ vim /etc/modprobe.d/local.conf
options lockd nlm_udpport=32768 nlm_tcpport=32768
options nfs callback_tcpport=32764

//重新執行相關服務
$ sudo service nfs-kernel-server start

//查看修改結果
$ rpcinfo -p

依照以上設定port成功後,必須將防火牆開啟(AWS、GCE需去預設相關安全性地方開啟port)
TCP、UDP都得開啟以上範例的相關port
$ vim /etc/rc.local
iptables -A INPUT -i eth1 -p tcp -s 192.168.66.0/24 -m state --state NEW -m multiport --dport 111,2049,32764:32769 -j ACCEPT
iptables -A INPUT -i eth1 -p udp -s 192.168.66.0/24 -m state --state NEW -m multiport --dport 111,2049,32764:32769 -j ACCEPT

//restart iptables
$ service rc.local start

//並沒特別開啟
$ vim /etc/hosts.deny
ALL: ALL

//並沒特別開啟
$ vim /etc/hosts.allow 
portmap: ALL 




Client


//更新系統及安裝相關package
$ sudo apt-get update
$ sudo apt-get install nfs-common

//建立clinet放置NFS位置資料夾
$ sudo mkdir -p /mnt/nfs/home
$ sudo mkdir -p /mnt/nfs/var/nfs

//mount NFS路徑
//mount e.g mount -t nfs [NFS IP]:[client folder] [remote folder]
$ sudo mount -t nfs 123.1.1.1:/home /mnt/nfs/home
$ sudo mount -t nfs 123.1.1.1:/var/nfs /mnt/nfs/var/nfs

//可查詢cline目前mount哪些資料夾
$ mount -t nfs

//取消remote mount
//e.g umount [client folder]
$ umount /mnt/nfs/home
$ umount /mnt/nfs/var/nfs


client重新開機後掛載會取消,如需讓client自動掛載有以下兩種方式
//方法一
$ vim /etc/fstab
//規則說明
123.1.1.1:/home /mnt/nfs/home nfs defaults 1 1
123.1.1.1:/var/nfs /mnt/nfs/var/nfs nfs defaults 1 1

//方法二
$ vim /etc/rc.d/rc.local
//規則說明
mount -t nfs -o nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 \123.1.1.1:/home /mnt/nfs/home
mount -t nfs -o nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 \123.1.1.1:/var/nfs /mnt/nfs/var/nfs


參考網址:

沒有留言:

張貼留言