服务器配置教案 Help

3-1 NFS网络文件系统

虚拟机准备

公共步骤:详见0-1。后面章节中不再重复描述。 (可选,本节nfs软件已经被系统内置不需要换源、安装。但其它步骤如桥接需要做。)

简介

NFS: (Network File System)Sun公司于1984年推出了一个在整个计算机工业中被广泛接受的远程文件存取机制,它被称为Sun的网络文件系统(Network File System),或者简称为NFS。 该机制允许在一台计算机上运行一个服务器,使对其上的某些或所有文件都可以进行远程存取,还允许其他计算机上的应用程序对这些文件进行存取。 它使我们能够达到文件的共享。当使用者想用远端档案时只要用mount命令就可把remote档案系统挂接在自己的档案系统之下,使得远端的文件操作上和本地机器的文件没两样。

RPC: (Remote Procedure Call Protocol)远程过程调用协议,用于不同服务间进行通信。NFS依赖RPC协议。

(可选)安装

(机房安装系统镜像时的向导中选择包含基础软件,nfs-utils已经被预装。下面展示未预装的系统中的安装过程) 需要安装两个软件包rpcbindnfs-utils

  1. (可选)验证是否已安装,有返回信息代表已经安装,无返回信息为未安装:


    yum list installed |grep rpcbind


    yum list installed |grep nfs-utils

  2. (可选,因为nfs-util依赖rpcbind)安装rpcbind:


    yum install rpcbind

  3. 安装nfs-utils:

yum install nfs-utils
Last metadata expiration check: 0:17:01 ago on Tue 08 Oct 2024 09:09:43 PM EDT. Dependencies resolved. ========================================================================================================== Package Architecture Version Repository Size ========================================================================================================== Installing: nfs-utils x86_64 1:2.3.3-46.el8 baseos 500 k Installing dependencies: gssproxy x86_64 0.8.0-19.el8 baseos 119 k keyutils x86_64 1.5.10-9.el8 baseos 66 k libverto-libevent x86_64 0.3.0-5.el8 baseos 16 k rpcbind x86_64 1.2.5-8.el8 baseos 70 k Transaction Summary ========================================================================================================== Install 5 Packages Total download size: 770 k Installed size: 2.0 M Is this ok [y/N]: y

y确认继续安装。

Is this ok [y/N]: y Downloading Packages: (1/5): libverto-libevent-0.3.0-5.el8.x86_64.rpm 31 kB/s | 16 kB 00:00 (2/5): gssproxy-0.8.0-19.el8.x86_64.rpm 160 kB/s | 119 kB 00:00 (3/5): keyutils-1.5.10-9.el8.x86_64.rpm 89 kB/s | 66 kB 00:00 (4/5): rpcbind-1.2.5-8.el8.x86_64.rpm 438 kB/s | 70 kB 00:00 (5/5): nfs-utils-2.3.3-46.el8.x86_64.rpm 242 kB/s | 500 kB 00:02 ---------------------------------------------------------------------------------------------------------- Total 298 kB/s | 770 kB 00:02 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Running scriptlet: rpcbind-1.2.5-8.el8.x86_64 1/5 Installing : rpcbind-1.2.5-8.el8.x86_64 1/5 Running scriptlet: rpcbind-1.2.5-8.el8.x86_64 1/5 Installing : libverto-libevent-0.3.0-5.el8.x86_64 2/5 Installing : gssproxy-0.8.0-19.el8.x86_64 3/5 Running scriptlet: gssproxy-0.8.0-19.el8.x86_64 3/5 Installing : keyutils-1.5.10-9.el8.x86_64 4/5 Running scriptlet: nfs-utils-1:2.3.3-46.el8.x86_64 5/5 Installing : nfs-utils-1:2.3.3-46.el8.x86_64 5/5 Running scriptlet: nfs-utils-1:2.3.3-46.el8.x86_64 5/5 Verifying : gssproxy-0.8.0-19.el8.x86_64 1/5 Verifying : keyutils-1.5.10-9.el8.x86_64 2/5 Verifying : libverto-libevent-0.3.0-5.el8.x86_64 3/5 Verifying : nfs-utils-1:2.3.3-46.el8.x86_64 4/5 Verifying : rpcbind-1.2.5-8.el8.x86_64 5/5 Installed: gssproxy-0.8.0-19.el8.x86_64 keyutils-1.5.10-9.el8.x86_64 libverto-libevent-0.3.0-5.el8.x86_64 nfs-utils-1:2.3.3-46.el8.x86_64 rpcbind-1.2.5-8.el8.x86_64 Complete! [root@localhost ~]#

从返回信息中看到下载并安装了一些依赖库。

准备共享文件夹

  1. 创建一个目录/share作为待共享区域 mkdir /share

  2. (可选)验证ls /看share文件夹是否已经创建。

  3. 创建测试文件或从宿主机复制到虚拟机 cd /share


    touch abc.txt


    touch cde.mp4

  4. 准备一台客户机,几种方式任选其一:

    • 与旁边的同学或室友两人一组(成本最低)

    • 完整克隆一台虚拟机作为客户端。被克隆的机器需要处于关机状态,被克隆的机器先连上网和禁止防火墙以免克隆后还要操作一遍。

    • 在宿主机上使用支持nfs协议的图形工具

  5. 检查服务器和客户机处于同一网段下,记下服务端IP地址


    nmcli | grep 172.

每间教室每台机器ip不同,本文中假设:
服务端 172.31.5.100
客户端 172.31.5.101
掩码 255.255.255.0
网关 172.30.130.254。

配置

vim或nano编辑nfs配置文件**/etc/exports**,中配置挂载目录、允许的客户机ip地址段、权限。
(有一点不太好的地方是软件包名、配置名、服务名并不一致不方便记忆,可能与软件发明较早有关。现在的软件通常软件名、服务名、配置名三者一致。)

  1. 编辑配置文件

nano /etc/exports

配置文件默认空,添加共享目录、允许的客户端ip地址段、客户端对目录权限。

/share *(ro)

/share 表示服务端等待共享的目录。
* 表示允许所有ip的客户机访问,为了避免ip配置不正确这里允许所有。如果配成172.31.6.0/24表示允许某个ip段范围内的客户机访问目录。在其它软件中往往0.0.0.0表示允许所有ip,但nfs中用*表示允许所有客户端ip。
*(ro)*表示read only客户端挂载后能读不能写。
每条规则写一行,多个文件夹不同权限写多行。

启动服务

启动两个服务,服务名为rpcbindnfs-server 。rpc负责通讯,nfs负责软件功能。

使用系统管理命令systemctl启动它们:

  1. (可选)查看当前服务状态:


    systemctl status rpcbind


    systemctl status nfs-server


    返回信息中关注状态active(running)/active(existed)/inactive(dead)

Active: inactive (dead)
  1. 如果服务未启动则启动 systemctl start nfs-server

  2. 再次验证服务状态 systemctl status nfs-server 本节中rpcbind的状态应该为*active(running) 持续监听,nfs-server的状态应该为active(existed)*且没有错误信息 ,existed状态码为SUCCESS。

  1. (可选)如果配置出错,修改配置后需要重启服务


    systemctl restart nfs-server

查看可挂载的目录

exportfs命令是nfs-utils软件中带的管理共享目录和配置文件的命令,不跟参数时输出当前可供挂载的目录。

  1. exportfs 返回

/share <world>

说明配置文件和服务启动都没问题

放通服务端口

(未来每节中均有此步骤,后面不再重复叙述)
标准的做法是开启防火墙和selinux的状态下放通nfs服务端口,这里为了方便直接关闭掉安全服务。

  1. 关闭防火墙

systemctl stop firewalld
  1. (可选,因为机房电脑会还原)关闭防火墙随系统自启


    systemctl disable firewalld

  2. 关闭SeLinux:


    (可选,nfs不受此影响,下节课的samba必需关闭)

setenforce 0

至此服务端结束。

以下为客户端

客户端挂载

  1. 找另一台电脑做客户端 ,客户端虚拟机也选择桥接 ,查看两者的IP确保在同一网段中,记录下服务器IP。


    查看IP

nmcli

机房电脑桥接IP以172开头,本节中假设172.31.5.100

  1. 测试客户端到服务端的连通性

ping 172.31.5.100
  1. 创建挂载节点文件夹

mkdir /mnt/share
  1. 客户端挂载服务端的/share目录 共享即映射 远程服务器/share ➡️ 客户机/mnt/share。

mount 172.31.5.100:/share /mnt/share

无返回消息为成功。

  1. 🎉结果,可以在客户机上访问服务机上的文件

ls /mnt/share

返回服务机/share目录中的文件

1.txt 2.mp4

命令一览

课上实现成功的命令代码,供参考。

服务端:

[root@localhost ~]# history 1 nmcli 2 ping jd.com 3 sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-* 4 sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=https://mirrors.cloud.tencent.com|g" /etc/yum.repos.d/CentOS-* 5 yum makecache 6 yum install nfs-utils 7 mkdir /share 8 touch /share/1.txt 9 touch /share/2.mp4 10 ls /share 11 ll /share 12 nmcli | grep 172. 13 cat /etc/exports 14 nano /etc/exports 15 cat /etc/exports 16 systemctl status rpcbind 17 systemctl status nfs-server 18 systemctl start nfs-server 19 systemctl status nfs-server 20 exportfs 21 systemctl stop firewalld 22 setenforce 0 23 history

客户端:

ping 172.31.5.100 mkdir -p /mnt/share mount 172.31.5.100:/share /mnt/share ls /mnt/share

作业

  1. 完成以上流程。做完叫我,服务端展示代码历史history,客户端展示已挂载的目录和目录下的文件。 (推荐)两人一组完成。或一人使用两台电脑机房有多余的电脑。

搭建服务是对网络知识、linux基础的综合运用,本节难度比之前明显提升,第一次会感觉有难度。但后面每章的操作都类似,学会本章即约等于学会整本书,加油。

Last modified: 25 十一月 2024