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

相关文章
相关标签/搜索