一篇干货满满的 NFS 文章
NFS
1. 安装
yum install nfs-utils -y
2. 配置
主要配置文件: /etc/exports
示例配置:
/nfsfile 192.168.10.*(rw,sync,root_squash)
/nfsfile
表示 共享的目录,注意该目录的权限,如果我们设置好了其他的内容时,访问还是报错的话,我们可以试着将该目录的权限设置为 777。192.168.10.* ,指定 IP 允许访问,我们可以设置我们需要访问的客户端 IP 或者网段,不限制的话设置为
*
。(rw,sync,root_squash)
参数 作用 ro 只读 rw 读写 root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 sync 同步,同时将数据写入到内存与硬盘中,保证不丢失数据 async 异步,优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 anonuid 匿名用户ID anongid 匿名组ID 请注意,NFS客户端地址与权限之间没有空格。
NFS 指定端口
# 查看基础信息
[root@djx ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 36449 nlockmgr
100021 3 udp 36449 nlockmgr
100021 4 udp 36449 nlockmgr
100021 1 tcp 40638 nlockmgr
100021 3 tcp 40638 nlockmgr
100021 4 tcp 40638 nlockmgr
#指定 mountd 端口
[root@djx ~]# [root@mail test]# grep "PORT" /etc/sysconfig/nfs
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
STATD_OUTGOING_PORT=2020
# 上面的这些配置,原本默认是注释的,我们需要将# 去除,开启配置。然后我们 还需要在防火墙开启端口111和2049的tcp/udp,开启 tcp 端口 2020、662、892、32803,开启 udp 端口 32769
[root@djx ~]# firewall-cmd --add-port={111/tcp,111/udp,2049/tcp,2049/udp,32769/udp,2020/tcp,662/tcp,892/tcp,32803/tcp} --permanent
[root@djx ~]# firewll-cmd --reload
[root@djx ~]# systemctl restart nfs-server
[root@djx ~]# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 49166 status
100024 1 tcp 58683 status
100005 1 udp 892 mountd
100005 1 tcp 892 mountd
100005 2 udp 892 mountd
100005 2 tcp 892 mountd
100005 3 udp 892 mountd
100005 3 tcp 892 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 32769 nlockmgr
100021 3 udp 32769 nlockmgr
100021 4 udp 32769 nlockmgr
100021 1 tcp 32803 nlockmgr
100021 3 tcp 32803 nlockmgr
100021 4 tcp 32803 nlockmgr
我看到有些文章说还需要加配置
RQUOTAD_PORT
,但是我没有加该配置,也是可以的,我看/etc/sysconfig/nfs
文件里面也是没有这个配置的,所以没有加,也可能是版本不一样,我的环境是 CentOS Linux release 7.4.1708 , nfs 版本为: nfs-utils-1.3.0-0.61.el7.x86_64
3. 启动并添加到开机自启
由于在使用NFS服务进行文件共享之前,需要使用RPC(Remote Procedure Call,远程过程调用)服务将NFS服务器的IP地址和端口号等信息发送给客户端。因此,在启动NFS服务之前,还需要顺带重启并启用rpcbind服务程序,并将这两个服务一并加入开机启动项中。
[root@djx ~]# systemctl restart rpcbind
[root@djx ~]# systemctl enable rpcbind
[root@djx ~]# systemctl restart nfs-server
[root@djx ~]# systemctl enable nfs-server
4. NFS 客户端挂载
NFS客户端的配置步骤也十分简单。先使用showmount命令(以及必要的参数,见下表)查询NFS服务器的远程共享信息,其输出格式为“共享的目录名称 允许使用客户端地址”。
showmount命令中可用的参数以及作用
参数 | 作用 |
---|---|
-e | 显示NFS服务器的共享列表 |
-a | 显示本机挂载的文件资源的情况NFS资源的情况 |
-v | 显示版本号 |
[root@djx ~]# showmount -e 192.168.10.10
Export list for 192.168.10.10:
/nfsfile 192.168.10.*
然后在NFS客户端创建一个挂载目录。使用 mount 命令并结合-t参数,指定要挂载的文件系统的类型,并在命令后面写上服务器的IP地址、服务器上的共享目录以及要挂载到本地系统(即客户端)的目录。
[root@linuxprobe ~]# mkdir /nfsfile
[root@linuxprobe ~]# mount -t nfs 192.168.10.10:/nfsfile /nfsfile
挂载成功后就应该能够顺利地看到在执行前面的操作时写入的文件内容了。如果希望NFS文件共享服务能一直有效,则需要将其写入到fstab文件中:
[root@linuxprobe ~]# cat /nfsfile/readme
welcome to linuxprobe.com
[root@linuxprobe ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed May 4 19:26:23 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 1 1
UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2
/dev/mapper/rhel-swap swap swap defaults 0 0
/dev/cdrom /media/cdrom iso9660 defaults 0 0
192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0
5 报错与解决办法
5.1 NFS root 用户挂载但普通用户无写入权限。
最近在使用 NFS 的过程中遇到了这样的问题,就是我们挂载好共享的文件后(挂载只能 root 用户进行挂载),我们用普通用户来对挂载的目录进行创建文件是发现会报错的,会提示权限不足。
这个问题的解决办法是 :通过设置 anonuid=0
和 anongid=0
和 all_squash
。这个设置实现了无论NFS客户端使用什么账户访问,均映射为NFS服务器的 id 为 0 的用户,也就是 root 用户。这样普通用户也会有权限在该目录下面创建文件的权限,并且创建的文件的所有者是属于 root 的。
扩展: 当我们在客户端和服务端有相同的用户,而且 id 一致的时候,我们可以 设置
anonuid
为一致的 id。,这样我们创建文件的所有者就是 该 id 的所对应的用户了。 注意需要 id 一致哦。
5.2 网络错误 53 内容一
window连接linux nfs服务器 —— 网络错误 53
需要修改配置 ,增加参数: insecure
5.3 网络错误 53 内容二
针对的是 windows 2008 server作为客户端mount的时候
如果我们设置为上面的内容后,发现连接的时候还是报 53的错误。我们可以进行下面的第二步设置。
在 配置文件 /etc/exports
设置读写权限的时候 设置参数 no_root_squash
,不设置这个不行。
更改配置后需要重启 nfs server 。
systemctl start nfs-server
5.4 网络错误 53 内容三
我们映射的目录权限最好为 777 ,否则可能访问不到。
5.5 网络错误 53 内容四
客户端进行 mount
路径有误。 看下面示例:
例如映射的 目录是 /home
,那么 mount 的命令是 :
mount \\192.168.1.23\home X:\
例如映射的 目录是 /home/test
,那么 mount 的命令是 :
mount \\192.168.1.23\home/test X:\
注意多级目录后面就不是使用 \
而是用 /
。
5.6 网络错误 53 内容五
映射为本地的磁盘时,我们要选择我们没有使用的磁盘符。选用 X、Y、W
等这些平常一般不使用的盘符号。
6. Win 系统安装 NFS client
Windows 2008 server安装NFS Client所需软件
通过Server Manager,
1.添加角色,选中File Services,然后按照向导提示安装。
2.添加Features,安装Remote Server Administration Tools/Role Administration Tools/File Services Tool/Services for Network File System Tools
需要安装Services For Network File System
然后运行Services For Network File system,启动client for NFS
Win10 安装 NFS client
一篇干货满满的 NFS 文章的更多相关文章
- (转)干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码)
干货|这篇TensorFlow实例教程文章告诉你GANs为何引爆机器学习?(附源码) 该博客来源自:https://mp.weixin.qq.com/s?__biz=MzA4NzE1NzYyMw==& ...
- 《转载-两篇很好的文章整合》Android中自定义控件
两篇很好的文章,有相互借鉴的地方,整合到一起收藏 分别转载自:http://blog.csdn.net/xu_fu/article/details/7829721 http://www.cnblogs ...
- 吴恩达讲了干货满满的一节全新AI课,全程手写板书充满诚意非常干货
吴恩达讲了干货满满的一节全新AI课,全程手写板书充满诚意非常干货 摘要: 目前,AI技术做出的经济贡献几乎都来自监督学习,也就是学习从A到B,从输入到输出的映射.现在,监督学习.迁移学习.非监督学习. ...
- 给B公司的一些建议(又一篇烂尾的文章)
感慨:太多太多的悲伤故事,发生在自己身上,发生在自己的身边.因此,为了避免总是走"弯路",走"错误"的道路,最近一直在完善自己的理论模型. 烂尾说明:本文是一篇 ...
- 小鹏汽车技术中台实践 :微服务篇 InfoQ 今天 以下文章来源于InfoQ Pro
小鹏汽车技术中台实践 :微服务篇 InfoQ 今天 以下文章来源于InfoQ Pro
- 看完100篇Python技术精华文章,平均涨薪30%!
一个以技术为立身根基的教育机构做出来的微信号,干货程度会有多高? 马哥Linux运维公众号运营五年,从一开始的定位就是给技术人分享加薪干货的地方.这五年里,公众号运营最重的任务就是做内容.内容并不好做 ...
- 转一篇dudu大人的文章:程序员,用NuGet管理好你的包包
每个女人都有很多包包:其实男人也有,但只有会写程序的男人才有 —— 代码世界中的大“包”小“包”.这些大包小包,有花钱买的,有从开源市场淘的,也有自己或同事亲手制作的. 包包有个特点:容易坏,更新快, ...
- 转帖一篇sixxpack破解的文章!
星期天闲着没事玩游戏,玩游戏不能无外挂.于是百度了半天,找到了一个,看介绍貌似不错,就下载了下来.一看,竟然是用.net写的,下意识地Reflector了一下.发现竟是一个叫actmp的程序集.如图: ...
- 关于ssh的一篇很好的文章
源地址:http://www.w3hacker.com/?p=156 ssh-agent的manual写得倒是挺详细,可看了好几次都没怎么搞明白.08年在网上找到了非常好的一篇文章,An Illu ...
随机推荐
- mysql之innodb存储引擎---数据存储结构
一.背景 1.1文件组织架构 首先看一下mysql数据系统涉及到的文件组织架构,如下图所示: msyql文件组织架构图 从图看出: 1.日志文件:slow.log(慢日志),error.log(错误日 ...
- 2019年全国新课标I卷文理科数学LaTeX排版试题与解析
整体分析,没有偏怪难题之分,中等题偏多,题目较往年有题型改动变化,但难度还称不上很难.具体内容贴上链接! https://mp.weixin.qq.com/s/WKXhCKI_-z3UT-zUwI23 ...
- Android程序员接下来的路该如何走?
随着“5G”(第五代移动通信技术)商用进程越来越快,各个芯片和终端厂商们都已经开始布局准备,想必智能手机会是消费者最先能够接触到5G的重要终端,而和其相辅相生的移动互联网也势必会有新的发展. 但是和行 ...
- Net基础篇_学习笔记_第十一天_面向对象(关键字new和this)
new关键字 new:用来创建对象的.Person zsPerson=new Person();new帮助我们做了3件事儿:1).在内存中开辟一块空间2).在开辟的空间中创建对象3).调用对象的构造 ...
- windows平台:查看端口占用情况,请杀死端口对应进程PID
//查看 netstat -ano | findstr //杀死 taskkill /f /PID
- a417: 螺旋矩陣
题目: 每行有一正整数T,代表有几组测试数据 接下来有T行,每行有N.M两正整数 N为矩阵长宽,就是会有N*N矩阵 M为方向,M=1为顺时钟,M=2为逆时钟 N范围为1~100之间 思路: 所以,代码 ...
- maven下载jar包源码配置
两个依赖,就想下mail的源码包,因该怎么 <dependencies> <dependency> <groupId>javax.mail</groupId& ...
- MYSQL之概念基础篇
1数据库概述 1.1 数据管理技术的产生和发展 数据库技术是应数据库管理任务的需要而产生的.20世纪50年代中期以前,计算机主要是用于科学计算.当时的硬件状况是,外存只有纸带.卡片.磁带,没有磁盘等可 ...
- [Vue warn]: Duplicate keys detected: 'area'. This may cause an update error.
运行vue程序,浏览器报错: 原因:检测到重复的密钥:'area',因为在使用v-for循环绑定的时候,key的值是唯一的,不能相同,否则会出现意想不到的bug 解决办法:v-for时绑定的key唯一
- JavaScript自动播放背景音乐
问题描述 js控制audio自动播放音乐时报错: Uncaught (in promise) DOMException 我的报错之前的代码: <audio id="myaudio&qu ...