NFS学习

NFS : Network File System  网络文件系统

sun公司
 版本   NFSv2 NFSv3 NSFv4

RPC : Remote Procedure Call Protocol  远程过程调用协议,编程技术,简化分布式应用程序的

开发

工作原理:当地请求调用内核文件系统,内核文件系统发现请求的是远程网络的文件系统(NFS)时

,内核会向本地存根发起请求,本地存根向远程RPC服务请求数据,RPC服务器处理返回本地存根对

应的NFS服务端口,本地存根请求对应端口的NFS服务,NFS服务调用本地内核处理请求。
          C->RPC C->RPC S->S

Linux上的RPC服务器  Portmap  111端口 tcp/udp
RPC:二进制格式,文本格式(XMLRPC)

NFS:只能工作在unix/linux,常用于内网,认证环节很薄弱,不安全

服务器端:nfs-utils

service nfs start   需要potmap用时运行,默认是启动的,查看111端口

rpcinfo    //查看rpc运行服务监听的所有端口

rpcinfo -p localhost

启动的nfs主要进程:nfsd(文件传输进程)   mountd(挂载服务)  quotad(限定客户端使用配额)
  nfsd tcp 2049 端口
  mountd 端口由RPC服务随机选取
  quotad 端口由RPC服务随机选取
启动的服务

[[email protected] lib]# rpm -ql nfs-utils
/etc/nfsmount.conf
/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

nfslock服务,防止同一个文件被多个请求占用,用户的锁中断恢复。
nfs服务 要开启启动
chkconfig nfs on

配置文件  /etc/exports      man exports 查看帮助文档
配置格式
    /path/to/somefile    client1 client2 ...   多个客户端用空格隔开,每个客户端后

面加(),客户端可以是主机名 IP 网络组 通配符 定义客户端的,()里面定义文件属性
        /nfs/file     192.168.136.0/8(ro,async) 192.168.135.0/8(rw,sync)
        #开头的是注释
showmount
    -a ip  显示所有客户端名称,挂载的目录
    -e ip 显示共享(导出)的目录   showmount -e 192.168.136.135  查看指定IP的共享(导出)

目录,客户端也可查看服务端共享(导出)的目录
    -d ip  只显示被挂载的目录

客户端使用mount挂载
   mount -t nfs Server:/path/exports    /nfs/local

exportfs
   -a 和-r或-u同时使用
   -r 重新导出所有目录
   -u 取消导出所有
   -v  显示过程
exportfs -ra

nfs是要通过映射用户ID来管理里用户权限的,如果挂载的客户端有一个用户A的UID号和服务端

共享的文件属主相同的UID,则文件属主则会变为A。
文件系统导出的属性
  ro
  rw
  sync
  async
  root_squash  默认将管理员映射为来宾账号
  no_root_squasha
  all_squash   将所有用户映射为来宾账号    
  anonuid,anongid  anonuid=504 将用户映射为指定来宾的用户

/shared               192.168.136.0/8(rw,all_squash,anonuid=503,anongid=503)  //修改对应文件属主属组为503,然后客户端重新挂载exportfs -ra

这里遇到nfs属主属组都为nobody

[[email protected] nfs]# ll
total 0
-rw-r--r--. 1 nobody nobody 0 Jul 19 23:02 test
-rw-r--r--. 1 nobody nobody 0 Jul 19 23:18 test2
-rw-r--r--. 1 nobody nobody 0 Jul 19 23:42 test3
-rw-r--r--. 1 nobody nobody 0 Jul 19 23:42 test4
[[email protected] nfs]# 

网上搜答案都说这样解决,不过我没解决,有空在找

  

 方法一:mount中指定参数法

在mount挂载的时候指定使用v3版本去挂载,如下:

mount -t  nfs -o  vers=3 ip:/data1 /data1

显然不推荐该方法,既然有了V4版本,其肯定较V3版本做了很多优化,如果再用V3,显然跟不上时代的步伐 。

方法二:修改/etc/idmapd.conf文件

修改前,先看下为什么会mount成nobody,在/etc/idmapd.conf文件中,mapping配置下有如下两句 。

[Mapping] Nobody-User = nobody Nobody-Group = nobody

有人肯定说,直接修改这两句,变成想要的用户和组不就行了 ? 当然没这么简单,这里改了后,会发现mount的目录只有读的权限,没有写的权限 。想在彻底的解决该文件,只需要客户端和服务端各改一行就行了。修改方法为,取消/etc/idmapd.conf中如下行的注释,改为你所使用的根域名:

#Domain = local.domain.edu

如:都改为:

Domain = 361way.com

更改完成后,重启idmapd服务:

service rpcidmapd restart

至此,问题解决。记得是客户端和服务端都要修改才行,只改一处,问题仍然无法解决 。另外在umount的过程中,还可能遇到无法umount的问题: 

/etc/fstab 开机自动挂载

proc       /proc          proc    defaults,_rnetdev        0 0  // _rnetdev  如果开机系统无法挂载则不挂在,防止系统无法启动

nfs配置文件:/etc/sysconfig/nfs
       启用自定义端口防止和其它端口冲突
               Mountd_port
               Reqotaad_port

       Lockd_tcpport
                lockd_udpport

问题:

启动nfs报错

[[email protected] mnt]# service nfs restart
Shutting down NFS daemon:                                  [  OK  ]
Shutting down NFS mountd:                                  [  OK  ]
Shutting down NFS quotas:                                  [  OK  ]
Starting NFS services:                                     [  OK  ]
Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
                                                           [FAILED]
Starting NFS mountd:                                       [FAILED]
Starting NFS daemon: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
rpc.nfsd: unable to set any sockets for nfsd
                                                           [FAILED]
[[email protected] mnt]# 

解决:RH系操作系统在6.0版本之后没有portmap服务控制rpc的启动,由于NFS和nfslock的启动需要向

rpc进行注册,rpc不启动的话就会报错。

解决方法:启动rpcbind&rpcidmap rpcbind是6.0版本后默认的RPC服务,所以要先于nfs启动。如

果不启动rpcidmap则会造成用户权限的映射错误,用户的权限看起来是一串数字。

[[email protected] ~]# /etc/init.d/rpcbind start
Starting rpcbind:                                          [  OK  ]
[[email protected]- ~]# /etc/init.d/rpcidmapd start
Starting RPC idmapd:                                       [  OK  ]
[[email protected]- ~]# /etc/init.d/nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
 
时间: 2024-10-14 10:55:06

NFS学习的相关文章

nfs学习笔记

Linux: 提供rpc服务的程序, 监听在:111/tcp, 111/udp RPC: 编程技术,简化分布式应用程序的开发, 工作工程:NFS客户端-->RPC客户端-->RPC服务器端-->NFS服务器端 NFS: 工作在Unix/Linux nfs启动的进程: nfsd(nfs服务), mountd(挂载), quotad(配额) 关于端口: nfsd: 2049/tcp, 2049/udp mountd: 端口 quotad: 端口 半随机的 /etc/exports文件格式:

NFS学习小结

系统环境: [[email protected] ~]#  cat /etc/redhat-release CentOS release 6.7 (Final) [[email protected] ~]# [[email protected] ~]# uname -r 2.6.32-573.el6.x86_64 [[email protected] ~]# uname -m x86_64 [[email protected] ~]# rpm -qa nfs-utils rpcbind [[em

Linux运维 第三阶段 (七) NFS

Linux运维 第三阶段 (七) NFS配置 1,服务器端软件:安装nfs-utils和portmap(rpcbind)nfs-utils: 提供rpc.nfsd 及 rpc.mountd这两个NFS DAEMONS的套件 portmap: NFS其实可以被看作是一个RPC SERVER PROGRAM,而要启动一个RPC SERVER PROGRAM,都要做好PORT的对应工作,而且这样的任务就是由PORTMAP来完成的.通俗的说PortMap就是用来做PORT的mapping 的.NFS需要

NFS服务器学习搭建练习

实验拓扑: Linux Client -----RHEL5.9(vmnet1)----------(vmnet1) Win7 Client 实验环境: Red Hat Enterprise Linux Server5.4 vsftpd文件共享服务器IP 192.168.10.253 客户端IP 192.168.10.20 实验一:测试默认安装vsftpd的结果 匿名用户与本地用户都可以登录 匿名用户登录到/var/ftp,只能下载不能上传 本地用户登录到本地用户的家目录,可以上传和下载 服务器端

[学习嵌入式开发板]iTOP-4412实现NFS网络文件系统

本文转自迅为:http://www.topeetboard.com 学习平台:iTOP-4412开发板 本文讲解如何在 iTOP-4412 开发板上实现 NFS 网络文件系统. 我们使用的软硬件环境是:一台 PC,上面运行虚拟机 Ubuntu,iTOP-4412 开发板一块,PC 机和iTOP-4412 开发板通过网线连接到路由器上面,路由器分配的网段是 192.168.1.x 的 ip 地址,默认网关是路由器的 ip 地址,即 192.168.1.1.PC 机的 ip 地址是 192.168.

Linux云计算运维学习之NFS的工作原理

Linux学习的过程中,总有人会困惑,NFS的工作流程原理是怎样的? 通过NFS客户端向服务端存取文件时,请求数据的流程大致是这样的: 1)用户访问网站程序,程序在NFS客户端上发出存取NFS文件的请求,这时客户端的RPC服务就会通过网络向服务器端的RPC服务的111端口发出NFS文件存取功能的询问请求. 2)服务器端的RPC服务找到对应的已注册的NFS端口后,再通知NFS客户端的RPC服务 3)此时客户端获取到正确的端口,并与NFS daemon联机存取数据 4)客户端把数据存取成功后,返给前

linux从入门到精通学习-NFS

NFS网络文件系统 功能 nfs[network file system] 网络文件系统 是FreBSD系统支持的一种系统,允许在网络 上与其它人共享使用文件或文件夹 采用C/S模式 端口号 在vim /etc/services文件中查询端口号 默认为20049 安装nfs 服务端使用:yum install nfs-utils –y 客服端使用:mount 或showmount 配置文件 /etc/exports 查看服务和端口状态 service  nfs status netstat  -

初学者学习Linux之NFS

实例搭建nfs共享 1.  简单基本安装配置 第一步: 先配置好ip,然后关闭防火墙 Ifconfig eth0 172.17.204.131/24             //设置IP/24,/24代表子网掩码:255.255.255.0 Service iptables stop                         //关闭防火墙 先挂载文件,然后安装"nfs-clietn"人rpm包,也可以用yum安装 实现用rpm包安装nfs,先挂载软件包过来,保证光盘接入 然后来

linux安装NFS服务器学习

一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法. NFS 的基本原则是"容许不同的客户端及服务端通过一组RPC分享相同的文件系统",它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享. NF