美文网首页
nfs文件共享服务器应用实战(一)

nfs文件共享服务器应用实战(一)

作者: 运维朱工 | 来源:发表于2019-08-14 15:04 被阅读0次

    一、NFS文件共享服务器概念:

    NFS是network file sytem的缩写,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

    二、NFS工作原理:

    image
    1. 首先NFS服务器端开启rpcbind;
    2. 然后服务端开启NFS服务,这时NFS的各项功能都需要向RPC服务注册,这时rpc会通知portmap模块将可用的端口分配给statd,rquotad进程等;
    3. 然后NFS客户端RPC服务就会通过网络向NFS服务端的RPC服务的111端口发出NFS文件存取功能的询问请求。
    4. NFS服务端的RPC服务找到对应的已注册的NFS daemon端口后,通知NFS客户端的RPC服务。
    5. 此时NFS客户端就可获取到nfs服务端各个进程的正确端口,然后通过客户端rpc就直接与NFS服务器的rpc进行存取数据了(rpc知道了nfs的具体端口,就可以实现远程调用,即传输)。
    ps:有一点需要注意的是nfs并不是单独存在的,而是由NFS-server,RPC,PORTMAP这三个模块组成。
    
    NFS-server只负责将数据通过以文件系统的方式共享出去,
    并进行登录管理和权限管理,并不负责数据的传输,而数据的传输则有RPC来完成。
    
    PORTMAP主要是来分配端口给statd,rquotad等进程,NFS服务除了启动nfsd本身监听的端口2049/tcp和2049/udp,
    还会启动以上进程来完成文件共享。
    

    三、NFS安装部署:

    服务器客户端都装好nfs服务组件:

    yum -y install nfs-utils
    

    配置服务端:

    1、编辑/etc/exports文件

    /data/lutixia  192.168.0.0/24(rw,sync)
    
    /data/lutixia   是服务端想要共享出去的目录,提前创建好。
    192.168.0.0/24  表示这个网段都可以来挂载,也可以设置具体某个ip。
    (rw,sync)  表示客户端挂载服务端目录后的权限,这里表示可读可写,
    以及实时同步,还有其他选项,后面介绍。
    

    2、导出(广播)编辑的文件,并启动rpc和nfs服务

    exportfs -r
    systemctl start rpcbind
    systemctl start nfs
    

    配置客户端:

    1、可用showmount搜索网络中可用的共享文件

    [root@localhost nfs]# showmount -e 192.168.0.187
    Export list for 192.168.0.187:
    /data/lutixia 192.168.0.0/24
    
    # 192.168.0.187  服务端的IP
    

    2、创建目录,用于挂载

    mkdir /mnt/nfs
    

    3、挂载

    mount -t nfs  192.168.0.187:/data/lutixia /mnt/nfs
    [root@localhost ~]# df -h
    Filesystem                   Size  Used Avail Use% Mounted on
    /dev/sda3                     20G  1.6G   18G   9% /
    ...
    /dev/sda1                    297M  108M  190M  37% /boot
    192.168.0.187:/data/lutixia   20G  5.0G   15G  26% /mnt/nfs
    
    #可以看到已经挂载上了。
    

    4、挂载完成之后,进入目录,可能会发现无法创建和修改文件

    [root@localhost nfs]# mkdir abc
    mkdir: cannot create directory ‘abc’: Permission denied
    

    这主要是因为客户端访问服务器时,身份被压缩成nobody,相对服务器文件系统来说,就是其他用户。所以要想编辑,需要在服务端对文件授权或者更改exports文件,设置no_root_squash(不压缩客户端root身份)。

    nfs服务端修改exports文件,加上no_root_squash参数:
    
    /data/lutixia 192.168.0.0/24(rw,sync,no_root_squash)
    然后重新导出:
    exportfs -r
    
    nfs客户端再次创建文件:
    [root@localhost nfs]# mkdir abc
    [root@localhost nfs]# ls
    abc
    

    服务端的/etc/exports文件详解:

    [root@localhost ~]# exportfs -v
    /data/lutixia   192.168.0.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
    
    其中:
    rw:可读可写
    ro:仅可读
    sync:是指数据同步写入内存和磁盘
    root_squash:如果客户端用root身份访问,则被压缩成nobody,权限也将受到限制。
    no_root_squash:也就是不压缩,客户端使用root身份登录,全有所有权限,很危险。
    all_squash:不管访问者是什么身份,包括root,全部压缩至匿名用户。
    no_all_squash:保留访问用户的身份uid以及gid,一般只能查看,不能修改,权限问题,但是可以强制保存。
    secure:nfs通过1024以下的安全TCP/IP端口发送
    

    异常报错:

    卸载时报错:

    umount.nfs4: /mnt/nfs: device is busy
    #使用以下命令强行解除挂载
    umount -l /mnt/nfs   
    
    或者使用
    #将会显示使用这个模块的pid
    fuser -m /mnt/nfs 
    #将会直接kill那个pid
    fuser -mk /mnt/nfs
    

    以上简单几个步骤即可实现nfs文件共享服务器的搭建部署,下一章节继续聊聊nfs的自动挂载技术

    获取文章更新,以及常用软件,可以关注公众号: 笨办法学linux

    image

    相关文章

      网友评论

          本文标题:nfs文件共享服务器应用实战(一)

          本文链接:https://www.haomeiwen.com/subject/hiigjctx.html