zoukankan      html  css  js  c++  java
  • NFS 网络文件系统测试笔记

      NFS(Network Files System),网络文件系统是1980年由SUN发展出来在UNIX&Linux系统间实现磁盘文件共享的一种方法。它是一种文件系统协议:支持应用程序在客户端通过网络存取位于服务器磁盘中的数据。NFS的基本原则是让不同的客户端及服务器通过一组RPCs共享相同的文件系统,它独立于操作系统,允许不同硬件及操作系统的系统共同进行文件的共享。
      虽然NFS可以在网络中进行文件共享,但NFS在设计时并没有提供数据传输的功能。需要借助RPC(Remote Procedure Calls,远程过程调用)。RPC定义了一种进程间通过网络进行交互通信的机制,它允许客户端进程通过网络向远程服务进程请求服务,而不需要了解服务器底层的通信协议详细信息。
    当一个RPC连接建立开始阶段,客户端建立过程调用,将调用参数发送到远程服务器进程,并等待相应。请求到达时,服务器通过客户端请求的服务,调用指定的程序。并将结果返回客户端。当RPC调用结束,客户端程序将继续进行下一步的通信操作。
    NFS依赖RPC与外部通信,为保证NFS服务正常工作,其需要在RPC注册相应的服务端口信息,这样客户端向服务器的RPC提交访问某个服务的请求时,服务器才能够正确作出相应。
      注册NFS服务时,需要先开启RPC,才能保证NFS注册成功。并且如果RPC服务重新启动,其保存的信息将丢失,需重新启动NFS服务以注册端口信息,否则客户端将无法访问NFS服务器。

    NFS服务使用端口:2049
    此外还使用以下RPC服务的随机端口:
    RPC使用端口111:远程进程调用
    rpc.lock:随机端口
    rpc.mount:随机端口
    rpc.stat:随机端口

    不同的功能nfs.server使用不同模块,模块的端口不固定
    客户端连接到nfs服务器都向rpc服务来请求端口,rpc为nfs模块分配端口
    rpc 远程进程调用(rpc端口tcp 111)
    客户端先连接到nfs的2049,但是不能正常工作,nfs还要连接相应的模块,才可以正常工作。

    安装NFS软件包:

    # yum install nfs-utils  该软件包默认已安装

    防火墙如何开启不固定端口?

    systemctl restart nfs
    rpcinfo -p 192.168.100.1 #查看rpc注册的端口
    rpcinfo -p localhost #查看本地rpc注册的端口

    再次重启nfs,发现rpc端口发生变化
    如何固定rpc端口?

    vim /etc/sysconfig/nfs
    LOCKD_TCPPORT=30000 #修改
    LOCKD_UDPPORT=30000 #修改
    systemctl restart nfs

    防火墙规则需要允许所有相关服务和端口

    netstat -antulp | grep -i rpc
    firewall-cmd --permanent --add-port=20048/tcp
    firewall-cmd --permanent --add-port=20048/udp
    firewall-cmd --permanent --add-port=2049/tcp
    firewall-cmd --permanent --add-port=2049/udp
    firewall-cmd --permanent --add-port=30000/tcp
    firewall-cmd --permanent --add-port=30000/udp
    firewall-cmd --permanent --add-service=nfs
    firewall-cmd --permanent --add-service=rpc-bind
    firewall-cmd --permanent --add-service=mountd #即20048端口,二者填一个即可
    firewall-cmd --reload

    附加权限参数

    参数 作用
    ro 只读
    rw 读写
    root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
    no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
    all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
    sync 同时将数据写入到内存与硬盘中,保证不丢失数据
    async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

    RHEL7默认已安装NFS,所以在测试过程中不需要安装任何软件包,配置完成,启动即可。

    [root@rhel1 ~]# rpm -qa | grep nfs-utils
    nfs-utils-1.3.0-0.48.el7.x86_64
    [root@rhel1 ~]# rpm -qa | grep rpcbind
    rpcbind-0.2.0-42.el7.x86_64
    [root@rhel1 ~]# 

    实验1-普通挂载
    在RHEL1上

    vim /etc/sysconfig/nfs
    LOCKD_TCPPORT=30000 #修改
    LOCKD_UDPPORT=30000 #修改
    systemctl restart nfs
    #添加防火墙策略
    firewall-cmd --permanent --add-port=20048/tcp
    firewall-cmd --permanent --add-port=20048/udp
    firewall-cmd --permanent --add-port=2049/tcp
    firewall-cmd --permanent --add-port=2049/udp
    firewall-cmd --permanent --add-port=30000/tcp
    firewall-cmd --permanent --add-port=30000/udp
    firewall-cmd --permanent --add-service=nfs
    firewall-cmd --permanent --add-service=rpc-bind
    firewall-cmd --permanent --add-service=mountd #即20048端口,都可以生效
    firewall-cmd --reload
    #创建需要共享出去的测试目录及文件
    mkdir /share1
    mkdir /share2
    touch /share1/file{1..99)
    touch /share2/file{100..199}
    #修改exports配置文件
    vim /etc/exports
    /share1 192.168.100.0/24(ro)
    /share2 192.168.100.0/24(ro)
    systemctl restart nfs

    NFS的安装配置很简单,总的来说,包括以下几步:

    1、安装(在RHEL7上默认已安装)

    2、添加防火墙策略

    3、创建共享目录,并修改exports配置文件,指定共享权限

    在RHEL2上

    showmount -e 192.168.100.1  --查看RHEL1上共享出来哪些目录
    mkdir /mnt/nfs1
    mkdir /mnt/nfs2
    mount 192.168.100.1:/share1 /mnt/nfs1   --挂载目录到本地
    mount 192.168.100.1:/share2 /mnt/nfs2
    ll /mnt/nfs1
    ll /mnt/nfs2

    实验2-fstab开机挂载

    vim /etc/fstab
    192.168.100.1:/share1 /mnt/nfs1 nfs defaults 0 0
    mount -a
    ll /mnt/nfs1

    实验3-autofs自动挂载

    yum install -y autofs
    vim /etc/auto.master
    /mnt/nfs2 /etc/auto.nfs2 --timeout=30 #增加
    cp /etc/auto.misc /etc/auto.nfs2
    vim /etc/auto.nfs2
    nfs2 -fstype=nfs,ro 192.168.100.1:/share2 #增加
    systemctl restart autofs
    ll /mnt/nfs2 #发现什么都没有
    cd /mnt/nfs2
    cd nfs2
    ll #发现自动挂载,退出目录后30秒自动卸载
  • 相关阅读:
    [ Algorithm ] N次方算法 N Square 动态规划解决
    [ Algorithm ] LCS 算法 动态规划解决
    sql server全文索引使用中的小坑
    关于join时显示no join predicate的那点事
    使用scvmm 2012的动态优化管理群集资源
    附加数据库后无法创建发布,error 2812 解决
    浅谈Virtual Machine Manager(SCVMM 2012) cluster 过载状态检测算法
    windows 2012 r2下安装sharepoint 2013错误解决
    sql server 2012 数据引擎任务调度算法解析(下)
    sql server 2012 数据引擎任务调度算法解析(上)
  • 原文地址:https://www.cnblogs.com/rusking/p/7630721.html
Copyright © 2011-2022 走看看