今日内容: NFS

1.什么是nfs?
network file system 网络文件系统 nfs共享存储 2.nfs能干什么?
nfs 能为 不同主机系统之间 实现 文件的共享 3.为什么要使用nfs?
在集群架构中使用 4.nfs能解决什么问题?
1.解决多台机器静态资源一致性问题
2.解决多态机器资源共享
3.解决磁盘空间浪费的问题 5.使用nfs的注意事项?
1.添加共享存储,只会带来网站的访问延时和消耗,并不会增加网站访问的速度.
2.CDN---->听听就行( )
1.购买厂商CDN ---> 用户请求img--->CDN--->负载均衡-->Web-->存储-->CDN缓存该图片
2.所有的web都是用共享存储,图片此时一致, 只需要将图片定期的推送至CDN

1.nfs实现的原理解析?

本地文件操作方式
1.当用户执行mkdir命令,BashShell无法完成该命令操作,会将其翻译给内核。
2.Kernel内核解析完成后会驱动对应的磁盘设备,完成创建目录的操作。
NFS实现原理
1.NFS客户端执行增、删等操作,客户端会使用不同的函数对该操作进行封装。(windows linux mac)
2.NFS客户端会通过TCP/IP的方式传递给NFS服务端。(可靠)
3.NFS服务端接收到请求后,会先调用portmap进程进行端口映射。
4.nfsd进程用于判断NFS客户端是否拥有权限连接NFS服务端。
5.Rpc.mount进程判断客户端是否有对应的权限进行验证。读 写
6.idmap进程实现用户映射和压缩。
7.最后NFS服务端会将客户端的函数转换为本地能执行的命令,然后将命令传递至内核,由内核驱动硬件。
注意: rpc是一个远程过程调用,那么使用nfs必须有rpcbind服务

2.安装、配置、nfs服务

1.安装

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

2.配置

 1.共享什么目录?
2.共享给谁使用?
3.共享后目录,客户端拥有什么权限?
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw)

3.根据配置进行初始化环境

	[root@nfs ~]# mkdir /data
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data/

4.启动

	[root@nfs ~]# systemctl enable nfs
[root@nfs ~]# systemctl start nfs

5.客户端测试

	[root@backup ~]# yum install nfs-utils -y
[root@backup ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24 挂载远程172.16.1.31的/data至本地的/mnt目录
[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt

6.错误的示范

	#访问被拒绝 (没有允许该网段访问)
[root@backup ~]# mount -t nfs 10.0.0.31:/data /media/
mount.nfs: access denied by server while mounting 10.0.0.31:/data
	#能够连接,但是权限被拒绝
[root@backup mnt]# touch file
touch: cannot touch ‘file’: Permission denied

7.多个客户端共享一个存储服务器 (NFS)

8.实现开机自动挂载(因为服务器不重启) 扩展了解即可

[root@web01 ~]# cat /etc/fstab
172.16.1.31:/data /media nfs defaults 0 0
PS:  如果nfs服务端出现问题:  客户端重启则会无法启动成功
1.等待1分38s 自动进入系统
2.进入单用户模式,注释开机自启动nfs
3.将nfs恢复正常

3.nfs相关的配置参数

nfs共享参数		 参数作用
rw* 读写权限 (最多)
ro 只读权限 (只希望看,不希望写) root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户nfsnobody(不常用)
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用)
no_all_squash 无论NFS客户端使用什么账户访问,都不进行用户压缩 ( 后面讲云计算课程会用上 )
all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(常用)
sync* 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
anonuid* 配置all_squash使用,指定NFS的用户UID,必须存在系统
anongid* 配置all_squash使用,指定NFS的用户UID,必须存在系统

4.rw 和 ro

[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(ro)
[root@nfs ~]# systemctl restart nfs
#提示,该目录是一个只读文件
[root@web01 media]# touch file
touch: cannot touch ‘file’: Read-only file system

2.验证all_squash anonuid anongid

	[root@nfs ~]# cat /etc/exports
​ /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

1.创建系统真实用户,指定uid和gid为666

[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u666 -g666 www
[root@nfs ~]# id www
uid=666(www) gid=666(www) groups=666(www)

2.变更属主和属组

[root@nfs ~]# chown -R www.www /data/

3.重启nfs

[root@nfs ~]# systemctl restart nfs

4.客户端使用(一定要与服务端使用的匿名用户一致)

[root@web01 ~]# groupadd -g 666 www
[root@web01 ~]# useradd -u666 -g666 www
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/ /media/

10.nfs如何共享多个目录?

[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data_2 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
1.NFS存储优点
1.NFS简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。
2.NFS的数据都在文件系统之上,所有数据都是能看得见。
		除了NFS:  		( Glusterfs分布式  赠送 )  MooseFS   FastDFS

11.NFS存储局限

1.存在单点故障, 本身NFS不支持高可用,也不支持集群.
2.NFS数据都是明文,并不对数据做任何校验,也没有密码验证(强烈建议内网使用)。 3.NFS应用建议
1.生产场景应将静态数据(jpg\png\mp4\avi\css\js)尽可能放置CDN场景进行环境, 以此来减少后端存储压力
2.如果没有缓存或架构、代码等,本身历史遗留问题太大,在多存储也没意义 ```
NFS就是用来共享 其他什么都没有. 所有的静态都是CDN提供访问的
```

NFS练习:K

准备3台虚拟机服务器,并且请按照要求搭建配置NFS服务。

NFS服务端(A)

NFS客户端(B)

NFS客户端(C)

1.在NFS服务端(A)上共享/data/w(可写) 及/data/r(只读)

2.在NFS客户端(B/C)上进行挂载


服务端A:


[root@nfs ~]# yum install nfs-utils -y
[root@nfs ~]# cat /etc/exports
/data/r 172.16.1.0/24(ro,sync,all_squash,anonuid=666,anongid=666)
/data/w 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

根据配置进行初始化环境
[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u666 -g666 www
[root@nfs ~]# mkdir /data/{r,w} -p
[root@nfs ~]# chown -R www.www /data/ [root@nfs ~]# systemctl restart nfs


客户端B:

卸载之前遗留的挂载信息
[root@web01 ~]# umount -lf 172.16.1.31:/data
[root@web01 ~]# umount -lf 172.16.1.31:/data_2 挂载
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/r /mnt
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/w /media/


总结:

1.什么是NFS?
网络文件系统
2.NFS主要实现的功能?
让不同主机之间能共享目录
https://blog.csdn.net/wykkunkun/article/details/79638288
3.NFS到底有什么用?
日常 没用
网站架构 有用?
没有共享前有什么问题?
共享后解决了什么问题?
1.一致性
2.减少磁盘空间
4.NFS实现共享原理?
5.NFS 安装 配置 使用?
6.客户端挂载?
showmount
mount
df -h
/etc/fstab
6.多个客户端如何进行NFS的挂载?
测试多个客户端数据是否一致
7.NFS相关参数?
rw
all_squash
anonuid
anongid
sync
8.NFS服务端如何共享多个目录
9.NFS使用建议 CDN -->CNAME

nfs 存储服务的更多相关文章

  1. NFS存储服务

    NFS存储服务笔记======================================================================NFS共享存储是什么: 英文名-Netwo ...

  2. NFS存储服务及部署

    1 NFS简介 1.1 什么是NFS NFS=Network File System=网络文件系统.主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录.NFS客户端(一般为应用服 ...

  3. NFS存储服务部署

    第1章 NFS介绍 1.1 NFS服务内容的概述 □ RPC服务知识概念介绍说明,以及RPC服务存在价值(必须理解掌握) □ NFS服务工作原理讲解(必须理解掌握) □ NFS共享文件系统使用原理讲解 ...

  4. 三.NFS存储服务

    01. 课程回顾 备份服务概念介绍(rsync备份服务利用相应算法,实现增量数据同步) 备份服务工作方式说明: 1. 本地数据备份同步方式(类似cp命令) 2. 远程数据备份同步方式(类似scp命令) ...

  5. Linux NFS存储服务部署

    什么是NFS 中文意思是网络文件系统,主要功能是通过网络(一般是局域网)让不同主机之间可以共享文件或目录 NFS属于本地文件存储服务 缺点1: 1 2 3 4 5 6 7 windows上无法使用   ...

  6. Linux(10):期中架构(2)--- NFS存储服务 & 实时同步

    1. 共享存储服务概念: # NFS是Network File System的缩写,中文意思是网络文件系统, # 它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录. 2. ...

  7. nfs存储服务实时同步

    一.NFS简介 NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过网络共享资源.将NFS主机分享的目录,挂载到本地客户端当中,本地NFS的客户端应用可以透明地 ...

  8. LAMP集群项目五 部署NFS存储服务并设置WEB服务挂载

    yum install nfs-utils portmap -y 在centos6.5中portmap已经改为rpcbind 先启动rpcbind /etc/init.d/rpcbind start ...

  9. 网络共享存储服务NFS

    网络共享存储服务NFS 作者:Eric 微信:loveoracle11g 环境准备 服务器系统 角色 IP RHEL 7.5 x86-64 NFS服务端 192.168.10.201 RHEL 7.5 ...

随机推荐

  1. React预备知识点

    1.react中的状态提升 react的状态提升就是用户对子组件操作,子组件不改变自己的状态,而是通过自己的props把操作改变的数据传递给父组件,改变父组件的状态,从而改变受父组件控制的所有子组件的 ...

  2. node爬虫的几种简易实现方式

    说到爬虫大家可能会觉得很NB的东西,可以爬小电影,羞羞图,没错就是这样的.在node爬虫方面,我也是个新人,这篇文章主要是给大家分享几种实现node 爬虫的方式.第一种方式,采用node,js中的 s ...

  3. 11.源码分析---SOFARPC数据透传是实现的?

    先把栗子放上,让大家方便测试用: Service端 public static void main(String[] args) { ServerConfig serverConfig = new S ...

  4. Gradle-日志

    日志就像是构建工具的 UI,如果输出太混乱,真正的警告和错误很容易就被忽略了.Gradle 定义了 6 种日志级别,以便于我们识别有用的信息. 日志级别 Gradle 的日志 和Android 一样也 ...

  5. docker学习1:docker前世今生

    Docker简介 Docker是2013发起的一个项目,早在2013年,Docker自诞生起,就是整个技术界的明星项目,当时我还在上海实习,就在各种技术媒体上看到了Docker的介绍文章,很多技术媒体 ...

  6. centos7 下面python2 共存python3

    第一步.查看python的版本号以及安装路径: 通过以上的查看可以看到,python默认是指向到python2的,所以这里我们不动它,保持现状态即可. 备注:(因为现在还有很多的系统更新都需要使用到p ...

  7. 只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

    ## 统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生. 比较通用的返回值格式如下: ```jav ...

  8. yolo v2

    https://blog.csdn.net/wfei101/article/details/79398563 https://blog.csdn.net/oppo62258801/article/de ...

  9. CNN中1x1 卷积的处理过程及作用

    参看:https://blog.csdn.net/ybdesire/article/details/80314925

  10. jvm系列(六):Java服务GC参数调优案例

    本文介绍了一次生产环境的JVM GC相关参数的调优过程,通过参数的调整避免了GC卡顿对JAVA服务成功率的影响. 这段时间在整理jvm系列的文章,无意中发现本文,作者思路清晰通过步步分析最终解决问题. ...