0
点赞
收藏
分享

微信扫一扫

NFS共享存储

课前环境准备

 NFS共享存储_服务端

NFS概述

  • NFS(Network File System)通过网络来做文件存储
  • NFS用于企业集群架构中,如果是大型网站,会用到更加复杂的分布式文件系统FastDFS,glusterfs,HDFS

为什么使用共享存储

 NFS共享存储_apache_02

## 没有共享存储
http://10.0.0.7/user_data/11_11.jpg.jpg
http://10.0.0.8/user_data/22_22.jpg.jpg
不可以用10.0.0.7这个IP找到22_22.jpg.jpg
不可以用10.0.0.8这个IP找到11_11.jpg.jpg

NFS 工作原理

 NFS共享存储_apache_03

Rpc.nfsd:也可以理解成为客户端和服务端连接的第一道防线,一个小型防火墙
Rpc.mount:如果能通过Rpc.nfsd,则可以读取/etc/exports文件,获取客户端是否能对服务端的文件进行读取等权限
------------------------------------------------------
1.用户进程访问NFS客户端,使用不同的函数对数据进行处理
2.NFS客户端通过TCP/IP的方式传递给NFS服务端(NFSIP和NFS端口进行连接)
3.NFS服务端接收到请求后,会先调用portmap进程进行端口映射。
4.nfsd进程用于判断NFS客户端是否拥有权限连接NFS服务端.
5.Rpc.mount进程判断客户端是否有对应的权限进行验证。
6.idmap进程实现用户映射和压缩
7.最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。

注意:** rpc是一个远程过程调用,那么使用nfs必须有rpc服务 服务名:rpcbind

安装部署NFS服务端

## C5 C6安装nfs服务
[root@nfs ~]# yum install -y nfs rpcbind

## C7安装nfs服务
[root@nfs ~]# yum install -y nfs-utils

## 配置NFS服务端
NFS配置文件的位置
[root@nfs ~]# ll /etc/exports
-rw-r--r--. 1 root root 0 Jun 7 2013 /etc/exports

[root@nfs ~]# vim /etc/exports
# 共享目录 允许访问NFS服务端的网段 (可读可写,同步,任何用户都映射成nfs的匿名用户)
/data 172.16.1.0/24(rw,sync,all_squash)

## 创建共享目录
[root@nfs ~]# mkdir /data

## 修改共享目录的属主和属组为nfs的匿名用户
[root@nfs ~]# chown nfsnobody:nfsnobody /data

## 启动服务
[root@nfs ~]# systemctl start nfs

## 加入开机自启
[root@nfs ~]# systemctl enable nfs

## 检查进程
[root@nfs ~]# ps -ef|grep nfs

## 检测配置文件是否生效
[root@nfs data]# cat /var/lib/nfs/etab
/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,
no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,
secure,root_squash,all_squash)

客户端操作

# 1.安装nfs
[root@web01 ~]# yum install -y nfs-utils
[root@web02 ~]# yum install -y nfs-utils

# 2.查看哪些目录可以挂载
[root@web01 ~]# showmount -e 172.16.1.31
[root@web02 ~]# showmount -e 172.16.1.31

# 3.挂载共享目录
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /opt
[root@web02 ~]# mount -t nfs 172.16.1.31:/data /opt

主机名

WanIp

LanIp

角色

部署应用

web01

10.0.0.7

172.16.1.7

网站服务(nfs客户端)

httpd、php、nfs

webo2

10.0.0.8

172.16.1.8

网站服务(nfs客户端)

httpd、php、nfs

nfs

10.0.0.31

172.16.1.31

共享存储(nfs服务端)

nfs

剪切

复制

粘贴

左边插入

右边插入

上方插入

下方插入

合并单元格

拆分单元格

删除选中列

删除选中行

删除表格

清空内容

NFS共享存储实战

环境

主机名

WanIp

LanIp

角色

部署应用

web01

10.0.0.7

172.16.1.7

网站服务(nfs客户端)

httpd、php、nfs

webo2

10.0.0.8

172.16.1.8

网站服务(nfs客户端)

httpd、php、nfs

nfs

10.0.0.31

172.16.1.31

共享存储(nfs服务端)

nfs

部署交作业网站

# 1.安装apache和php
[root@web01 ~]# yum install -y httpd php
[root@web02 ~]# yum install -y httpd php

# 2.下载代码(到站点目录下)
[root@web01 html]# ll
-rw-r--r-- 1 root root 26927 May 18 09:33 kaoshi_modify.zip
[root@web01 html]# pwd
/var/www/html

# 3.解压代码
[root@web01 html]# unzip kaoshi_modify.zip
[root@web02 html]# unzip kaoshi_modify.zip

# 4.启动apache服务
[root@web01 html]# systemctl start httpd
[root@web02 html]# systemctl start httpd

# 5.检查进程
[root@web01 html]# ps -ef|grep 'httpd'
[root@web02 html]# ps -ef|grep 'httpd'

# 6.端口检查
[root@web01 html]# netstat -lntup|grep httpd
[root@web01 html]# netstat -lntup|grep httpd
tcp6 0 0 :::80 :::* LISTEN 1679/httpd
[root@web02 html]# netstat -lntup|grep httpd
tcp6 0 0 :::80 :::* LISTEN 4408/httpd

# 7.打开浏览器访问
http://10.0.0.7/
http://10.0.0.8/

# 8.授权站点目录
chown apache.apache /var/www/html

 NFS共享存储_apache_04

 NFS共享存储_apache_05

测试上传图片

 NFS共享存储_apache_06

[root@web01 user_data]# ll /var/www/html/user_data/
total 224
-rw-r--r-- 1 apache apache 228429 May 18 15:48 11_11.jpg.jpg

给交作业网站部署共享存储

# 1.先部署nfs的服务端
## C5 C6安装nfs服务
[root@nfs ~]# yum install -y nfs rpcbind

## C7安装nfs服务
[root@nfs ~]# yum install -y nfs-utils

## 配置NFS服务端
NFS配置文件的位置
[root@nfs ~]# ll /etc/exports
-rw-r--r--. 1 root root 0 Jun 7 2013 /etc/exports
[root@nfs ~]# vim /etc/exports
# 共享目录 允许访问NFS服务端的网段 (可读可写,同步,任何用户都映射成nfs的匿名用户)
/data 172.16.1.0/24(rw,sync,all_squash)

## 创建共享目录
[root@nfs ~]# mkdir /data

## 修改共享目录的属主和属组为nfs的匿名用户
[root@nfs ~]# chown nfsnobody:nfsnobody /data

## 启动服务
[root@nfs ~]# systemctl start nfs

## 加入开机自启
[root@nfs ~]# systemctl enable nfs

## 检查进程
[root@nfs ~]# ps -ef|grep nfs

## 检测配置文件是否生效
[root@nfs ~]# cat /var/lib/nfs/etab
/data
172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,
no_subtree_check ,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,
rw,secure,root_squash,all_squ ash)

# 2.先创建用户数据上传目录
[root@web01 html]# mkdir /var/www/html/user_data/
[root@web02 html]# mkdir /var/www/html/user_data/

# 3.客户端挂载nfs服务端
[root@web01 html]# mount -t nfs 172.16.1.31:/data /var/www/html/user_data/
[root@web02 html]# mount -t nfs 172.16.1.31:/data /var/www/html/user_data/

 NFS共享存储_html_07

 NFS共享存储_html_08

# 检验
从10.0.0.8上传图片,NFS服务端存在图片了,检验成功

企业中尽量统一用户

# 服务端属主属组改成apache,与客户端相同(统一用户)
[root@web01 user_data]# id apache
uid=48(apache) gid=48(apache) groups=48(apache)

[root@nfs data]# groupadd apache -g 48
[root@nfs data]# useradd apache -u 48 -g 48

[root@nfs data]# vim /etc/exports
# 共享目录 允许访问NFS服务端的网段 (可读可写,同步,任何用户都映射成nfs的匿名用户)
/data 172.16.1.0/24(rw,sync,anonuid=48,anongid=48,all_squash)

# 重启服务
[root@nfs data]# systemctl restart nfs

[root@nfs data]# ll /data/ -d
drwxr-xr-x 2 nfsnobody nfsnobody 40 May 18 15:58 /data/


# 检验
[root@web01 html]# touch user_data/5.txt
touch: cannot touch ‘user_data/5.txt’: Permission denied

#需要重新授权
[root@nfs ~]# chown apache.apache /data

# 重新检验
[root@web01 html]# touch user_data/5.txt

# 成功
[root@nfs ~]# ll /data/
total 224
-rw-r--r-- 1 nfsnobody nfsnobody 228429 May 18 15:58 11_11.jpg.jpg
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 18 11:23 1.txt
-rw-r--r-- 1 apache apache 0 May 18 16:22 5.txt
## 用户统一
[root@web01 html]# ll -d user_data/
drwxr-xr-x 2 apache apache 53 May 18 16:22 user_data/

apache和nfs统一使用www用户uid是666 gid也是666

# 客户端
## 1.修改配置文件
[root@web02 html]# vim /etc/httpd/conf/httpd.conf
修改

 NFS共享存储_html_09

## 2.创建组
[root@web02 html]# groupadd www -g 666

## 3.创建用户
[root@web02 html]# useradd www -u 666 -g 666

## 4.重置配置文件
[root@web02 html]# systemctl restart httpd

## 5.查看 /user_data的属主属组是否为www
[root@web02 html]# ll
total 80
-rw-r--r-- 1 root root 38772 Apr 27 2018 bg.jpg
-rw-r--r-- 1 root root 2633 May 4 2018 index.html
-rw-r--r-- 1 root root 52 May 10 2018 info.php
-rw-r--r-- 1 root root 27020 May 18 11:53 kaoshi_modify.zip
-rw-r--r-- 1 root root 1117 May 18 11:52 upload_file.php
drwxr-xr-x 2 www www 48 May 18 17:47 user_data
#服务端
## 1.创建组
[root@nfs data]# groupadd www -g666

## 2.创建用户
[root@nfs data]# useradd www -u 666 -g666

## 3.修改配置文件
[root@nfs data]# vim /etc/exports
# 共享目录 允许访问NFS服务端的网段 (可读可写,同步,任何用户都映射成nfs的匿名用户)
/data 172.16.1.0/24(rw,sync,anonuid=666,anongid=666,all_squash)

## 4.修改属主属组
[root@nfs data]# chown www.www /data/

## 5.重启服务
[root@nfs data]# systemctl restart nfs
举报

相关推荐

0 条评论