linux中使用nfs共享文件

NFS須要使用遠程過程調用 (RPC),也就是說,咱們並非只要啓動NFS, 還須要啓動RPC這個服務服務器

服務器端

CentOS 7.4
ip:172.16.0.1
共享/tmp目錄
共享/data目錄給172.16.0.2async

安裝nfstcp

# yum install rpcbind
# yum install nfs-utils
# service rpcbind start
# service nfs start

設置rpcbind和nfs服務開機啓動rest

# chkconfig nfs on
# chkconfig rpcbind on
也能夠設置rpcbind和nfs服務只在系統運行級別3和5自動啓動。
# chkconfig --level 35 rpcbind on
# chkconfig --level 35 nfs on

配置共享文件夾
在/etc/exports添加:
/data 172.16.0.2(rw) #對指定ip共享共享/data目錄
也能夠用共享給全部IP
/data *(rw,sync,no_root_squash) #共享/data目錄
|參數|做用|
|--|--|
|ro|只讀模式|
|rw|讀寫模式|
|root_squash|當NFS客戶端使用root用戶訪問時,映射爲NFS服務端的匿名用戶|
|no_root_squash|當NFS客戶端使用root用戶訪問時,映射爲NFS服務端的root用戶|
|sync|同時講數據寫入到內存與硬盤中,保證不丟失數據|
|async|優先將數據保存到內存,而後再寫入硬盤,效率更高,但可能形成數據丟失|code

修改後不用重啓nfs,執行如下命令生效:
# exportfs -aip

添加讀寫權限
chmod -R 666 /data內存

防火牆中開放端口
RedHat在7中更改了系統軟件,再也不使用iptables做爲系統的防火牆,而是使用了FirewallD,可是爲了兼容過去的命令也可使用iptables來設置防禦規則。
須要開放rpc(111端口),nfs(2049端口),nfs掛載端口(892端口),其中111和892是tcp,udp都用。rpc

# iptables -I INPUT -p tcp -m multiport --dports 111,892,2049 -j ACCEPT
# iptables -I INPUT -p udp -m multiport --dports 111,892 -j ACCEPT

上述配置系統重啓後失效,要永久有效,須要修改/etc/sysconfig/iptables-config配置文件,詳細請baidu
使用firewall,使用permanent參數,系統重啓後依然有效cmd

# firewall-cmd --zone=public --add-port=111/tcp --permanent
# firewall-cmd --zone=public --add-port=111/udp --permanent
# firewall-cmd --zone=public --add-port=892/tcp --permanent
# firewall-cmd --zone=public --add-port=892/ucp --permanent
# firewall-cmd --zone=public --add-port=2049/tcp --permanent
# systemctl restart firewalld.service  //重啓防火牆
# firewall-cmd --zone=dmz --list-ports //查看開放的端口

重啓nfsio

# service rpcbind restart
# service nfs restart
# showmount -e    //查看本身共享的目錄

客戶端

CentOS 7.4
ip:172.16.0.2

掛載172.16.0.1:/data到本地/data目錄
# mount -t nfs 172.16.0.1:/data /data
開機自動掛載
在/etc/fstab中添加
172.16.0.1:/data /data nfs defaults 0 0
添加讀寫權限
chmod -R 666 /data
若是仍是出現其餘權限問題,好比Permission denied等,能夠修改文件夾的全部者爲nfsnobody
chown nfsnobody.nfsnobody -R /data

相關文章
相關標籤/搜索