很多时候,对于一些文件管理,有很多的项目,大部分都是用磁盘进行存储管理!!!
部署到正式环境下,可能有多台linux服务器,那就会有这样的一个问题:
文件上传,上传到服务器A,服务器A的磁盘保存了这个文件;那服务器B,就无法读取到这个文件了!!!
那么,如何做到服务器B也能访问到服务器A的文件呢?
那就是文件共享了!!!
NFS就.NETwork File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。
那就是说,可以将服务器A的文件夹进行共享,服务器B就挂载服务器A的文件夹。
那就开干吧!!!装它!!!
服务名称:linux服务器
IP:[请查看资源分配文档]
操作系统:centos 6.9 x64
yum -y install nfs-utils nfs-utils-lib rpcbind
复制代码
注意:如果服务器无法上网,可以找一个能上网的服务器先下载相关依赖安装包(服务器系统需要一致,centos6对应或者centos7对应即可)。
依赖下载命令如下:
yumdownloader nfs-utils nfs-utils-lib rpcbind --resolve
复制代码
确定服务器的磁盘情况,再创建共享目录:
df -h
复制代码
mkdir /opt/App/uploaded-files
复制代码
编辑 /etc/sysconfig/nfs 文件:
vi /etc/sysconfig/nfs
复制代码
添加如下内容自定义端口:
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
复制代码
编辑 /etc/exports 文件:
vi /etc/exports
复制代码
添加如下内容:
#设置共享的ip段
/opt/app/uploaded-files xxx.xx.xx.*(insecure,rw,sync,no_root_squash,no_all_squash)
复制代码
下面是一些NFS共享的常用参数:
ro 只读访问
rw 读写访问
sync 资料同步写入到内存与硬盘当中
async 资料会先暂存于内存当中,而非直接写入硬盘
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
Hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash root用户具有根目录的完全管理访问权限
复制代码
启动服务器:
service rpcbind restart
service nfs restart
复制代码
设置开机启动:
chkconfig --level 35 rpcbind on
chkconfig --level 35 nfs on
复制代码
查看端口:
rpcinfo -p
复制代码
服务端验证NFS共享:
showmount -e
复制代码
注:正常能显示出上面设置的共享目录,如果报如下错误:
clnt_create: RPC: Program not registered
说明 rpcbind服务与NFS服务 启动顺序不对,把他俩都停了,重新启动,先启动rpcbind服务再启动nfs服务;
注:正常也能显示出上面设置的共享目录,如果报如下错误:
clnt_create: RPC: Port mapper fAIlure - Unable to receive: errno 113 (No route to host)
说明防火墙没有开启相应需要开启的端口,把防火墙关掉,再测试应该就可以正常了;不过防火墙比较重要,一般情况下,不会随意关闭,在服务端可开启如下命令列出的所有端口即可:
启动111,2049,30001,30002,30003,30004端口
vi /etc/sysconfig/iptables
复制代码
添加以下内容:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 111 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2049 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30001 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30002 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30003 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30004 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 111 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 2049 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 30001 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 30002 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 30003 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 30004 -j ACCEPT
复制代码
重启防火墙
service iptables restart
复制代码
目标主机showmount -e信息泄露
在正式环境对共享服务器的hosts.allow和hosts.deny两个文件进行配置修改。具体修改如下:
vi /etc/hosts.allow
复制代码
添加以下内容:
mountd:ip1
mountd:ip2
mountd:xxx.xx.xx.xx #(nfs服务器ip)
复制代码
vi /etc/hosts.deny
复制代码
添加以下内容:
mountd:all
复制代码
该文件修改保存后即刻生效,无需重启任何服务,nfs服务会优先读取hosts.allow文件再读取hosts.deny文件。
于是上面配置的最终结果为只有ip1和ip2段的IP可以访问查询共享目录,其他IP均拒绝访问查询共享目录。
nfs客户端结果如下:
showmount -e xxx.xx.xx.xx
rpc mount export: RPC: Authentication error; why = Failed (unspecified error)
复制代码
注意:xxx.xx.xx.xx为NFS服务器的ip地址
yum -y install nfs-utils rpcbind
复制代码
注意:如果服务器无法上网,可以找一个能上网的服务器先下载相关依赖安装包(服务器系统需要一致,centos6对应或者centos7对应即可)。
依赖下载命令如下:yumdownloader nfs-utils rpcbind --resolve
启动服务器:
service rpcbind restart
service nfs restart
复制代码
设置开机启动:
chkconfig rpcbind on
chkconfig nfs on
复制代码
mkdir /opt/app/uploaded-files
mount -t nfs xxx.xx.xx.xx:/opt/app/uploaded-files /opt/app/uploaded-files
复制代码
注意:xxx.xx.xx.xx为NFS服务器的ip地址
unmount /opt/app/uploaded-files
复制代码
df
复制代码
或者创建文件进行验证:
mkdir /opt/app/uploaded-files/test
复制代码
然后到服务端 /opt/app/uploaded-files 目录下,是否出现一个 test的文件夹即可;
vi /etc/fstab
复制代码
添加以下内容:
xxx.xx.xxx.xx:/opt/app/uploaded-files /opt/app/uploaded-files nfs rw,tcp,intr 0 1
复制代码
注意:xxx.xx.xx.xx为NFS服务器的ip地址
好了,以上就是linux部署nfs的全过程了,就是这样了!!!^_^
今天就先到这里了,溜了溜了溜了!!!^_^
作者:llsydn
链接:
https://juejin.cn/post/7088621154818064391