• nfs+rpcbind实现服务器之间的文件共享


    NFS简介
     

    NFS服务及Network File System,用于在网络上共享存储,分为2,3,4三个版本,最新为4.1版本。NFS基于RPC协议,RPC为Remote Procedure Call的简写。

    应用场景:用于A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致
     

    NFS架构及原理

    1. 首先服务器端启动RPC服务,并开启111端口
    2. 启动NFS服务,并向RPC注册端口信息
    3. 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
    4. 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
    5. 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输

    NFS服务配置

    安装 NFS 和 rpc

    # 服务器端和客户端都要安装
    yum install nfs-utils rpcbind -y
    # 检查是否安装成功
    rpm -qa nfs-utils rpcbind

    启动RPC

    systemctl start rpcbind.service

    systemctl enable rpcbind.service

    # 看看有没有注册的端口

    rpcinfo -p 127.0.0.1
     

    启动NFS

    systemctl start nfs

    systemctl enable nfs

    # 看看有没有注册的端口

    rpcinfo -p 127.0.0.1

    # 检查服务是否都已启动

    netstat -lntup|egrep "rpc|nfs"
     

    服务端配置nfs

    vim /etc/exports

    /data/public 10.10.0.0/16(rw,sync,insecure,all_squash,anonuid=1003,anongid=1003)

    1)、授权网段或主机
    a. 可以写网段:10.10.0.0/16
    b. 可以写主机名:client.lab.com
    c. 可以写域:*.lab.com
    d. 可以所有,用【*】表示
    
    2)、访问权限配置
    ro    ->表示只读
    rw    ->表示读写
    
    3)、数据写入硬盘模式
    async      ->异步写入,将数据先保存在内存缓冲区中,必要时才写入磁盘
    sync      ->同步写入,将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
    
    4)、客户端使用的端口
    insecure      ->允许客户端从大于1024的tcp/ip端口连接服务器;
    secure      ->限制客户端只能从小于1024的tcp/ip端口连接服务器;
    
    5)、账户映射
    首先安装完:nfs-utils 包后,会自动添加用户:nfsnobody,可以查看文件:/etc/passwd ;
    
    root_squash(默认)    ->如客户端登陆操作的是root用户,nfs服务器会将来访的root用户映射为匿名用户或用户组:nfsnobody ,如果是rw权限,就要求nfsnobody 对共享的目录有rw权限;
    no_root_squash      ->来访的root用户保持root帐号权限;
    all_squash        ->无论访问共享目录的用户身份如何,其权限将被镇压为匿名用户,同时它的UID和GID通常会变成nfsnobody账号身份
    no_all_squash(默认)    ->访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组: nfsnobody;
    
    anonuid        ->匿名用户UID设置值,可自行设置,但必须在/etc/passwd中存在;在多台客户端共享一个nfs目录时,可通过此参数使得不同的客户端写入的数据保持相同的用户权限
    anongid        ->匿名用户组
    
    6)、其它参数
    wdelay(默认)        -> 检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
    no_wdelay          ->若有写操作则立即执行,应与sync配合使用;
    subtree_check(默认)    ->若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
    no_subtree_check      ->即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

    客户端挂载

    mount -t nfs 172.17.182.13:/home/appdata  /home/mydata -o nolock,vers=3
     

    开启客户端自动挂载

    把挂载的命令放入/etc/rc.local中,以实现开机自动挂载

    mount -t nfs 172.17.182.13:/home/appdata  /home/mydata -o nolock,vers=3
     

  • 相关阅读:
    K8s概念汇总-笔记
    傅里叶特征学习高频:Fourier 相关工作+实验分析+代码实现
    [ConvNet]卷积神经网络概念解析
    MyCat应用实战
    中国两轮“技术派”绿源,为全球电动市场带来跨越式方案
    程序员缓解工作压力的小窍门
    nginx启动和关闭命令
    如何开始学习量子机器学习
    mysql索引覆盖之innodb和myisam效率问题
    Vue 注册全局组件
  • 原文地址:https://blog.csdn.net/weixin_44680802/article/details/133915812