• NFS服务学习记录与部署


    NFS服务配置

    NFS:Network File System网络文件系统,主流异构平台共享文件之一

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

     

    nfs存储工作原理

    NFS工作原理
    1.用户进程访问 NFS 客户端,使用不同的函数对数据进行处理
    2.NFS 客户端通过 TCP/IP 的方式传递给 NFS 服务端
    3.NFS 服务端接收到请求后,会先调用 portmap 进程进行端口映射。
    4.nfsd 进程用于判断 NFS 客户端是否拥有权限连接 NFS 服务端。
    5.Rpc.mount 进程判断客户端是否有对应的权限进行验证。
    6.idmap 进程实现用户映射和压缩
    7.最后 NFS 服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。
    注意: rpc 是一个远程过程调用,那么使用 nfs 必须有 rpc 服务

    1.3 前提条件

    1.nfs依赖于RPC服务来传递消息
    2.NFS服务启动的端口号是随机的,启动之后会向本地的RCP注册
    3.先启动RPC服务,再启动NFS服务
    4.NFSRPC之间的通讯是他们自己内部完成的,对于用户来说无感知
    5.NFS客户端和服务端不会直接沟通,必须通过RPC服务传递消息
    6.防火墙要开放RPC服务的端口

    NFS服务端部署

    yum install -y nfs-utils /安装nfs,这个包里面包括了rpcbind,如果最后没有显示这个包中包括了rpcbind的话就自行安装rpcbind。

    vi /etc/exports //编辑配置文件,在这个配置文件里面写入:

    !!!不要回车

    /home/nfstestdir 192.168.29.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

    rw 读写权限
    ro 只读权限
    root_squash  NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户(不常用)
    no_root_squash  NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员(不常用)
    all_squash 无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户(常用)

    all_squash 客户端上所有用户在使用NFS共享目录时都被限定为 一个普通用户

    anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid
    no_all_squash 无论 NFS 客户端使用什么账户访问,都不进行压缩
    sync 同时将数据写入到内存与硬盘中,保证不丢失数据
    async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
    anonuid 配置 all_squash 使用,指定 NFS 的用户 UID,必须存在系统

    anongid 配置 all_squash 使用,指定 NFS 的用户 UID,必须存在系统

    编辑好配置文件后启动NFS服务

    mkdir /home/nfstestdir

    chmod 777 /home/nfstestdir

    systemctl start rpcbind

    systemctl start nfs

    systemctl enable rpcbind

    systemctl enable nfs

    setenforce 0

    systemctl stop firewalld

    客户端挂载

    yum install -y nfs-utils

    showmount -e 192.168.29.138 (使用服务端ip地址) //-e查看nfs的共享情况

    [root@localhost mnt]# showmount -e 192.168.29.138

    Export list for 192.168.29.138:

    /home/nfstestdir 192.168.29.0/24

    mount -t nfs 192.168.29.138:/home/nfstestdir /mnt/ //在客户端上挂载NFS

    [root@localhost mnt]# df -h

    文件系统                         容量  已用  可用 已用% 挂载点

    /dev/mapper/centos-root           18G  879M   17G    5% /

    devtmpfs                         903M     0  903M    0% /dev

    tmpfs                            913M     0  913M    0% /dev/shm

    tmpfs                            913M  8.6M  904M    1% /run

    tmpfs                            913M     0  913M    0% /sys/fs/cgroup

    /dev/sda1                        497M  125M  373M   25% /boot

    tmpfs                            183M     0  183M    0% /run/user/0

    192.168.29.138:/home/nfstestdir   18G  946M   17G    6% /mnt

    touch /mnt/dai.txt

    ls -l /mnt/dai.txt

    [root@localhost mnt]# ls -l /mnt/dai.txt

    -rw-r--r--. 1 1000 1000 26 11月 18 17:14 /mnt/dai.txt

    exportfs命令

    -a:表示全部挂载或者卸载

    -r:表示重新挂载

    -u:表示卸载某一目录

    -v:表示显示共享目录

    在服务端进行以下操作

    vi /etc/exports

    添加:/tmp/ 192.168.29.0/24(rw,sync,no_root_squash)

    exports -arv

    客户端

    mkdir /dai

    mount -t nfs -onolock 192.168.29.138:/tmp /dai

    touch /dai/test.txt

    服务端

    [root@localhost nfstestdir]# ls

    aa  dai.txt

    客户端

    [root@localhost mnt]# cd /mnt/

    [root@localhost mnt]# ls

    aa  dai.txt

  • 相关阅读:
    电商项目中商品规格数据库的设计
    Spring开发一个简单的starter——c3p0自动配置
    Spring boot 自动配置原理
    Spring MVC中配置静态资源处理的三种方式和区别
    通配符的匹配很全面, 但无法找到元素 'tx:annotation-driven' 的声明
    基于注解和配置类的SSM(Spring+SpringMVC+Mybatis)项目详细配置
    基于注解和xml配置的SSM(Spring+SpringMVC+Mybatis)项目详细配置
    css position 属性 (absolute 和fixed 区别)
    asp.net 网站所有请求跳转到同一个页面
    Javascript 闭包
  • 原文地址:https://www.cnblogs.com/daiqinghui/p/14062956.html
Copyright © 2020-2023  润新知