阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux NFS服务器详解

280次阅读
没有评论

共计 6065 个字符,预计需要花费 16 分钟才能阅读完成。

What is NFS

NFS 是 Network FileSystem 的缩写,即网络文件系统,它可以实现挂载远程电脑上的设备到本地从而像访问本地磁盘一样操作,有点类似于 windows 的网上邻居。是 SUN 公司 1984 年开发的,v1 版本只在 SUN 公司内部使用过,v2, v3, v4 是公开版本,一般红帽 5 默认是 v3 版本,红帽 6 默认目前最新的 v4 版本。

 

How it works

我们知道一个程序是不可以直接操作硬件资源的,当一个程序需要读写硬盘数据时,需要把请求提交给内核 Kernel, 然后由 kernel 再相关的结果返回给进程,这个过程我们称为本地过程调用 Local Procedure Call. 如果当应用程序的进程要调用的库不在本地而是在远程主机上,这时我们就需要一种可以提供我们远程调用的技术,也就是我们经常会提到的 RPC–Remote Procedure Call, 那么 RPC 我们天天说,到底什么是 RPC 呢,简单的说 RPC 是为了简化公布式程序开发而开发出的一种编程技术,是一种技术框架,有了 RPC 开发人员就不用考虑本地如何去调用远程主机的库等资源,是透明的就像调用本地的一样,一切 RPC 就给办的妥妥的了。而著名的 portmap 就是 RPC 在 Linux 上的一种具体实现,工作在 TCP 和 UDP 的 111 号端口。

回到 NFS 上来简单说一下,NFS 客户端要请求 NFS 服务器时,首先会先把请求发给本地的 RPC stub 存根调用,可以理解成 RPC 客户端然后通过 RPC 客户端与 RPC 服务端联系,RPC 服务端通过分析知道请求的 NFS 资源,然后申请相应的空闲端口给 NFS 进程并通知给 RPC 客户端,这样 NFS 客户端就可以通过得到的端口号和服务器通信啦。

 

安装和配置

1、安装

使用 rpm –qa | grep nfs-utils 查看软件包是否已安装

如果未安装 yum install –y nsf-utils 安装即可

简单说几个安装生成比较重要的文件或程序

/etc/rc.d/init.d/nfs
/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/rpcgssd
/etc/rc.d/init.d/rpcidmapd
/etc/rc.d/init.d/rpcsvcgssd // 以上几个是生成的脚本
/etc/sysconfig/nfs //nfs 的配置文件
/sbin/rpc.lockd // 管理文件锁,防止同一文件多人同时读写造成文件损坏
/usr/sbin/exportfs // 这个命令很重要,修改了 exports 文件后不需要重启 nfs 服务就可以刷新服务资源靠的就是他
/usr/sbin/mountstats // 可以按挂载点查看客户端各种状态信息,很详细
/usr/sbin/nfsiostat // 按挂载点查看客户端 IO 详细状态信息
/usr/sbin/nfsstat // 可以查看服务端或客户端各种 NFS 状态信息
/usr/sbin/showmount // 查看 NFS 服务器和挂载上的客户端各种信息

2、配置使用

I) /etc/exports 这个文件控制 NFS 服务器共享出去的资源以及访问权限等

在 NFS 服务器上编辑此文件加上一行

/nfs(服务器上要共享出去的目录)192.168.0.0/24(rw,sync) 可以是单一的 IP 地址,也可以指定网段,rw- 可读写,sync- 同步写入,ro- 只读,rsync- 异步写入

mkdir /nfs 创建共享的目录

II) 保存退出启动 nfs 服务 service nfs start

启动后可以用以下命令查看已经成功共享

[root@ha1 hbase]# showmount -e localhost
Export list for localhost:
/nfs 192.168.188.0/24

III) 客户端挂载设备

mkdir /mnt/nfs 创建挂载点

mount –t nfs 192.168.188.128:/nfs /mnt/nfs

然后就可以切到 /mnt/nfs 目录下像操作本地磁盘一样了

此时在服务器上可以用 showmount –a localhost 查看都有哪些客户端挂载上来了

Linux NFS 服务器详解

3、一些小缺陷和高级应用

nfs 一个比较薄弱的环节在于对用户的身份认证,因为他是通过连接上来的用户的 UID 来识别用户的,所以只要你的 UID 和服务器上的某个存在的用户 UID 相同,你就可以拥有和此用户相同的权限,千说万说不如一看,上图:

在服务器上建立 uid 为 8888 的用户 Hadoop,在 /nfs 目录创建 hadoop 目录并改属主属组为 hadoop

Linux NFS 服务器详解

Linux NFS 服务器详解

在客户端创建一个用户 openstack 其 uid 也为 8888,切换到已挂载的 /mnt/nfs 目录下,可以看到 hadoop 这个目录的属主属组已经变成 openstack 了,

Linux NFS 服务器详解

Linux NFS 服务器详解

再来测试一下权限:服务端用 hadoop 创建文件,客户端修改,删除完全无压力,呵呵是不是挺危险的呢。

Linux NFS 服务器详解

 

Linux NFS 服务器详解

 

没问题,nfs 开发大神当时也意识到了这个缺陷,所以还是一点小小的补救措施的。

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2013-11/92209p2.htm

 

相关阅读:

Ubuntu 12.04 安装 NFS server http://www.linuxidc.com/Linux/2012-09/70728.htm

NFS 服务器安装配置实现 Ubuntu 12.04 与 ARM 文件共享 http://www.linuxidc.com/Linux/2012-10/73159.htm

Ubuntu 搭建 nfs 服务器 http://www.linuxidc.com/Linux/2012-10/71930.htm

文件服务器 NFS 配置详解 http://www.linuxidc.com/Linux/2013-06/86542.htm

Ubuntu 下搭建 NFS 网络文件系统服务器 http://www.linuxidc.com/Linux/2013-07/87367.htm

Heartbeat_ldirector+LB+NFS 实现 HA 及 LB、文件共享 http://www.linuxidc.com/Linux/2013-06/85292.htm

CentOS 5.5 配置 NFS 服务器教程 http://www.linuxidc.com/Linux/2013-03/81737.htm

Ubuntu 12.10 下 NFS 的安装使用 http://www.linuxidc.com/Linux/2013-03/80478.htm

在 /etc/exports 权限控制可以可以有如下选项控制

root_squash 此项是默认就启用的,有的朋友可能已经发现了,当你在客户机上用 root 操作的时候,是没有其他任何权限的,因为对于 uid= 0 的 root 账户已经被映射为其他用户了,当然要映射为哪个用户也是可以自己去定义的。

no_root_squash 顾名思义,这个选项就是不启用 root 的账号的映射,这样是不是很爽啊,你本地的用户可以作远程机器的 root 账号来用,可以为所欲为,当然这样是不安全的。这个功能在无盘系统中会比较有用,其他情况就切记一定不要开啦。

all_squash 这个就更见名知义啦,所有 nfs 客户端连接上来的用户都全部映射为一个用户

anonuid, anongid 这两项接在 root_squash 或 all_squash 后面定义要映射到哪个用户

少废话,没图说个 jj

 

look… root 只是个摆设,傀儡是也,木有实权。。。

Linux NFS 服务器详解

 

废话不说,加上 no_root_squash

Linux NFS 服务器详解

忘了说这个非常重要的命令 exportfs 了,常用主要两个参数 –ra 和 –ru r 就是 reexport 重新输出,a 就是 all 所有, u 就是 unexport,这样不用重启 nfs 服务就可以使 export 配置立刻生效,以防影响正在使用中的用户,其他选项 man exports 吧,学习 linux 会看 man 文档也是一个灰赏重要的技能撒。

Linux NFS 服务器详解

Look again… root 不再是傀儡鸟。。。

Linux NFS 服务器详解

on more… 把所有客户都 squash 到 Hadoop 上 Linux NFS 服务器详解

 

为了使效果明显一些,我新建一个用户 bob,进 hadoop 目录哈哈一样畅通无阻,为所欲为,也尝尝做一回土豪的赶脚。。

Linux NFS 服务器详解

好吧 NFS 配置是个比较简单的活,暂且就说这么多了,简单归简单,系统管理可是个细活,一定要小心谨慎之。其他的更多功能小伙伴们根据需求自己搭配吧,菜鸟在此献丑了,有不对的地方亲一定要给指出来啊,我们共同进步。你可以打我骂我拿砖拍我。。。千万不要不理我,,,土豪。。。

What is NFS

NFS 是 Network FileSystem 的缩写,即网络文件系统,它可以实现挂载远程电脑上的设备到本地从而像访问本地磁盘一样操作,有点类似于 windows 的网上邻居。是 SUN 公司 1984 年开发的,v1 版本只在 SUN 公司内部使用过,v2, v3, v4 是公开版本,一般红帽 5 默认是 v3 版本,红帽 6 默认目前最新的 v4 版本。

 

How it works

我们知道一个程序是不可以直接操作硬件资源的,当一个程序需要读写硬盘数据时,需要把请求提交给内核 Kernel, 然后由 kernel 再相关的结果返回给进程,这个过程我们称为本地过程调用 Local Procedure Call. 如果当应用程序的进程要调用的库不在本地而是在远程主机上,这时我们就需要一种可以提供我们远程调用的技术,也就是我们经常会提到的 RPC–Remote Procedure Call, 那么 RPC 我们天天说,到底什么是 RPC 呢,简单的说 RPC 是为了简化公布式程序开发而开发出的一种编程技术,是一种技术框架,有了 RPC 开发人员就不用考虑本地如何去调用远程主机的库等资源,是透明的就像调用本地的一样,一切 RPC 就给办的妥妥的了。而著名的 portmap 就是 RPC 在 Linux 上的一种具体实现,工作在 TCP 和 UDP 的 111 号端口。

回到 NFS 上来简单说一下,NFS 客户端要请求 NFS 服务器时,首先会先把请求发给本地的 RPC stub 存根调用,可以理解成 RPC 客户端然后通过 RPC 客户端与 RPC 服务端联系,RPC 服务端通过分析知道请求的 NFS 资源,然后申请相应的空闲端口给 NFS 进程并通知给 RPC 客户端,这样 NFS 客户端就可以通过得到的端口号和服务器通信啦。

 

安装和配置

1、安装

使用 rpm –qa | grep nfs-utils 查看软件包是否已安装

如果未安装 yum install –y nsf-utils 安装即可

简单说几个安装生成比较重要的文件或程序

/etc/rc.d/init.d/nfs
/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/rpcgssd
/etc/rc.d/init.d/rpcidmapd
/etc/rc.d/init.d/rpcsvcgssd // 以上几个是生成的脚本
/etc/sysconfig/nfs //nfs 的配置文件
/sbin/rpc.lockd // 管理文件锁,防止同一文件多人同时读写造成文件损坏
/usr/sbin/exportfs // 这个命令很重要,修改了 exports 文件后不需要重启 nfs 服务就可以刷新服务资源靠的就是他
/usr/sbin/mountstats // 可以按挂载点查看客户端各种状态信息,很详细
/usr/sbin/nfsiostat // 按挂载点查看客户端 IO 详细状态信息
/usr/sbin/nfsstat // 可以查看服务端或客户端各种 NFS 状态信息
/usr/sbin/showmount // 查看 NFS 服务器和挂载上的客户端各种信息

2、配置使用

I) /etc/exports 这个文件控制 NFS 服务器共享出去的资源以及访问权限等

在 NFS 服务器上编辑此文件加上一行

/nfs(服务器上要共享出去的目录)192.168.0.0/24(rw,sync) 可以是单一的 IP 地址,也可以指定网段,rw- 可读写,sync- 同步写入,ro- 只读,rsync- 异步写入

mkdir /nfs 创建共享的目录

II) 保存退出启动 nfs 服务 service nfs start

启动后可以用以下命令查看已经成功共享

[root@ha1 hbase]# showmount -e localhost
Export list for localhost:
/nfs 192.168.188.0/24

III) 客户端挂载设备

mkdir /mnt/nfs 创建挂载点

mount –t nfs 192.168.188.128:/nfs /mnt/nfs

然后就可以切到 /mnt/nfs 目录下像操作本地磁盘一样了

此时在服务器上可以用 showmount –a localhost 查看都有哪些客户端挂载上来了

Linux NFS 服务器详解

3、一些小缺陷和高级应用

nfs 一个比较薄弱的环节在于对用户的身份认证,因为他是通过连接上来的用户的 UID 来识别用户的,所以只要你的 UID 和服务器上的某个存在的用户 UID 相同,你就可以拥有和此用户相同的权限,千说万说不如一看,上图:

在服务器上建立 uid 为 8888 的用户 Hadoop,在 /nfs 目录创建 hadoop 目录并改属主属组为 hadoop

Linux NFS 服务器详解

Linux NFS 服务器详解

在客户端创建一个用户 openstack 其 uid 也为 8888,切换到已挂载的 /mnt/nfs 目录下,可以看到 hadoop 这个目录的属主属组已经变成 openstack 了,

Linux NFS 服务器详解

Linux NFS 服务器详解

再来测试一下权限:服务端用 hadoop 创建文件,客户端修改,删除完全无压力,呵呵是不是挺危险的呢。

Linux NFS 服务器详解

 

Linux NFS 服务器详解

 

没问题,nfs 开发大神当时也意识到了这个缺陷,所以还是一点小小的补救措施的。

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2013-11/92209p2.htm

 

相关阅读:

Ubuntu 12.04 安装 NFS server http://www.linuxidc.com/Linux/2012-09/70728.htm

NFS 服务器安装配置实现 Ubuntu 12.04 与 ARM 文件共享 http://www.linuxidc.com/Linux/2012-10/73159.htm

Ubuntu 搭建 nfs 服务器 http://www.linuxidc.com/Linux/2012-10/71930.htm

文件服务器 NFS 配置详解 http://www.linuxidc.com/Linux/2013-06/86542.htm

Ubuntu 下搭建 NFS 网络文件系统服务器 http://www.linuxidc.com/Linux/2013-07/87367.htm

Heartbeat_ldirector+LB+NFS 实现 HA 及 LB、文件共享 http://www.linuxidc.com/Linux/2013-06/85292.htm

CentOS 5.5 配置 NFS 服务器教程 http://www.linuxidc.com/Linux/2013-03/81737.htm

Ubuntu 12.10 下 NFS 的安装使用 http://www.linuxidc.com/Linux/2013-03/80478.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计6065字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中