美文网首页Linux 笔记
NFS 网络文件系统

NFS 网络文件系统

作者: 一枝哀 | 来源:发表于2020-04-04 09:33 被阅读0次

    NFS介绍

    NFS (Network File System)的缩写,中文意思是网络文件系统,主要功能是通过局域网让不同的主机系统之间可以共享文件或目录。

    一、环境准备

    • 两台 centos 7 系统主机
    • 内网ip互通
    • 修改主机名,配置hosts文件
    • 关闭防火墙

    二、服务端配置

    1.安装 nfs 服务 和 rpc 服务
    RPC服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解 rpc 就是一个中介服务。

    [root@server-nfs ~]# yum install nfs-utils rpcbind -y
    

    2.启动rpc服务和nfs服务并设置开机自启

    # 先启动 rpcbind 服务
    [root@server-nfs ~]# systemctl start rpcbind
    [root@server-nfs ~]# systemctl enable rpcbind
    
    # 在启动 nfs 服务
    [root@server-nfs ~]# systemctl start nfs-server
    [root@server-nfs ~]# systemctl enable nfs-server
    

    3.创建一个共享目录,然后配置 /etc/exports 文件

    # 创建共享目录
    [root@server-nfs ~]# mkdir /public
    
    # 编辑配置文件
    [root@server-nfs ~]# vim /etc/exports
    [root@server-nfs ~]# cat /etc/exports
    /public 172.168.100.0/24(rw,sync,all_squash)
    
    # 重启nfs服务
    [root@server-nfs ~]# systemctl restart nfs
    
    # 配置参数说明
    ro  只读
    rw  读写
    root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
    no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
    all_squash  无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
    sync    同时将数据写入到内存与硬盘中,保证不丢失数据
    async   优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
    

    4.修改共享目录的属主和属组为nfsnobody

    [root@server-nfs ~]# chown nfsnobody:nfsnobody -R /public/
    [root@server-nfs ~]# ll -d /public/
    drwxr-xr-x. 2 nfsnobody nfsnobody 6 Apr  4 03:55 /public/
    [root@server-nfs ~]#
    
    为什么修改:
    # 查看这个共享目录的权限
    [root@server-nfs ~]# cat /var/lib/nfs/etab 
    /public 172.168.100.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)
    [root@server-nfs ~]#
    
    # 可以看到客户端访问时会以65534的用户权限来访问服务端,所以需要把服务端共享目录属主和属组为nfsnobody
    [root@server-nfs ~]# cat /etc/passwd |grep "65534"
    nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
    [root@server-nfs ~]#
    
    # 可以通过修改anonuid来控制用户访问
    

    三、客户端配置

    1.安装rpcbind服务和nfs服务

    [root@client-nfs-node1 ~]# yum install rpcbind nfs-utils -y
    

    2.只启动 rpchbind 服务

    [root@client-nfs-node1 ~]# systemctl start rpcbind
    

    3.查看服务端共享目录信息

    [root@client-nfs-node1 ~]# showmount -e server-nfs
    Export list for server-nfs:
    /public 172.168.100.0/24
    [root@client-nfs-node1 ~]# 
    
    showmount命令的用法:
    -e  显示NFS服务器的共享列表
    -a  显示本机挂载的文件资源的情况NFS资源的情况
    -v  显示版本号
    

    4.创建目录,并把nfs共享目录挂载过来

    # 创建本地目录
    [root@client-nfs-node1 ~]# mkdir /root/data
    
    # 挂载服务端nfs共享目录到本地创建的目录
    [root@client-nfs-node1 ~]# mount -t nfs server-nfs:/public /root/data
    
    # 查看挂载情况
    [root@client-nfs-node1 ~]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root  100G  879M  100G   1% /
    devtmpfs                 479M     0  479M   0% /dev
    tmpfs                    489M     0  489M   0% /dev/shm
    tmpfs                    489M  6.7M  483M   2% /run
    tmpfs                    489M     0  489M   0% /sys/fs/cgroup
    /dev/sda1                497M  125M  373M  25% /boot
    tmpfs                     98M     0   98M   0% /run/user/0
    /dev/sr0                 4.1G  4.1G     0 100% /mnt
    server-nfs:/public       100G  971M  100G   1% /root/data
    [root@client-nfs-node1 ~]#
    
    # 设置开机自动挂载
    [root@client-nfs-node1 ~]# echo "server-nfs:/public /root/data nfs defaults 0 0" >> /etc/fstab
    
    1. 检验是否共享成功,可以在服务端的共享目录中创建文件,然后在客户端的挂载目录中查看是否同步过来了。或者在客户端中创建文件去服端查看。

    四、windows中挂载nfs

    1.windows启动nfs服务


    image.png

    2.在此电脑,映射驱动器中添加nfs地址和要共享的目录

    image.png
    image.png

    相关文章

      网友评论

        本文标题:NFS 网络文件系统

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