Linux环境下部署nfs

2,107 阅读6分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天,点击查看活动详情

部署nfs

问题描述

很多时候,对于一些文件管理,有很多的项目,大部分都是用磁盘进行存储管理!!!

部署到正式环境下,可能有多台linux服务器,那就会有这样的一个问题:

文件上传,上传到服务器A,服务器A的磁盘保存了这个文件;那服务器B,就无法读取到这个文件了!!!

那么,如何做到服务器B也能访问到服务器A的文件呢?

那就是文件共享了!!!

NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

那就是说,可以将服务器A的文件夹进行共享,服务器B就挂载服务器A的文件夹。

那就开干吧!!!装它!!!

image.png

一、 服务器资源

服务名称:linux服务器

IP:[请查看资源分配文档]

操作系统:CentOS 6.9 x64

二、服务端安装

2.1、NFS安装

yum -y install nfs-utils nfs-utils-lib rpcbind

注意:如果服务器无法上网,可以找一个能上网的服务器先下载相关依赖安装包(服务器系统需要一致,centos6对应或者centos7对应即可)。

依赖下载命令如下:

yumdownloader nfs-utils nfs-utils-lib rpcbind --resolve

2.2、NFS配置

确定服务器的磁盘情况,再创建共享目录:

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用户具有根目录的完全管理访问权限

2.3、NFS启动

启动服务器:

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)

说明防火墙没有开启相应需要开启的端口,把防火墙关掉,再测试应该就可以正常了;不过防火墙比较重要,一般情况下,不会随意关闭,在服务端可开启如下命令列出的所有端口即可:

2.4、配置防火墙

启动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

2.5、漏洞修复

目标主机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地址

三、客户端安装

3.1、NFS安装

yum -y install nfs-utils rpcbind

注意:如果服务器无法上网,可以找一个能上网的服务器先下载相关依赖安装包(服务器系统需要一致,centos6对应或者centos7对应即可)。

依赖下载命令如下:yumdownloader nfs-utils rpcbind --resolve

3.2、NFS启动

启动服务器:

service rpcbind restart

service nfs restart

设置开机启动:

chkconfig rpcbind on

chkconfig nfs on

3.3、创建挂载点

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地址

3.3、删除挂载点

unmount /opt/app/uploaded-files

3.4、验证挂载点

df

或者创建文件进行验证:

mkdir /opt/app/uploaded-files/test

然后到服务端 /opt/app/uploaded-files 目录下,是否出现一个 test的文件夹即可;

3.5、设置系统启动自动挂载

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地址

image.png

好了,以上就是linux部署nfs的全过程了,就是这样了!!!^_^

今天就先到这里了,溜了溜了溜了!!!^_^

image.png