NFS网络共享介绍与使用

摘要:
NFS是网络文件系统,是FreeBSD支持的文件系统之一。它允许网络中的计算机通过TCP/IP网络共享资源。NFS网络文件系统非常类似于Windows系统的网络共享、安全功能和网络驱动器映射,这也类似于Linux系统中的samba服务。然而,一般来说,Windows网络共享服务或samba服务用于办公室局域网共享,如果是大型网站,NFS通常用作中小型互联网网站集群架构后端的数据共享。)NFS共享目录NFS客户端地址1(参数1,参数2

什么是NFS(网络文件系统)?

         NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。它的主要功能是通过网络(一般是局域网)让不同主机系统之间可以共享文件或目录。NFS客户的(一般是应用服务器,例如,web)可以通过挂载(mount)的方式将NFS服务端共享的数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下)。从NFS客户端的机器本地看,NFS服务器端共享的目录就好像是客户机自建的磁盘分区或目录一样,而实际上确是远端的NFS服务器的目录。

       NFS网络文件系统很像windows系统的网络共享、安全功能、网络驱动器映射,这也和linux系统里的samba服务类似。只不过一般情况,windows网络共享服务或者samba服务用于办公局域网共享,互联网中小型网站集群架构后端常用NFS作为数据共享,如果是大型网站。那么有可能还会用到更复杂的分布式 文件系统,例如,Moosefs(mfs),glusterfs,FastDFS等等。

NFS网络共享介绍与使用第1张

例如:共享/data目录给192.168.43.0/24整个网段的主机可读写。

测试数据如下:

一、NFS服务测试环境环境:

服务器部署:

centos6.5X86_64       服务器角色     ip  192.168.43.117

centos6.5X86_64       客户端角色1   ip  192.168.43.118

centos6.5X86_64       客户端角色2   ip  192.168.43.119

服务端配置:

配置主机名:

hostname nfs-server     临时生效

vi /etc/sysconfig/nework  永久生效

 NFS网络共享介绍与使用第2张

查看操作系统及内核版本信息:

cat /etc/redhat-release   系统版本

uname –r              内核信息

uname –m             系统位数

NFS网络共享介绍与使用第3张

我们下查询一下机器上是否安装了NFS服务:

rpm –qa nfs-utils rpcbind  如果知道服务器名字,此命令效率高

rpm –qa|egrep “nfs-utils|recbind”

NFS网络共享介绍与使用第4张

安装nfs软件:centos6.5默认没有安装NFS软件包(centos5默认是会安装的。)因此我们可以:yum install nfs-utils rpcbind –y 命令来安装nfs软件。

NFS网络共享介绍与使用第5张

rpcinfo –p localhost  //查看NFS服务向rpc服务注册的端口信息,因为没启动nfs。

NFS网络共享介绍与使用第6张

如果rpcbind服务未启动,执行命令rpcinfo –p localhost检查时,会报如下错误:

NFS网络共享介绍与使用第7张

解决办法:执行/etc/init.d/rpcbind start 启动rpcbind服务即可。

启动rpcbind服务:

/etc/init.d/rpcbind status    //查看rpcbind服务状态

/etc/init.d/rpcbind start    //启动rpcbind服务

lsof -i :111                     //111端口为rpcbind服务对外提供服务的主端口。

NFS网络共享介绍与使用第8张

启动NFS服务:

  启动顺序:rpcbind服务,再启动nfs服务。

etc/init.d/nfs start          //启动nfs服务

netstat –lntup|grep 2049   //nfs主端口2049

NFS网络共享介绍与使用第9张

rpcinfo –p localhost  //查看NFS服务向rpc服务注册的端口信息。发现很多端口和功能的对应。

NFS网络共享介绍与使用第10张

我们可以把启动命令放到/etc/rc.lcal文件里。当然也可以用chkconfig管理。

NFS网络共享介绍与使用第11张

下面我们开始操作NFS服务端配置文件:

NFS服务的默认配置文件路径为:/etc/exports且默认是空的。

NFS网络共享介绍与使用第12张

exports配置文件格式:

NFS 共享的目录 NFS客户端地址(参1,参2…)

NFS 共享的目录  NFS客户端地址1(参1,参2…) 客户端地址2(参1,参2…)

NFS网络共享介绍与使用第13张

接下来,我们开始配置客户端1:

NFS网络共享介绍与使用第14张

如果执行showmunt -e 192.168.43.117命令出现No route to host错误提示,多数原因是因为防火墙没有关导致的。

解决方法:执行service iptables stop命令即可。

NFS客户端mount挂载的命令:

挂载命令   挂载的格式类型   NFS服务器提供的共享目录   NFS客户端要挂载的目录

mount             -t nfs                 ip地址:共享目录                   要挂载的目录(必须存在)

----------------------------------------------------------------------------------------------------------

mount –t nfs 192.168.43.117:/data /mnt 

df -h  查看磁盘挂载信息的情况(也可以用cat /proc/mounts)

NFS网络共享介绍与使用第15张

此时我们测试一下:

①在共享目录/data里创建一个a.txt文件,并写入123值a.txt中,然后再客户端挂载的目录中看是否有服务端创建的文件。

②在服务端删除a.txt文件,过后再客户端创建b.log文件。

服务端:

NFS网络共享介绍与使用第16张

客户端:

NFS网络共享介绍与使用第17张

NFS网络共享介绍与使用第18张

此时发现无法再客户端创建文件:

原因是/data属主为root,解决方法:修改属主

NFS网络共享介绍与使用第19张

在NFS服务端把要共享的NFS目录赋予默认用户nfsnobody用户和用户组的权限,
如果不设置会导致NFS客户端访问时无法通过NFS本地共享目录权限写入数据,
当然也可以给NFS服务端本地共享目录权限,但工作中最好不用,因为777权限太大了。

NFS网络共享介绍与使用第20张

NFS网络共享介绍与使用第21张

用户和用户组都是nfsnobody,服务端认为所有的客户端写入的文件和目录都会被压缩成默认的uid为65534和nfsnobody用户。

我们将rpcbind服务和挂载加入开启启动项:

NFS网络共享介绍与使用第22张

到此,nfs客户端1挂载成功。

注意:
实战的情况下,客户端是不用安装nfs软件的,centos6.4以前版本;
但是6.5、6.6要是不装的话有时会有问题。所有我们在做测试的时候,
都装nfs和rpbind。但是客户端不用配置nfs和启动

我们可以用同样的方法配置客户端2:

/etc/init.d/rpcbind start

vi /etc/rc.local

/etc/init.d/rpcbind start

mount –t nfs 192.168.43.117:/data /mnt

showmount –e 192.168.43.117

df –h

.......截图省略

此时在客户端2上,我们可以创建文件,也可以管理挂载的目录文件:

创建c.txt文件,并删除服务端a.txt和客户端1b.txt文件。

NFS网络共享介绍与使用第23张

卸载挂载点: umount -t nfs 192.168.43.117:/data /mnt

个人总结:

在工作中,我们配置/etc/exports内容为:/data 10.1.1.0/24(rw,sync,all_squash)

rw:表示读写。
ro:表示只读
sync:请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回。

优点:数据安全不会丢;缺点:性能比不启用该参数要差

async:写入时数据会先写到内存缓存区,直到硬盘有空挡才会再写入磁盘,
这样可以提升写入效率!风险为若服务器宕机或不正常关机,会损失缓存区中
未写入磁盘的数据

解决办法:服务器主板电池或加UPS不间断电源

all_squash:不管访问NFS Server共享目录的用户身份如何,它的权限都将被压缩成匿名
用户,同时它的UID和GID都会变成nfsnobody账号身份。在早期多个NFS客户端同时读
写NFS Server数据时,这个参数很有用
在生产中配置NFS的重要技巧:
1)确保所有客户端服务器对NFS共享目录具备相同的用户访问权限
a、all_squash把所有客户端都压缩成固定的匿名用户(UID相同)。
b、就是anonuid,anongid指定的UID和GID的用户。
2)所有的客户端和服务器端都需要有一个相同的UID和GID的用户,即nfsnobody(UID必须相同)


例如exports内配置的为:
/data 192.168.43.0/24(rw,sync)
/etc/init.d/nfs reload //在服务端
在客户端df -h 查看依旧是挂载状态,root用户切到/mnt目录下,可以创建目录寄文件;如果用普通用户切换到/mnt目录下,无法创建目录及文件。

反之,如果exports内配置为:/data 192.168.43.0/24(rw,sync,all_squash)
既可以在普通用户下创建目录及文件,可读可写。并且常见的文件及目录属主及属组都为nfsnobody。

如果追求极致:可以用如下参数挂载:
mount –t nfs –o bg,hard,intr,rsize=121072,wsize=121072 192.168.43.0:/data /mnt

安全挂载参数:
mount –t nfs –o nosuid,noexec,nodev,rw 192.168.43.117:/data /mnt

nosuid:不希望共享的存储被执行setuid的功能;
noexec:不希望共享的存储被执行二进制文件;
nodev: 不希望共享的存储创建的设备。

通过mount –o 指定挂载参数和在/etc/fstab里指定挂载参数效果是一样的,网络文件系统和本地的文件系统效果也是一样的。

有关NFS服务的所有服务器内核优化:
cat >>/etc/sysctl.conf<<eof
net.core.wmem_default=8388608
net.core.rmem_default=8388608
net.core.rmem_max=16777216
net.core.wmem_max=16777216
eof
执行sysctl –p 生效。

如果卸载的时候提示: umount:/mnt:device is busy
解决方法:需要退出挂载目录再进行卸载,或者是否NFS server宕机了,需要强制卸载:
mount –lf /mnt
此命令也可以:fuser –km /mnt 不建议用。

nfs性能优化挂载的例子:

①禁止更新目录及文件时间戳挂载
mount –t nfs –o noatime,nodiratime 192.168.43.117:/data
②安全加优化的挂载方式
mount –t nfs –o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,
wsize=131072 192.168.43.117:/data /mnt (intr:避免出问题时真个系统被NFS锁死)
③默认的挂载方式
mount –t nfs 192.168.43.117:/data /mnt

NFS客户端挂载排错思路:

首先确认NFS服务端配置和服务是否ok(服务端最后自己挂载自己看是否ok)

确认NFS客户端showmount是否ok(提示NO route to host关闭防火墙即可)

免责声明:文章转载自《NFS网络共享介绍与使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java学习day46-Thymeleaf数据回显vscode调试openresty下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

iOS 获取沙盒文件路径及 写入/删除 沙盒文件

出于安全考虑,iOS系统的沙盒机制规定每个应用都只能访问当前沙盒目录下面的文件(也有例外,比如系统通讯录能在用户授权的情况下被第三方应用访问),这个规则把iOS系统的封闭性展现的淋漓尽致。 一、沙盒中几个主要的目录 每个沙盒下面都有相似的目录结构,如下图所示(出自苹果官方文档): 每个应用的沙盒目录都是相似的,主要包含图中所示的4个目录: 1、MyAp...

sql server维护解决方案(备份、检查完整性、索引碎片整理)

请务必看原文原文:https://ola.hallengren.com/frequently-asked-questions.html经常问的问题入门 如何开始使用SQL Server维护解决方案? SQL Server维护解决方案入门很容易。跟着这些步骤。 下载MaintenanceSolution.sql。 在脚本中,找到以下行:SET @Ba...

Linux上安装ZooKeeper并设置开机启动(CentOS7+ZooKeeper3.4.10)

1下载Zookeeper 2安装启动测试        2.1上载压缩文件并解压       2.2新建 zookeeper配置文件       2.3安装JDK       2.4启动zookeeper       2.5查看zookeeper的状态 3将ZooKeeper设置为开机启动(可选)       3.1在init.d目录下新建脚本文件    ...

【Docker】使用 OverlayFS 存储驱动

参考教程:https://docs.docker.com/storage/storagedriver/overlayfs-driver/以下内容来自官方文档翻译 环境 virtual box 6.1 centos 7.8 docker 19.03 OverlayFS is a modern union filesystem that is simila...

rsync详细配置

1 说在前面的话 rsync官方网站: https://www.samba.org/ftp/rsync/rsync.html rsync是可以实现增量备份的工具。配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync,可以实现触发式的实时同步。 rsync可以实现scp的远程拷贝(rsync不支持远程到远程的拷贝,但scp支持)、...

Centos7 虚拟机挂载未分配的空间

客户给分配了一台虚拟机,系统安装是Centos7系统,空间为80G,df -h命令查看系统后发现只有40G左右的空间可用,剩余空间未分配。下面记录主要过程: 查看当前已分配的空间 df-h Java代码 [root@centosVM2~]#df-h 文件系统容量已用可用已用%挂载点 /dev/mapper/centos-root35G3.8G32...