服务器配置教案 Help

3-1 NFS网络文件系统

准备

公共步骤:详见公共/0-1机房虚拟机调整 。后面章节中不再重复描述。下面是简化叙述:

  1. vmware调整虚拟机设置/网络适配器为桥接。虚拟机开机。

  2. root用户登录

  3. 开启以太网卡

  4. yum换源

    1. sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*

    2. sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=https://mirrors.cloud.tencent.com|g" /etc/yum.repos.d/CentOS-*


      提示,较长的命令可在宿主机Windows上ctrl+C复制后,虚拟机CentOS终端中shift+insert粘贴,注意两个系统的复制粘贴快捷键不同。 如果不成功,就在终端里鼠标右键调出菜单选择粘贴paste。

  5. 关闭防火墙服务 systemctl stop firewalld

(换源也不是个办法,最近机房网速慢,正在搭建局域网镜像)

简介

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

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

准备

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

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

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


    touch abc.txt


    touch cde.mp4

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

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

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

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

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


    ip addr | grep 172.

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

安装

需要安装两个软件包rpcbindnfs-utils

(可选)验证是否已安装,返回空即未安装:
yum list installed |grep rpcbind
yum list installed |grep nfs-utils

  1. (可选,因为安装nfs-util时会安装此依赖)安装rpcbind:


    yum install rpcbind

  2. 安装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 ~]#

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

配置

vim或nano编辑nfs配置文件**/etc/exports**,中配置挂载目录、允许的客户机ip地址段、权限。(有一点不太好的地方是软件包名、配置名、服务名并不一致,而有的软件是一致的。)
nano /etc/exports

/share */24(ro)

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

启动服务

启动两个服务,服务名为rpcbindnfs-server (注意软件名、服务名、软件配置文件名、软件执行命令几个名字很可能不一样)。 使用系统管理命令systemctl启动它们。

(可选)查看当前服务状态:
systemctl status rpcbind
systemctl status nfs-server
返回信息中关注active/inactive,inactive则需要启动。

Active: inactive (dead)
  1. 启动rpcbind服务: systemctl start rpcbind

  2. 启动nfs-server服务: systemctl start nfs-server

验证两个服务的状态: 如果前面配置有错误会看到虽然服务启动但因配置文件有错又退出了

Active: active (exited) since Tue 2024-10-08 23:25:00 EDT; 11s ago Process: 158025 ExecStart=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy> Process: 158009 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS) Process: 158008 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=1/FAILURE) Oct 08 23:24:59 bogon exportfs[158008]: exportfs: Failed to stat /share: No such file or directory

出错的服务修改配置后systemctl restart nfs-server重启。
成功状态为看到rpcbind的状态为active(running) ,nfs-server的状态为**active(exited)**且无报错信息,exited表示启动服务的脚本执行结束并不代表因错误退出。

查看可挂载的目录

  1. exportfs 返回信息与配置文件中一致,说明配置文件和服务启动都没问题

/share <world>

客户端挂载

  1. 服务端关闭防火墙和selinux。(未来每节中均有此步骤不再重复叙述) 关闭防火墙: systemctl stop firewalld


    关闭防火墙随系统自启: systemctl disable firewalld (选做,因为机房电脑会还原) 关闭SeLinux: systemctl stop selinux (选做,系统默认未开启此服务) 无信息返回表示关闭,返回"selinux.service not loaded"表示本来就是关闭状态因此停止失败。 更为标准的做法是开启防火墙和selinux的状态下放通nfs服务端口,这里为了方便直接关闭掉安全服务。

  2. (可选) 客户端验证到服务端的连通性


    ping 172.31.5.100


    如果不通,检查客户端的网络ip地址是否与服务端在同一网段下,客户端ip假设为172.31.5.101 ,两者ip前三段应该一致。

  3. 客户端创建挂载节点文件夹


    mkdir /mnt/share

  4. 客户端挂载服务端的/share目录到客户端的/mnt/share目录下


    mount 172.31.5.100:/share /mnt/share


    无返回消息为成功。无报错消息卡住为服务端未关闭防火墙。


    (选做)Windows终端powershell也可以挂载nfs服务提供的资源mount \\172.31.5.100\share G:\

  5. 🎉结果,可以在客户机上访问服务机上的文件 ls /mnt/share


    返回服务机上的文件

abc.txt cde.mp4

作业

  1. 完成以上流程。做完叫我,服务端展示代码历史history,客户端展示已挂载的目录。


    (所有搭建服务的作业,加分占比为2分。两人完成各1分,单人完成2分。两人完成服务端网络设置为桥接,个人完成服务端网络设置为NAT或桥接都行。)

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

Last modified: 14 十月 2024