您的位置:首页 > 运维架构 > Linux

Linux下的共享文件系统服务NFS(Network File System)

2019-08-15 14:11 507 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/ranrancc_/article/details/99620970

文章目录

  • 二、搭建NFS系统
  • 三、NFS服务器自动挂载和卸载
  • 一、NFS的基本概念

    1、定义

    NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

    • 功能: 可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

    2、NFS的好处

    1. 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
    2. 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
    3. 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。

    二、搭建NFS系统

    在ip=172.25.254.125虚拟机上搭建nfs文件系统,服务器
    (1)yum install nfs-utils 安装服务

    (2)vim /etc/exports 编辑该服务的配置文件,写入

    /mnt 172.25.254.125/24(ro,sync)

    • man 5 exports 可查看这个文件里面的书写格式

    (3)exportfs -rv 刷新

    (4)systemctl status nfs-server 查看服务是否开启
    systemctl start nfs-server 开启服务器的nfs服务


    在客户端

    (5) yum install nfs-utils -y
    (6) showmount -e 172.25.254.125 快速查看125远程服务器共享出来的东西

    错误,因为服务端防火墙打开

    (7)服务端 ,关闭防火墙
    systemctl status firewalld
    systemctl stop firewalld

    • 如果不关闭防火墙,除添加nfs服务外,还要添加rpc-bind和mountd服务,否则还是不能使用nfs服务

    在客户端
    (8) showmount -e 172.25.254.125 快速查看125远程服务器共享出来的东西,正确


    (9)mount 172.24.254.125:/mnt/ /mnt/ 挂载服务端的目录到本地

    三、NFS服务器自动挂载和卸载

    • 前面当一个用户注册信息的时候放在一台主机里面,当主机坏了,这个用户就登陆不了,当由有多个用户分别对应多台主机的时候,每个用户的信息都在自己的服务器里面放着,但是这样很不好,当其中一个服务器挂了,那个主机的信息就没了,实际在企业当中,主机系统和存储数据是分离的,客户通过主机注册系统,然后放到存储数据的地方,每台主机和存储设备相连但是当主机不用的时候,没有必要和存储系统连接,浪费资源。
    • 现在想实现客户端用的时候自动挂载,不用的时候自动卸载。
    • 集群:具有相同功能的一群主机

    3.1 自动挂载和卸载在默认目录/net

    所有操作都在客户端进行

    (1)yum install autofs -y 安装可以实现自动挂载文件系统的服务

    (2)开启服务,设置开机启动
    systemctl start autofs
    systemctl enable autofs
    设置开机启动

    • 开启autofs这个服务后,系统就会有/net这个目录

    (3)vim /etc/sysconfig/autofs 更改退出目录时自动卸载的时间,默认为300s,更改为3秒,重启服务 systemctl restart autofs.services


    (4)cd /net/172.25.254.125/mnt
    df 查看,自动挂载
    cd 退出
    df 查看,已经自动卸载

    3.2 自动挂载和卸载在自定义目录

    • 改变挂载策略,将服务端的目录挂载到客户端我想挂载的任何目录上,实际上此挂载点目录是不存在的

    (1)mkdir /westos_nfs2 建立共享目录
    (2)在/etc/exports文件中写入 共享目录,读写同步

    /westos_nfs2   *(sync)或  *(rw,sync)


    (3)exportfs -rv 刷新

    所有操作都在客户端进行

    (1)yum install autofs -y 安装可以实现自动挂载文件系统的服务

    (2)开启服务,设置开机启动
    systemctl start autofs
    systemctl enable autofs
    设置开机启动


    (3)vim /etc/sysconfig/autofs 更改退出目录时自动卸载的时间,默认为300s,更改为3秒,重启服务 systemctl restart autofs.services



    (2)vim /etc/auto.master 主策略文件
    写入:

    /mnt/ranran /etc/auto.nfs2 挂载点的上级目录 子策略文件


    (3)==vim /etc/auto.nfs2= 编辑子策略文件
    写入

    :xixi 172.25.254.125:/westos_nfs2 最底层挂载点目录 服务端的共享目录(ip:共享目录)

    (4)systemctl restart autofs 重启服务
    (5)cd /mnt/ranran/xixi 进入即自动挂载
    df 查看,自动挂载
    cd 退出
    df 查看,已经自动卸载


    mount,看出是读写挂载,vers=4,如何设置自动挂载类型?

    ==vim /etc/auto.nfs2= 编辑子策略文件
    写入

    :xixi -ro,vers=3 172.25.254.125:/westos_nfs2 最底层挂载点目录挂载类型,版本 服务端的共享目录(ip:共享目录)


    3.3 更改 /etc/exports文件参数设置客户端

    (1)在/mnt/ranran/xixi下查看挂载情况,mount发现是只读ro ,此时现在子策略文件中 /etc/auto.nfs2更改为读写挂载rw,但是建立一个文件,报错发现是只读挂载, 这是因为 :客户端的用户无法获得服务端超级用户的读写权限,这里的读写是针对服务端的超级用户。

    (2)在服务端vim /etc/exports 修改成为读写方式共享,让客户端可以建立和删除文件

    /westos_nfs2     *(rw,sync)


    (3)在服务端 exportfs -rv 刷新

    (4)此时,在客户端,建立文件,报错改变了,变为权限不允许。
    这是因为: 服务允许了,但是文件系统不允许


    (5)** 在服务端 ** 给共享目录/westos_nfs2满权限 chmod 777 /westos_nfs2/

    (6)此时,在客户端,建立文件file1 ==touch file1=,发现客户端root用户上传文件默认是以 nfsnobody 匿名用户上传

    (7)在服务端vim /etc/exports 指定客户端匿名用户上传文件的身份(uid,gid)为服务端已经存在的用户身份,身份是服务端的身份,和客户端无关。

    /westos_nfs2     *(rw,sync,anonuid=1001,anongid=1001)

    (8)此时,在客户端,建立文件file2 ==touch file2=,此时发现file2的所属用户是1001,所属组也是1001

    但在服务端,显示的是lee,因为1001用户是服务端的lee

    在客户端,客户端root上传文件,但是文件的所属用户和组都是普通用户,这是因为客户端超级用户默认会发生身份转化。

    (10)在服务端vim /etc/exports 设定参数 no_root_squash,仅针对root用户,root用户默认不发生身份转换,当客户端使用超级用户挂载时,不转换身份,身份仍是超级用户。

    /westos_nfs2     *(rw,sync,anonuid=1001,anongid=1001, no_root_squash)


    (11)此时,在客户端, 建立文件file3 touch file3,此时发现file3的所属用户是root,所属组也是root

    (12)在服务端vim /etc/exports 设定参数 all_squash表示,转变所有客户端的用户身份为服务器用户,all_squash 也就是说不管客户端是以什么样的身份来进行访问的,都会被压缩成为anonuid、anongid 指定的id 客户端访问服务端默认是使用nfsnobody这个用户来进行访问的。服务器默认共享时,也是加上了all_squash这个参数。

    /westos_nfs2     *(rw,sync,anonuid=1001,anongid=1001, all_squash)



    (13)此时,在客户端,切换到student用户,建立文件file4 touch file4,此时发现file4的所属用户是1001,所属组也是1001(指定的用户,此处为1001)

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: