Linux【实战篇】—— NFS服务搭建与配置

目录

一、介绍

1.1什么是NFS?

1.2客户端与服务端之间的NFS如何进行数据传输?

1.3RPC和NFS的启动顺序

1.4NFS服务 系统守护进程

二、安装NFS服务端

2.1安装NFS服务

2.2 创建共享目录

2.3创建共享目录首页文件

2.4关闭防火墙

2.5启动NFS服务

2.6配置文件的编写格式

2.7配置NFS服务

2.8服务端管理NFS相关命令

三、安装NFS客户端

3.1安装NFS客户端和httpd服务

3.2关闭防火墙

3.3启动服务

3.4查看NFS服务器共享的目录

3.5 将共享目录挂载到客户端目录

3.6浏览器访问客户端IP


一、介绍

1.1什么是NFS?

        NFS(Network File System)网络文件系统,是通过网络来进行服务端与客户端之间的数据传输,仅Linux/Unix系统之间共享文件的一种协议。NFS服务一般用来存储静态数据,例如:脚本、视频、图片等这些不会有太大变化的文件。

特性:

  • NFS的客户端为Linux;
  • 支持多节点同时挂载,以及并发写入;

1.2客户端与服务端之间的NFS如何进行数据传输?

RPC服务:Remove Procedure call 远程过程调用服务/协议

  1. 首先服务端会先启动RPC服务,并开放111端口,等待客户端的RPC服务进行连接;
  2. 其次服务端的NFS再启动,然后向RPC服务注册与客户端NFS连接使用的端口(大于1024),RPC服务会记录这些端口信息;
  3. 当客户端需要读取服务端NFS的共享目录时,客户端的RPC会连接服务端RPC服务开放的111端口,并向服务端RPC服务发送请求;
  4. 服务端的RPC会将记录的服务端NFS端口信息反回给客户端的RPC服务;
  5. 客户端的RPC再将接收到的端口信息给客户端NFS;
  6. 客户端NFS再通过这些端口信息与服务端NFS进行数据传输;

通信原理图:

查看RPC服务管理的端口

rpcinfo -p IP地址

1.3RPC和NFS的启动顺序

        首先,一定是要先启动了RPC服务后才能启动NFS服务,否则NFS服务无法向RPC服务进行端口注册。请注意,如果RPC服务重新启动了,那么原来记录的NFS服务的端口信息都将全部丢失。因此NFS服务也需要重新启动,再向RPC服务进行端口注册。

特别注意:修改完NFS服务配置文件后,不需要重启NFS服务,直接重新加载配置文件即可systemctl reload nfs-server

1.4NFS服务 系统守护进程

nfs:它是基本的NFS守护进程,主要功能是管理客户端能否登录服务器;

rpcbind:主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,rpcbind会将所管理的服务的对应端口提供给客户端,从而使客户端可以通过该端口连接服务器。

二、安装NFS服务端

2.1安装NFS服务

yum install -y nfs-utils

2.2 创建共享目录

mkdir /webdata chmod o+w /webdata         # 赋予其它用户拥有写入权限

2.3创建共享目录首页文件

echo "NFS_test" 1> index.txt

2.4关闭防火墙

systemctl stop firewalld # 关闭防火墙

systemctl disable firewalld # 开机不自启动防火墙

setenforce 0 # 关闭selinux

2.5启动NFS服务

# 在启动NFS服务之前先启动RPC服务

systemctl start rpcbind         # 开启RPC服务

systemctl start nfs-server         # 开启nfs服务

systemctl reload nfs-server         # 重新加载nfs服务配置文件

systemctl restart nfs-server         # 重启nfs服务

systemctl stop nfs-server         # 关闭nfs服务

systemctl status nfs-server         # 查看nfs服务

2.6配置文件的编写格式

NFS服务的配置文件为:/etc/exports

/etc/exports 配置文件的内容格式:

/共享目录 客户端1(访问权限,用户映射,其它) 客户端2(访问权限,用户映射,其它)

a.共享目录:共享目录是指NFS服务器共享给客户端的目录;

b.客户端:客户端是指的网络中可以访问NFS服务器共享目录的主机;

客户端常用指定的方式

  • 指定某一个主机:192.168.1.1;
  • 指定子网中所有的主机:192.168.1.0/24;
  • 指定域名主机:www.baidu.com;
  • 指定域名中的所有主机:*.baidu.com;
  • 任何主机都能访问:*;

c.设置共享目录的访问权限

  • 共享目录访问权限为只读:ro;
  • 共享目录访问权限为读写:rw;

d.用户映射

  1. root_squash:NFS客户端root用户创建的文件/目录所有主、所有组,被服务端映射成匿名用户(nfsnobody);(默认选项)
  2. no_root_squash:NFS客户端root用户创建的文件/目录所有主、所有组,保留为root用户;
  3. all_squash:NFS客户端任何用户创建的文件/目录所有主、所有组,被服务端映射成指定的匿名用户;
  • anonuid=xxx:映射成服务端指定的所有主;
  • anongid=xxx:映射成服务端指定的所有组;

e.其它选项

工作常用sync(同步传输);

2.7配置NFS服务

vim /etc/export

# 添加以下内容

/webdata 192.168.157.0/24(rw)

注释

  • /webdata 指的是共享的目录
  • 192.168.157.0/24 指的是允许访问NFS服务器的客户主机网段
  • rw 指的是客户端拥有读写权限

2.8服务端管理NFS相关命令

命令:exportfs

-a:全部挂载或全部卸载 /etc/exports中的内容;

-r:重新挂载/etc/exports中的内容;

-u:取消一个或多个目录的共享;

-v:输出详细信息;

# 卸载所有共享目录

exportfs -au

# 重新挂载所有共享目录

exportfs -ar

# 查看服务器中所有的共享目录信息

exportfs -v

三、安装NFS客户端

3.1安装NFS客户端和httpd服务

yum install -y nfs-utils httpd

3.2关闭防火墙

systemctl stop firewalld # 关闭防火墙

systemctl disable firewalld # 开机不自启动防火墙

setenforce 0 # 关闭selinux

3.3启动服务

# 启动httpd服务

systemctl start httpd

# 启动rpc服务

systemctl start rpcbind

# 启动nfs服务

systemctl start nfs-server

3.4查看NFS服务器共享的目录

showmount -e 服务器IP

-e:查看NFS服务器共享的目录

3.5 将共享目录挂载到客户端目录

mount -t nfs 服务器IP:/共享目录名 /var/www/html

3.6浏览器访问客户端

将共享目录挂载到httpd网站服务的工作目录下 /var/www/html后,在浏览器中访问客户端IP,即可看到共享内容

相关推荐

  1. LinuxNFS服务器

    2024-04-14 06:32:03       14 阅读
  2. NFS服务

    2024-04-14 06:32:03       29 阅读
  3. 【RHCE服务实验】之NFS

    2024-04-14 06:32:03       34 阅读
  4. linux主机NFS服务器

    2024-04-14 06:32:03       36 阅读
  5. LinuxNFS

    2024-04-14 06:32:03       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-14 06:32:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-14 06:32:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-14 06:32:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-14 06:32:03       18 阅读

热门阅读

  1. 双向链表C语言实现

    2024-04-14 06:32:03       15 阅读
  2. 链表的奇偶重排

    2024-04-14 06:32:03       19 阅读
  3. python从命令行获取参数

    2024-04-14 06:32:03       18 阅读
  4. js - es6 - 扩展运算符用法

    2024-04-14 06:32:03       16 阅读
  5. uniapp实现事件级防抖

    2024-04-14 06:32:03       16 阅读
  6. 单链表C语言实现

    2024-04-14 06:32:03       22 阅读
  7. mamba 模型对 gpgpu 体系结构提出的新挑战

    2024-04-14 06:32:03       35 阅读