nfs



一、什么是NFS


共享网络文件存储服务器

2、NFS的原理
1.用户访问NFS客户端,将请求转化为函数
2.NFS通过TCP/IP连接服务端
3.NFS服务端接收请求,会先调用portmap进程进行端口映射
4.Rpc.nfsd进程用于判断NFS客户端能否连接服务端;
5.Rpc.mount进程用于判断客户端对服务端的操作权限
6.如果通过权限验证(依赖系统用户),可以对服务端进行操作,修改或读取


单点故障

3、部署NFS服务

二、安装nfs服务

1.安装nfs

rpcbind是为nfs提供网络

yum install nfs-utils rpcbind -y


2、关闭防火墙和selinux


[root@nfs ~]# setenforce 0
[root@nfs ~]# systemctl stop firewalld

 

3、创建一个目录,用于存放文件的仓库


[root@nfs ~]# mkdir /data


4、创建一个系统用户,用于权限验证(权限验证时真正验证的时UID)


[root@nfs ~]# useradd www -r -M -s /sbin/nologin -u 996

 

5、修改NFS的配置文件(作用:指定NFS的仓库及权限)



NFS的配置文件:/etc/exports

[root@nfs ~]# vi /etc/exports

[仓库地址] [可以访问的IP段](权限)

/data 172.16.1.0/20(rw,all_squash,sync)


[root@nfs data]# vim /etc/exports
[root@nfs data]# cat /etc/exports
/data 172.16.1.0/20(rw,all_squash,sync)

控制NFS读写权限
rw 读写权限 (常用)
ro 只读权限 (不常用)

控制访问NFS时,NFS基于的权限

root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 (不常用)
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 (不常用)
all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 (常用)
no_all_squash 无论NFS客户端使用什么账户访问,都不进行压缩 (不常用)

控制NFS同步方式
sync 同时将数据写入到内存与硬盘中,保证不丢失数据 (常用),但是会产生延时
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 (不常用)

控制默认的用户(非必须)
anonuid 配置all_squash使用,指定NFS的用户UID,必须存在系统 (常用)
anongid 配置all_squash使用,指定NFS的用户UID,必须存在系统 (常用)


6、启动NFS服务


[root@nfs data]# systemctl start nfs-server rpcbind


7、查看NFS的挂载点是否设置成功



# 查看指定服务器的挂载点
[root@nfs data]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/20

# 查看本机的挂载点
[root@nfs data]# showmount -e
Export list for nfs:
/data 172.16.1.0/20

 

8、给服务端设置权限


[root@nfs data]# chown nfsnobody.nfsnobody /data/


9、挂载使用(客户端必须安装nfs-utils)


[root@web01 ~]# yum install nfs-utils -y
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /opt

 

可能遇到的问题

 

1.挂载不上:

selinux没关闭

防火墙没有关闭

 


2.nfs客户端未安装

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

 

3.没权限:


nfs服务端是root权限
[root@nfs data]# chown nfsnobody.nfsnobody /data/

 

4、NFS服务的组成


NFS类似于磁盘的方式,挂载到客户端的目录上

 

案例


1、安装web服务软件

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

2、上传代码

[root@web01 html]# vi index.php
<?php
phpinfo();

3、开启web服务
[root@web01 html]# systemctl start httpd

案例:将nfs中的图片,共享到web01上来访问

1、将图片上传至NFS服务器

2、将NFS挂载到web网站对应目录
mount -t nfs 172.16.1.31:/data /var/www/html/img/

3、上传代码

[root@web01 html]# cat index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<img src="./img/123.png" alt="">
</body>
</html>

4、浏览器访问

7、案例(注意:关闭selinux setenforce 0)

1、安装web服务软件

[root@web02 ~]# yum install httpd php -y

2、上传代码

3、将代码复制到网站根目录(/var/www/html)
[root@web02 kaoshi]# cp -r ./* /var/www/html/

4、开启web服务

[root@web02 html]# systemctl start httpd

5、统一用户

[root@web02 html]# useradd www -r -M -s /sbin/nologin -u 996

2、修改httpd的启动用户

[root@web02 ~]# vi /etc/httpd/conf/httpd.conf
User www
Group www

3、重启WEB服务软件

[root@web02 ~]# systemctl restart httpd

4、修改站点目录的用户

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

5、关闭selinux

setenforce 0

6、上传的文件共享至web01中

[root@web02 html]# yum install nfs-utils -y
[root@web02 html]# mount -t nfs 172.16.1.31:/data /var/www/html/upload

上一篇:CentOS搭建Nfs存储服务器,自用收藏


下一篇:GA003-181-21