功能: 

  • 通过案例说明
  • 如下图,将某图片上传至电脑web01,通过搭建NFS,最终可以实现--->
  • 在web01 web02 web03 NFS服务器 任意一台电脑对该图片的查看,修改,删除

linux 查询nfs状态_linux 查询nfs状态

 

---概要---

 

1 简介

2 底层逻辑

3 部署

4 新增/修改 要挂载磁盘路径时

5 "搭建考试系统"实现开头的案例效果

 

 

 

---详细---

 

1 简介

 

  • NFS是Network File System的缩写及网络文件系统。
  • 主要功能
  • 是通过局域网络让不同的主机系统之间可以共享文件或目录。
  • NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, 
  • 应用场景
  • NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS,ceph

 

2 底层逻辑

 

  1. 用户从本机查找某资料,本地磁盘无
  2. 转访问到NFS客户端,将请求转化为函数
  3. 客户端NFS通过TCP/IP连接服务端NFS
  4. NFS服务端接收请求,会先调用portmap进程进行端口映射
  5. 然后通过Rpc.nfsd进程: 验证客户端身份,即能否连接服务端
  6. 然后通过Rpc.mount进程: 判断客户端对服务端的有哪些操作权限
  7. 通过权限验证,对服务端文件进行对应权限的操作(增,删,改,查);无权限,给出提醒或报错

 

底层逻辑图1

linux 查询nfs状态_客户端_02

 

底层逻辑图2

linux 查询nfs状态_服务端_03

 

 


-------

3 部署

-------

 

 

step1---服务端

 

 

 

1-1 安装NFS软件和rpcbind软件

[root@nfs ~]# yum install nfs-utils rpcbind -y

 

 

1-2 创建目录

[root@nfs ~]# mkdir /web/nfs{1..9}

-该目录即磁盘路径,目录下的磁盘将被挂载至挂载点

 

 

1-3 修改NFS服务端配置文件(18:07)

  • vim /etc/exports
  • 格式
  • [磁盘路径] [可以访问的IP]([权限])
  • 下图内容详解
  • 磁盘路径

    • /web/nfs1

  • 可以访问的IP(来源见下面)

    • 172.16.1.0/20

  • 权限

    • (rw,sync,all_squash,anonuid=666,anongid=666)

    • 包含所有,复制即可

linux 查询nfs状态_linux 查询nfs状态_04

 

可以访问的IP 来源

  • 将NFS服务器的内网ip改为网段

linux 查询nfs状态_服务端_05

 

参数(权限详解)

  • rw
  • 读写权限
  • sync
  • 同时将数据写入内存和硬盘中,保证数据不丢失(常用)

  • all_squash

  • 当NFS客户端以任何账户访问时,均映射为NFS服务器的匿名用户(常用)

  • anonuid

  • 配合all_squash使用,指定NFS的用户UID(常用)

  • anongid

  • 配合all_squash使用,指定NFS的用户组GID(常用)

  • ro

  • 只读权限

  • root_squash

  • 当NFS客户端以ROOT管理员访问时,映射为NFS服务器的ROOT管理员(不常用)

  • no_root_squash

  • 当NFS客户端以普通用户访问时,映射为NFS服务器的匿名用户(不常用)

  • no_all_squash

  • 当NFS客户端以任何账户访问时,都不进行压缩(不常用)

  • async

  • 先将数据写入内存,然后再写入硬盘中,效率高,但是数据可能丢失(不常用)

 

1-4 关闭selinux和防火墙

[root@nfs ~]# setenforce 0 (临时关闭)

[root@nfs ~]# systemctl disable --now firewalld

 

 

1-5 启动nfs和rpcbind服务

[root@nfs ~]# systemctl start nfs-server

[root@nfs ~]# systemctl start rpcbind

 

 

1-6 检查服务端是否正常

[root@nfs ~]# showmount -e [服务端的地址,默认是本机地址]

 

[root@nfs ~]# showmount -e

Export list for nfs:

/web/nfsv1 172.16.1.0/20

[root@nfs ~]# showmount -e 172.16.1.31

Export list for 172.16.1.31:

/web/nfsv1 172.16.1.0/20

 

1-7 创建"www"用户

    -在客户端和服务端都需要创建(使得两边有一个统一用户)

[root@nfs nfs1]# groupadd www -g 666

[root@nfs nfs1]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin

    -用户名为www

    -666 为指定的id

 

1-8 给目录授权(修改目录权限)

[root@nfs nfs1]# chown -R www.www /web/

    -R 处理指定目录及其子目录下的所有文件

    挂载点即挂载目录

    -/web/ 上边"1-2"创建的目录

 

 

 

step2---客户端

 

2-1 安装NFS

[root@web01 opt]# yum install -y nfs-utils

 

 

2-2 创建目录

[root@web01 opt]# mkdir /opt/nfs/

    -该目录作为挂载点

 

2-3 挂载(将NFS服务器磁盘挂载至客户端挂载点)

[root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1  /opt/nfs/

    -挂载格式: mount 磁盘路径 挂载点(路径)

    -目录需要挂载(磁盘)才能使用

    -本例中:

        -t nfs - 固定参数

        172.16.1.31 - NFS服务器的内网ip

        /web/nfs1 - 磁盘路径(NFS服务器的)

 

在客户端查看挂载df -h

linux 查询nfs状态_linux 查询nfs状态_06

 

2-4 创建"www"用户

    -在客户端和服务端都需要创建

[root@nfs nfs1]# groupadd www -g 666

[root@nfs nfs1]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin

    -用户名为www

    -666 为指定的id

 

创建的用户为www用户验证

  • 在某客户端创建一个文件,如web01服务器

linux 查询nfs状态_服务端_07

 

2-5 测试NFS文件同步功能

 

 

4 新增/修改要挂载磁盘路径时

 

4-1 新增挂载磁盘路径

  • 如 mkdir /web/nfs2

 

4-2 修改配置(服务端)

 

  • vim /etc/exports
  • 参照: 3 部署--->1-3 修改NFS服务端配置文件

 

linux 查询nfs状态_客户端_08

 

4-3 重启nfs-server 及 rpcbind(服务端)

systemctl restart nfs-server rpcbind

 

 

5---"搭建考试系统"

  • 实现从不同服务器网页上传图片后互相可以查看

 

 

step1---搭建web服务器

 

1-1 安装web软件(3个)

[root@web01 opt]# yum install httpd php php-devel -y

-httpd 软件

-php 软件

-php-devel 软件

 

 

 

1-2 切换到网站的根目录

[root@web01 opt]# cd /var/www/html/

 

 

1-3 上传压缩包到客户端

  1. yum install -y lrzsz
  2. 将文件拖至客户端服务器(如web01)即可
  3. 解压文件
  • unzip 文件名

 

linux 查询nfs状态_html_09

 

 

1-4 授权

[root@web01 html]# chown -R www.www /var/www/html

 

 

1-5 关闭selinux和防火墙

[root@nfs ~]# setenforce 0

[root@nfs ~]# systemctl disable --now firewalld

 

1-6 修改web软件的用户属主属组为www

[root@web01 html]# vim /etc/httpd/conf/httpd.conf

- User www

- Group www

linux 查询nfs状态_html_10

 

1-7 启动web软件

[root@web01 html]# systemctl start httpd

 

1-8 测试

 

    1、上传

     特别注意: 上传前刷新以下网页

linux 查询nfs状态_linux 查询nfs状态_11

查看上传文件

linux 查询nfs状态_服务端_12

 

   2、访问

    http://172.16.1.7/upload/2_linux.jpg

    查看上传的图片

linux 查询nfs状态_服务端_13

 

 

 

step2---实现文件共享

  •  用上边学的"部署NFS"实现

 

 

---服务端

 

2-1 创建目录

[root@nfs nfs1]# mkdir /web/upload

[root@nfs nfs1]# chown www.www /web/upload

 

 

2-2 修改NFS配置文件

[root@nfs nfs1]# vim /etc/exports

/web/upload  172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)

 

 

2-3 重启NFS和rpcbind

[root@nfs nfs1]# systemctl restart nfs-server rpcbind

 

---客户端

 

2-4 客户端安装NFS软件

[root@web01 html]# yum install nfs-utils -y

[root@web02 html]# yum install nfs-utils -y

[root@web03 html]# yum install nfs-utils -y

 

2-5挂载

[root@web01 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload

[root@web02 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload

[root@web03 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload

 

2-6 测试

   用web2上传,web3查看

 

 

 

---补充知识点

 

1 出问题时,可查看错误日志

  • tail -f /var/log/httpd/error_log 
  • 实时监控路径下最后十行日志

linux 查询nfs状态_html_14

 

2 ps -ef | grep httpd

  • ps  查看进程
  • -e 显示所有进程
  • -f 全格式显示

linux 查询nfs状态_html_15