配置NFS和NIS服务

  • 本文默认使用的操作系统为:CentOS 7.6-7.9版本。其余版本的操作系统请自行调整命令。

  • 请严格按照本文的流程去执行,一般不会报错,不要随意调整安装流程。

1. NFS服务s

1.1 NFS服务介绍

  • NFS(Network File System)网络文件系统,是一种分布式文件系统,允许网络中的计算机透明地共享资源。NFS是由Sun公司开发的,目前已经成为Unix和Linux系统中的标准服务。NFS是基于RPC(Remote Procedure Call)协议实现的,它允许网络中的计算机之间通过TCP/IP网络共享资源。NFS服务是基于客户端/服务器端的架构,NFS服务器端将共享的目录挂载到NFS客户端上,NFS客户端就可以像访问本地文件一样访问共享目录中的文件。NFS服务是基于共享目录的,所以在NFS服务器端需要先创建共享目录,然后将共享目录挂载到NFS客户端上,NFS客户端就可以访问共享目录中的文件了。

1.2 服务端NFS的安装

  • NFS服务的安装包是nfs-utils,安装命令如下:

    yum -y install nfs-utils
    

1.3 服务端NFS的配置

  • NFS服务的配置文件是/etc/exports,配置文件中的每一行都是一个共享目录的配置信息,配置信息的格式如下:

    共享目录 客户端IP(权限)
    

    共享目录:需要共享的目录,可以是绝对路径,也可以是相对路径,如果是相对路径,则相对于/etc/exports文件所在的目录。

    客户端IP:可以是单个IP,也可以是IP段,也可以是域名,也可以是通配符*

    权限:可以是ro(只读权限),也可以是rw(读写权限)。

  • 在管理节点上配置NFS服务器,将共享文件夹导出:

    sudo nano /etc/exports
    
  • 在文件中添加以下内容:

    /shared_folder  *(rw,sync,no_root_squash)
    
    # 以下是示例:
    /home  *(rw,no_root_squash,sync)
    /share *(rw,no_root_squash,sync)
    /opt   *(rw,no_root_squash,sync)
    /data1   *(rw,no_root_squash,sync)
    /data2   *(rw,no_root_squash,sync)
    
  • 其中,/shared_folder是共享文件夹的路径,*表示允许任何计算节点访问,rw表示读写权限,sync表示同步写入,no_root_squash表示允许root用户访问。

  • 上述只要是进行共享的文件夹,在主宿主机上都要有,否则会报错。且权限要设置好(一般 chmod 750 /share_folder )。

  • 在管理节点上启动NFS服务器:

    systemctl status nfs
    systemctl start nfs
    systemctl restart nfs
    systemctl enable nfs
    exportfs -r  # 如果您对NFS配置文件进行了更改,请使用该命令重新加载配置文件
    showmount -e master
    
    # 请确保您的网络设置正确,并且NFS端口(默认为2049)未被防火墙阻止。
    

1.4 客户端NFS的安装

  • 在计算节点上安装NFS客户端软件:

    sudo yum install nfs-utils
    
  • 在计算节点上创建挂载点:

    sudo mkdir /shared_folder
    
  • 在计算节点上挂载共享文件夹(之后写入rc.local):

    sudo mount -t nfs <管理节点IP>:/shared_folder /shared_folder
    # 写入 /etc/rc.local  示例
    mount -t nfs master:/home  /home
    mount -t nfs master:/opt  /opt
    mount -t nfs master:/share  /share
    
  • 其中,<管理节点IP>是管理节点的IP地址,/shared_folder是共享文件夹的路径,/shared_folder是挂载点的路径。

  • 在计算节点上启动NFS服务器(不知有没有必要,但还是enable一下吧):

    systemctl status nfs
    systemctl start nfs
    systemctl restart nfs
    systemctl enable nfs
    exportfs -r  # 如果您对NFS配置文件进行了更改,请使用该命令重新加载配置文件
    showmount -e master
    
  • 验证挂载是否成功:

    df -h
    
  • 如果成功挂载,您应该能够看到共享文件夹的信息。

  • 为了使挂载在重启后仍然有效,您可以将挂载命令添加到/etc/fstab文件中。例如:

    <管理节点IP>:/shared_folder /mnt/shared_folder nfs rw,sync,noauto 0 0
    
  • 这将在启动时自动挂载共享文件夹。

1.5 (可选)客户端通过rc.local自动挂载

  • 此外,也可将需要开机启动的命令直接写入/etc/rc.local的文件下

    touch /var/lock/subsys/local
    mount -t nfs node01:/home  /home
    
    # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
    # that this script will be executed during boot.
    chmod +x /etc/rc.d/rc.local
    

1.6 (可选)客户端通过fstab自动挂载

  • 也可将需要开机启动的命令直接写入/etc/fstab的文件下

    node01:/home  /home nfs rw,sync,noauto 0 0
    
  • 之后执行以下命令

    mount -a
    
  • NFS在客户端的使用方法:

    showmount -e master #会显示服务器的共享目录
    

1.7 (可选)客户端通过autofs自动挂载

  • 也可将需要开机启动的命令直接写入/etc/auto.master的文件下

    /home /etc/auto.home
    
  • 在/etc/auto.home文件下写入

    * -rw,sync node01:/home/&
    

2. NIS服务

  • 在有多台linux服务器的环境中,且一台linux服务器的账号又有很多且可能会相同,所以会出现理员很难管理的现象。NIS的主要功能是对主机账号系统等系统信息提供集中的管理。

  • 当NIS客户机需要进行用户登录的信息验证时,就向NIS服务器发出查询请求。当系统中的一台NIS服务器为多台NIS客户机提供服务时,用户登录系统中的任何一台NIS客户机都会从NIS服务器进行登录验证,这样就实现了集中管理用户账号的功能。

  • 请注意,执行该步骤时要确保/home目录已经成功挂载并共享。

  • 系统已经重启。

2.1 NIS服务端配置

  • NIS服务端的安装包是ypserv,安装命令如下:

    yum install ypserv rpcbind
    
  • 创建NIS域:

    nano /etc/sysconfig/network
    # Created by anaconda
    NISDOMAIN=master
    # 该方法永久生效,但是需要重启
    
  • 以下这一步在自己的电脑上不需要设置,服务器上为了安全考虑需要设置。

    # 设置/etc/ypserv.conf主配置文件:
    
    nano /etc/ypserv.conf
    
    *                              : *       : shadow.byname          : port
    *                              : *       : passwd.adjunct.byname  : port
    127.0.0.1/255.255.255.0        : *       : *                      : none #本地回环id,代表的是本机,允许本机访问所有的域
    192.168.241.0/255.255.255.0    : *       : *                      : none
    *                              : *       : *                      : deny
    
  • 启动和启用NIS服务:

    systemctl start ypserv # 首先要启动ypserv服务,否则建立NIS数据库会报错
    systemctl enable ypserv
    systemctl start rpcbind
    systemctl enable rpcbind
    

2.2 NIS客户端配置

  • NIS客户端的安装包是ypbind,安装命令如下:

    yum -y install ypbind rpcbind
    
  • NIS客户端的配置文件是/etc/yp.conf,配置文件中的每一行都是一个NIS客户端的配置信息,配置信息的格式如下:

    domain <NIS域名> server <NIS服务器IP>
    # 示例:
    domain master server master
    
    注:
    rpm -qf `which yppasswd` #查看命令来源 
    显示:yp-tools-2.14-5.el7.x86_64 # (安装ypbind时会自动解决依赖关系安装yp-tools)
    # 使用yppasswd可以远程修改NIS服务器的密码
    # 查看安装了哪些软件:rpm -qa yp*
    
  • 设置NIS域名–同master NIS是会通过域名来分辨不同账号的密码数据,因此必须要在服务器与客户端都指定相同的NIS域名。

    nano /etc/sysconfig/network
    # Created by anaconda
    NISDOMAIN=master
    # 该方法永久生效,但是需要重启
    
  • 配置nsswitch.conf

    # /etc/nsswitch.conf
    passwd:     files nis
    shadow:     files nis
    group:      files nis
    
    hosts:      files dns myhostname nis # 添加nis
    
  • 启动服务:

    systemctl start ypbind
    systemctl enable ypbind
    systemctl start rpcbind
    systemctl enable rpcbind
    
  • 验证:

    systemctl status ypbind #显示running则表示成功
    systemctl status rpcbind #显示running则表示成功
    
  • 验证:在客户端上输入yptest,能看到nis服务器上的用户

  • 注意:如若不成功,请使用系统工具 setup 进行设置。 选择 Authentication configuration,选择 Use NIS,然后输入 NIS domain name 和 NIS server IP address,最后点击 OK 即可。

2.3 NIS服务端映射(该步骤可在2.1之后执行)

  • 配置NIS映射表: 创建NIS映射表文件(例如passwd、group等)并将其复制到/var/yp目录下:

    cp /etc/passwd /var/yp/passwd
    
  • 生成NIS映射表:

    cd /var/yp
    make
    
  • 查看服务:

    rpcinfo -p master
    

3. 题外话

  • CentOS7挂载硬盘示例(请灵活更改自己的命令):

    (base) [root@node01 /]# lsblk
    NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda               8:0    1   7.3T  0 disk
    sdb               8:16   1   7.3T  0 disk
    sdc               8:32   1   7.3T  0 disk
    └─sdc1            8:33   1   7.3T  0 part /home
    
    (base) [root@node02 data3]# blkid
    /dev/sda2: LABEL="ROOT" UUID="6f979e18-09c9-435e-b09d-274b7f967903" TYPE="ext3" PARTUUID="873f3f46-b046-4e1c-ab5f-94de3d1f9522"
    /dev/sda1: LABEL="EFI" UUID="9991-A2DE" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="031855d3-56a7-441f-9a3d-392efd575f0f"
    #诸如此类
    
    (base) [root@node02 data3]# fdisk -l
    WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
    
    Disk /dev/sda: 512.1 GB, 512110190592 bytes, 1000215216 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disk label type: gpt
    Disk identifier: 0ED54899-BCF2-4DB7-8103-3FA21DAD0DCC
    
    
    #         Start          End    Size  Type            Name
     1         2048      2099199      1G  EFI System      EFI System Partition
     2      2099200    865996799    412G  Microsoft basic
     3    865996800   1000214527     64G  Linux swap
    WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
    #=================================================================================================================
    
    (base) [root@node02 data3]# nano /etc/fstab
    #示例:
    UUID=a2fd2367-2227-4a96-a5c8-757f11c1d386        /data4                  ext4    defaults        0 0