Linux的NFS服务的深度学习

NFS服务器:      

  NFS服务,是允许网络中的计算机之间通过TCP/IP网络共享资源,主要在Lunix系列操作系统上使用。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样(共享使用服务器文件)。

        NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中看来,那个远程主机的目录就好像是自己的一个磁盘分区一样。

与FTP的区别在于:NFS是将共享的文件创建出来,然后客户端把服务器的目录挂载到本地的目录上,而访问的挂载目录就相当于访问服务器的的共享目录

NFS服务器文件配置:

//在服务端上配置服务需要的插件(rpcbind和nfs)
[root@localhost ~]# yum install rpcbind
[root@localhost ~]# yum install nfs-utils

//nfs-utils提供NFS服务
//rpcbind则是提供支持NFS服务的端口号

//nfs的主配置文件在/etc/export下
[root@lxb ~]# vim /etc/exports

//初始情况下,该文件为空文件

而文件可以配置的格式为:
共享目录文件(权限)    主机名(权限)    

共享的目录文件:
是指服务器共享的目录,而这个共享的目录在客户端上的具体操作权限取决于服务端上改文件的具体权限

主机名:
①完整的IP或者是网段,如172.24.8.128或172.24.8.0/24或172.24.8.128/255.255.255.0
②也可以使用主机名,但主机名必须要在/etc/hosts内,存在映射关系(ip -> 主机名)
③或可以使用DNS域名解析解析出对应的IP地址(有可以解析这个域名的DNS服务器)
④还可以用 * 来代表所有主机(网络的缺省地址0.0.0.0/0)

文件读取的权限: ro/rw
ro:只读   rw:读写   //但是最终能否读写,还是与文件系统的rwx有关
  
no_root_squash / root_squash	默认为root_squash
如果客户端在共享目录里创建的文件的所属者和所属组是root用户和root组,那么显示文件的属主和属组时有以下两种情况:
    no_root_squash --- 文件的所属者和所属组是root用户和root组
    root_squash    --- 将root用户和组映射为匿名用户和组(默认)
    
all_squash / no_all_squash      默认为no_all_squash
 	all_squash    --- 客户端所有用户创建文件时,客户端会将文件的用户和组映射为匿名用户和组
    no_all_squash --- 客户端普通用户创建的文件的UID和GID是多少,服务端就显示为多少(默认)

anonuid=    anongid=	
    将文件的用户和组映射为指定的UID和GID,若不指定默认为  65534 ---> (nfsnobody)

//而在客户端上需要使用nfs-untils的showmount -e 功能
此时会显示服务器的共享状态
//此时需要通过挂载然后,才能对共享文件操作

NFS的自动挂载:

        在一般NFS文件系统的使用过程中,如果客户端要使用服务端所提供的文件系统:

        ①可在/etc/rc.d/rc.local中设置开机时自动挂载(/etc/rc.d/rc.local文件中写入的命令,在每次启动系统用户登录之前都会执行一次)

        ②也可以在登录系统后手动利用mount来挂载

        由于网络的问题,NFS服务器与客户端的连接不会一直存在,当我们挂载了NFS服务器之后,任何一方脱机都可能造成另外一方等待超时,所以有了自动挂载的配置要求:

  • 当客户端在有使用NFS文件系统的需求时才让系统自动挂载
  • 当NFS文件系统使用完毕后,让NFS自动卸载

        autofs这个服务是在客户端的上面,它会持续的检测某个指定的目录,并预先设置当使用到该目录的某个子目录时,将会取得来自服务器端的NFS文件系统资源,并进行自动挂载的操作。

//在客户端下载auto服务
[root@lxb ~]# yum install autofs -y

//autofs的配置
①在主配置文件里面指定被检测的特定目录为/nfs,(autofs会主动建立该目录),对应的数据文件是/etc/auto.nfs(可自定义文件名)
[root@lxb ~]# vim /etc/auto.master
/nfs    /etc/auto.nfs
 
②建立数据对应文件内(/etc/auto.nfs)的挂载信息与服务器对应的资源,
    #该文件是自己创建的。
    #该文件的格式如下:
    #本地端子目录	[-挂载参数]	 服务器所提供的目录
    本地端子目录表示你要将服务器所提供的目录挂载在客户端的/nfs的目录名
    挂载参数可不写
 参数	                            参数功能
fg/bg	        当执行挂载时,该挂载行为会在前台(fg)/后台(bg)执行
                若在前台执行,则mount会持续尝试挂载,直到成功/time out为止
                若为后台执行,则mount会在后台持续多次进行mount,不会影响到前台的程序运行

soft/hard	    hard:当两者之间任何一台主机脱机,则RPC会持续地呼叫,直到对方恢复连接为止            
                soft:RPC会在time out后重复呼叫,而非持续呼叫

intr	        使用上面提到的hard方式挂载时,
                若加上intr这个参数,则当RPC持续呼叫时,该次的呼叫是可以被中断的

rsize/wsize	    读出(rsize)/写入(wsize)的区块大小
                这个设置值可以影响客户端与服务器端传输数据的缓冲记忆容量

//此时配置自动挂载
[root@lxb ~]# vim /etc/auto.nfs 
guazai  192.168.220.134:/nfs/share
 
[root@lxb ~]# systemctl restart autofs 

NFS属性练习:

服务器创建两个共享文件,一个只读,另一个读写:

//服务器配置共享文件/nfs/{shared,shared2}
[root@lxb ~]# mkdir -pv /nfs/{shared,shared2}

[root@lxb ~]# vim /etc/exports
/nfs/shared2  *(ro)
/nfs/shared   *(rw)

//此时查看客户端
[root@localhost ~]# showmount -e 192.168.220.234
Export list for 192.168.220.234:
/nfs/shared  *
/nfs/shared2 *

//客户端挂载文件
[root@localhost ~]# mount 192.168.220.234:/nfs/shared  /guazai1
[root@localhost ~]# mount 192.168.220.234:/nfs/shared2  /guazai2

//此时在客户端创建文件需要服务器权限
[root@lxb nfs]# chmod o+w /nfs/shared

//创建文件
[root@localhost hh]# vim 8
[root@localhost hh]# ll
-rw-r--r--. 1 nobody nobody  4 Dec 23 21:18 8

//此时文件为默认匿名,但是在用户lxb下创建就是本人
[root@localhost hh]# ll
-rw-rw-r--. 1 lxb    lxb     6 Dec 23 21:08 7

//如果需要修改,则需要在服务器修改为:
[root@lxb nfs]# vim /etc/exports
/nfs/shared   *(rw,no_root_squash)

//重启服务,并在客户端上查看
[root@localhost hh]# vim 9
[root@localhost hh]# ll
-rw-r--r--. 1 root   root    7 Dec 23 21:32 9


//对于ro权限的挂载目录,无论在服务器怎么给权限,都无法在客户端进行文件操作

 设置指定用户名映射:

#开放/nfs/upload目录,该目录为192.168.220.0/24网段的主机的数据上传目录,
#并将所有该网段主机上传文件的所属者和所属组映射为nfs-upload,其UID和GID为2001

//第一步配置文件
[root@lxb tom]# cat /etc/exports
/nfs/upload   192.168.220.0/24(rw,anonuid=2001,anongid=2001)   

//重启服务,并在服务器上查看挂载情况
[root@lxb tom]# showmount -e 192.168.220.234
Export list for 192.168.220.234:
/nfs/shared  *
/nfs/shared2 *
/nfs/upload  192.168.220.0/24

//此时去客户端查看挂载情况,并挂载到客户端
[root@localhost /]# showmount  -e 192.168.220.234
Export list for 192.168.220.234:
/nfs/shared  *
/nfs/shared2 *
/nfs/upload  192.168.220.0/24
[root@localhost /]# mount 192.168.220.234:/nfs/upload /guazai3

//在客户端创建文件
[root@localhost /]# cd guazai3
[root@localhost guazai3]# vim 1
[root@localhost guazai3]# ll
total 4
-rw-r--r--. 1 2001 2001 5 Dec 23 22:27 1

//此时发现文件的所属人和所属组为2001
//原因:  服务端固定的uid和gid为2001 ,在客户端没有产生对应映射的uid和gid
//此时在服务端或客户端创建uid与gid为2001的nfs-load
//会发现此时组和主为nfs-load创建的文件
[root@lxb nfs]# cd /nfs/upload/
[root@lxb upload]# ll
总用量 4
-rw-r--r--. 1 nfs-load nfs-load 5 12月 23 22:27 1

#将/home/tom(该目录为uid=1111,gid=1111的tom用户的家目录)
#仅共享给192.168.220.234这台主机上的jerry用户,jerry对该目录具有访问、新建和删除文件的权限

[root@lxb nfs]# vim /etc/exports

/nfs/shared2  *(ro)
/nfs/shared   *(rw,no_root_squash)
/nfs/upload   192.168.220.0/24(rw,anonuid=2001,anongid=2001)
/nfs/tom    192.168.220.132(rw,anonuid=1111,anongid=1111)

//此时要注意!!!需要先设置  /nfs/tom    192.168.220.132(rw),并挂载后,
//再去附加anonuid=1111,anongid=1111 ,否则会存在无法读取的问题!!!

//挂载重启服务
[root@lxb tom]# showmount -e 192.168.220.234
Export list for 192.168.220.234:
/nfs/shared  *
/nfs/shared2 *
/nfs/upload  192.168.220.0/24
/nfs/tom     192.168.220.132
[root@localhost guazai3]# mount 192.168.220.234:/nfs/tom /guazai4
//此时再去附加anonuid=1111,anongid=1111 

//此时在客户端创建用户tom和tom组
[root@localhost guazai4]# useradd tom -u 1111
[root@localhost guazai4]# groupadd tom -g 1111
[root@localhost guazai4]# usermod  -u 1111 -g 1111 tom

//最后创建文件查看
[root@localhost guazai4]# vim 1
[root@localhost guazai4]# ll
total 4
-rw-r--r--. 1 tom tom 6 Dec 23 22:56 1

//再去创建jerry用户
[root@localhost guazai4]# useradd jerry
//给jerry一个acl权限/把jerry加入到tom组,并设置这个文件的770权限

//给jerry的acl权限
[root@localhost guazai4]# setfacl -m  u:jerry:rwx /guazai4
setfacl: /guazai4: Operation not supported
[root@localhost guazai4]# su jerry
[jerry@localhost guazai4]$ vim 2
[jerry@localhost guazai4]$ ll
total 8
-rw-r--r--. 1 tom   tom   6 Dec 23 22:56 1
-rw-rw-r--. 1 jerry jerry 6 Dec 23 23:00 2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值