[toc]

NFS共享存储描述

NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。

NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS

NFS作用

  • 实现多态服务器数据共享
  • 实现多态服务器数据一致

NFS原理

15644556090673

  1. 用户进程访问NFS客户端,使用不同的函数对数据进行处理
  2. NFS客户端通过TCP/IP的方式传递给NFS服务端。
  3. NFS服务端接收到请求后,会先调用portmap进程进行端口映射。
  4. nfsd进程用于判断NFS客户端是否拥有权限连接NFS服务端。
  5. Rpc.mount进程判断客户端是否有对应的权限进行验证。
  6. idmap进程实现用户映射和压缩
  7. 最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。

NFS架构图示

image-20221130195844148

部署NFS服务

NFS配置详解

1
2
3
4
5
6
7
8
9
rw				 # read write 客户端针对服务端的共享目录有可读可写权限
ro # read only 客户端针对服务端的共享目录只有读权限
root squash # 客户端必须是root身份写入共享目录文件时,到服务端才能以nfs的系统用户写入(不常用)
no root squash # 客户端必须是root身份写入共享目录文件时,到服务端是以root身份写入(不常用)
all squash # 客户端无论是什么身份,都会映射成nfs匿名用户身份(常用)
sync # 同时将数据写入内存和磁盘中 保证数据不丢失
async # 先将数据放入内存中,之后在写入磁盘 但是速度快,但是数据可能会丢失
anonuid # 配置all squash 使用 指定NFS的用户,必须先创建出来
anongid # 配置all squash 使用 指定NFS的用户组,必须先创建出来

部署服务端

  1. 安装NFS

    1
    2
    3
    4
    # c7 安装nfs
    yum install -y nfs-utils
    ## C5,C6 安装nfs服务
    yum install -y nfs rpcbind
  2. 创建共享目录

    1
    2
    # 创建共享目录
    mkdir /data
  3. 修改配置文件

    1
    2
    3
    4
    5
    # 修改配置文件
    vim /etc/export

    ## /data 172.16.1.0/24(rw,sync,all_squash)
    ## 共享目录 子网/子网掩码(读写,同步,任何用户端口映射成NFS的匿名用户)
  4. 授权共享目录属主和属组

    1
    2
    3
    4
    5
    # 授权共享目录属主和属组
    chown nfsnobody:nfsnobody /data/

    # 检查共享目录属主和属组是否修改成功
    ll -d /data/
  5. 启动并加入开机自启

    1
    2
    3
    4
    5
    # 启动并加入开机自启
    ## 启动NFS服务
    systemctl start nfs
    ## 开机自启
    systemctl enable nfs
  6. 检查进程

    1
    2
    # 检查进程
    ps -ef | grep nfsd

部署客户端

  1. 安装NFS

    1
    2
    3
    # 安装nfs服务
    ## web01和web02
    yum install -y nfs-utils
  2. 查看可挂载目录

    1
    2
    # 查看可挂载目录
    showmount -e 172.16.1.31
  3. 挂载共享目录

    1
    2
    3
    4
    5
    # 挂载共享目录
    mount -t nfs 172.16.1.31:/data /opt/

    # 检查挂载状态
    df -h
  4. 访问NFS共享目录

    1
    2
    3
    4
    5
    # 访问NFS共享目录
    web服务器访问:cd /opt
    nfs服务器访问:cd /data

    ## 在此目录下数据将会进行实时同步共享

示例:部署交作业网站

部署NFS服务端(将web服务器的http后台数据同步共享)

  1. c7 安装NFS

    1
    2
    # c7 安装nfs
    yum install -y nfs-utils
  2. 创建共享目录

    1
    2
    # 创建共享目录
    mkdir /data
  3. 修改配置文件

    1
    2
    3
    4
    5
    6
    7
    # 修改配置文件
    vim /etc/exports
    ## /data 172.16.1.0/24(rw,sync,all_squash)
    vim /etc/httpd/conf/httpd.conf
    ## :66行修改启动服务的软件

    ## 共享目录 主机IP/子网掩码(读写,同步,任何用户端口映射成NFS的匿名用户)
  4. 授权共享目录属主和属组

    1
    2
    3
    4
    5
    # 授权共享目录属主和属组
    chown nfsnobody:nfsnobody /data/

    # 检查共享目录属主和属组是否修改成功
    ll -d /data/
  5. 启动并加入开机自启

    1
    2
    3
    4
    5
    # 启动并加入开机自启
    ## 启动NFS服务
    systemctl start nfs
    ## 开机自启
    systemctl enable nfs
  6. 检查进程和端口

    1
    2
    3
    4
    5
    # 检查进程
    ps -ef | grep nfs

    # 检查端口
    netstat -lntup | grep httpd

web服务器部署http代码

  1. 安装httpd php服务

    1
    2
    # 安装httpd php服务
    yum install -y httpd php
  2. 部署网页文件

    1
    2
    3
    4
    5
    # 将网页文件下载至/var/www/html下
    cd /var/www/html
    rz -E
    # 解压kaoshi_modify.zip文件
    unzip kaoshi_modify.zip
  3. 启动服务

    1
    2
    # 启动服务
    systemctl start httpd
  4. 检查进程和端口

    1
    2
    3
    4
    5
    # 检查进程
    ps -ef | grep httpd
    # 检查端口
    netstat -lntup | grep httpd
    ## http端口为:80
  5. 访问页面

    1
    2
    3
    # 访问页面
    10.0.0.7
    ## web服务器IP地址
  6. 创建http后台数据存放目录

    1
    2
    # 创建http后台数据存放目录
    mkdir /var/www/html/user_data
  7. 将存放http后台数据的目录挂载到NFS共享路径

    1
    2
    # 将存放http后台数据的目录挂载到NFS共享路径
    mount -t nfs 172.16.1.31:/data /var/www/html/user_data
  8. 访问NFS共享目录

    1
    2
    3
    4
    # 访问NFS共享目录
    cd /data

    ## 在此目录下web服务器http后台数据将会进行实时同步共享

开机自动挂载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 编辑开机自动挂载文件
vim /etc/fstab

## 添加需要挂载的配置信息:

#
# /etc/fstab
# Created by anaconda on Mon Nov 28 11:08:01 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=9b4d30b3-2050-4678-842c-94205386163e / xfs defaults 0 0
UUID=7968cb78-c557-4d16-b33a-e702fcc829ab /boot xfs defaults 0 0
UUID=619475cc-e914-4fef-871e-536784b58007 swap swap defaults 0 0
172.16.1.31:/data /var/www/html/user_data nfs defaults 0 0
## 挂载目标IP:目标路径 挂载源文件路径 nfs defaults 0 0