LINUX基础培训十九之常见服务nfs介绍

前言、本章学习目标 
  1. 了解nfs服务用途
  2. 掌握nfs服务器的配置
  3. 掌握nfs客户端的配置使用

一、NFS简介

NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

NFS在文件传送或信息传送的过程中,依赖于RPC协议。RPC,远程过程调用(Remote Procedure Call),是使客户端能够执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,就是因为NFS使用了RPC提供的传输协议,可以说NFS就是使用PRC的一个程序。

NFS 存储 服务器主要用于用户上传的数据 ,图片 音频 、等信息。
 

二、NFS工作原理

NFS服务依赖于RPC(Remote Procedure Call)服务。nfsd默认端口2049,实际使用过程中因为需要提供不同的服务,因此NFS启动时还会随机调用系统的空闲端口。在centos5.x中默认调用1024以下端口,centos6.x后默认调用的端口号一般较大,30000以上。因为NFS随机端口的原因所以需要RPC服务来和client端确认传输端口等。

使用场景:web集群中NFS服务器主要用于存储用户上传的信息,方便集群中机器获取用户数据。如图片 附件 头像 视频 音频。

缺点:
1:nfs属于本地文件系统,在高并发场景和大存储量下,需要使用分布式存储ceph,  FastDFS, tfs(taobao)等。
2:客户端的数据都是通过明文传送。客户端没有用户认证机制,安全性能一般,所以建议一般在局域网内使用。
3:容易发生单点故障,即server服务器宕机所有的客户端都不能访问。
 

客户端连接nfs流程

  当服务器在启动NFS时会随机选用数个端口,并主动地向RPC注册。因此RPC可以知道每个端口对应的NFS功能。然后RPC固定使用端口111来监听客户端的请求并回报客户端正确的端口,所以可以让NFS的启动更为容易。注意,启动NFS之前,要先启动RPC;否则NFS会无法向RPC注册。另外,重新启动RPC时原本注册的数据会不见,因此RPC重新启动后它管理的所有程序都需要重新启动以重新向RPC注册。
当客户端有NFS文件要存取请求时,它如何向服务器端要求数据?
(1)客户端会向服务器端的RPC(port 111)发出NFS文件存取功能的询问请求。
(2)服务器端找到对应的已注册的NFS daemon端口后会回报给客户端。
(3)客户端了解正确的端口后,就可以直接与NFS守护进程来联机。


三、NFS服务侧写

·类型:系统V (System V) 管理的服务
·软件包:nfs-utils
·守护进程: rpc.nfsd (主进程),rpc.lockd (锁定文件,防止多个客户端同时写入文件造成问题,非必要进程)rpiod,rpc.mountd (使用权限),rpcurquot;rpc.statd(文件一致性检查,非必要进程)
·脚本: /etc/init.d/nfs, /etc/init.d/nfslock
·端口:2049(nfsd),其它端口由portmap(111)分配
·配置文件: /etc/exports
·相关软件包portmap (必须)、tcp_wrappers
·红帽6中portmap进程由rpcbind代替
 

四、NFS服务器

在/etc/exports文件中定义导出目录
·每个条目都指定文件系统被导出到的主机,以及相关的权限和选项
·应该指定的选项
·默认选项:(ro,sync,root_squash)
sync所有数据在请求时写入共享
all_squash 不论NFS使用户者的身份如何,使用者身份都变成nfsnobody
no_all squash 保留共享文件的UID和GID(默认)
no_root_squash告知NFS允许客户端系统上的root用户在共享中也具有root权限
root_squash root用户的所有请求映射成如nobody用户一样的权限(默认)

备注:默认情况下,NFS服务器将NFS客户端上的root视作用户nfsnobody,即如果root尝试诚挂载的导出中的文件,服务器会将其视作用户nfsnobody访问。

五、NFS服务器配置文件介绍

格式:共享目录     指定共享对象(共享参数)
示例: /data   192.168.1.0/24(rw,sync)
将 /data  共享给192.168.1.x ,客户端权限rw
其中共享对象可以用通配符,比如 * 代表所有地址。
配置参数:
rw: 读写
ro :只读
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:是大数据时使用,是先写到缓存区,必要时再写到磁盘里。
all_squash:所有访问用户都映射为匿名用户或用户组;
no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
root_squash(默认):将来访的root用户映射为匿名用户或用户组;
no_root_squash:来访的root用户保持root帐号权限;
wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree_check :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
no_subtree_check(默认):即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
 

NFS工具:
#exportfs -r//保存所有更改
或者: #service nfs reload
#exportfs-v //显示所有导出
showmount -e hostname
应用实例:
root@desktop4 ~]# showmount -e 192.168.0.4
Export list for 192.168.0.4:var/nfs 192.168.0.0/24

六、搭建nfs服务器实践

1、服务端配置
# rpm -qa |grep nfs
# rpm -qa | grep rpcbind
# service nfs status
# service nfs start
# chkconfig nfs on
# service rpcbind status //rpcbind服务替代了rhels中的pormap
# mkdir /var/nfs
# touch /var/nfs/f1
# vim /etc/exports
/var/nfs  192.168.0.0/24(ro,sync)
# service nfs restart
# netstat -tunlplgrep 2049 //2049-nfsd使用的端口
# netstat -tunlp I grep rpcbind
[root@desktop4~]# showmount-e 192.168.0.4
Export list for 192.168.0.4:
/var/nfs 192.168.0.0/24

2、nfs网络访问控制
# vim /etc/exports
var/nfs 192.168.0.0/24(w,sync) 192.168.1.0/24(ro)
# exportfs -r、exportfs -v
192.168.0.0/24(rw,wdelay,root squash,no_subtree_check)var/nfs
192.168.1.0/24(ro,wdelay,root_squash,no_subtree_check)var/nfs
# vim /etc/exports
/var/nfs 192.168.0.0/24(rw,sync)
/var/nfs 192.168.0.1.0/24(ro)
# exportfs -r、exportfs -v
192.168.0.0/24(rwwdelay,root_squash,no_subtree_check)/var/nfs192168.0.1.0/24(ro,wdelayroot squash,no_subtree_check)/var/nfs
# vim /etc/exports
/var/nfs 192.168.0.0/24(rw,sync)
/var/nfs 192.168.0.1.0/24(ro)
/var/nfs*(ro)

3、nfs客户端挂载使用:
1)安装nfs,并启动服务。
yum install -y nfs-utils
systemctl enable rpcbind.service
systemctl start rpcbind.service
客户端不需要启动nfs服务,只需要启动rpcbind服务.

2)检查 NFS 服务器端是否有目录共享
showmount -e 192.168.227.3

3)使用 mount 挂载A服务器端的目录/opt/nfs到客户端B的目录/opt/nfs下
[root@localhost ~]# mkdir /opt/nfs   
[root@localhost ~]# mount -t nfs 192.168.227.3:/opt/nfs/ /opt/nfs/    

4)加到开机自挂载
添加到/etc/fstab中,或添加挂载脚本至rc.local下

七、本章实验

1、搭建nfs服务,并从客户端挂载测试。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/353534.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习第一个项目-----鸢尾花数据集加载及报错解决

项目步骤 如刚开始做,从 “项目开始” 看; 如遇到问题从 “问题” 开始看; 问题 报错如下 ModuleNotFoundError: No module named sklearn解决过程 查看官网,感觉可能是python版本和skilearn版本不匹配,更新一下p…

使用vue_cli脚手架创建Vue项目(cmd和图形化方式)

使用vue_cli脚手架创建Vue项目(cmd和图形化方式) 创建项目(cmd方式) vue create vue_cli1.方向键选择manually select feature(手动选择方式创建),回车 2.按空格键选择需要的组件:Babel、PWA、Router、Vuex、CSS,回…

【GitHub项目推荐--游戏模拟器(switch)】【转载】

01 任天堂模拟器 yuzu 是 GitHub 上斩获 Star 最多的开源 Nintendo Switch 模拟器 ,使用 C 编写,考虑到了可移植性,该模拟器包括 Windows 和 Linux 端。 如果你的 PC 满足必要的硬件要求,该模拟器就能够运行大多数商业游戏&…

Django实战

一、开发登录表单 def login_form(request):html <html><body><form method"post">用户名:<input name "username" type"text"></input></br>密码&#xff1a;<input name "password" type…

破解Windows系统密码(保姆级教学)

前言: 本篇博客只是技术分享并非非法传播知识,实验内容均是在虚拟机中进行,并非真实环境 正文: 看到题目大家都已经晓得这篇博客是干嘛了,我也不废话了,直接上win7素材 需要windows10破解过程的关注后在下面评论"已关注,请私聊"我会私发给你 一.windows7电脑密码破解…

C++17中lambda表达式新增加支持的features

C17中对lambda表达式新增加了2种features&#xff1a;lambda capture of *this和constexpr lambda 1.lambda capture of *this: *this:拷贝当前对象,创建副本&#xff1a;捕获*this意味着该lambda生成的闭包将存储当前对象的一份拷贝 。 this:通过引用捕获。 当你需…

C语言-指针的基本知识(下)

四、指针的分类 按指针指向的数据的类型来分 1:字符指针 字符型数据的地址 char *p;//定义了一个字符指针变量&#xff0c;只能存放字符型数据的地址编号 char ch; p &ch; 2&#xff1a;短整型指针 short int *p;//定义了一个短整型的指针变量p&#xff0c…

[Raspberry Pi]如何利用ssh將樹莓派切換連接至陌生的wifi基地台?

當已習慣使用VNC遠端控制樹莓派後&#xff0c;原用來設定樹莓派的電腦螢幕和鍵盤也逐漸挪為它用。此次攜帶樹莓派外出&#xff0c;同時又希望使樹莓派連接當地的wifi AP&#xff0c;利用VNC遠端桌面切換新的wifi AP需要重新設定wifi密碼&#xff0c;但卻無法在VNC遠端桌面看到密…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例5-2 JavaScript 获取HTML元素对象

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>JavaScript 获取 HTML 元素对象</title> </head><body> <input type"text" value"admin" /> <br> <input …

代码随想录算法训练DAY29|回溯5

算法训练DAY29|回溯5 491.递增子序列 力扣题目链接 给定一个整型数组, 你的任务是找到所有该数组的递增子序列&#xff0c;递增子序列的长度至少是2。 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]] 说…

canvas绘制旋转的大风车

查看专栏目录 canvas实例应用100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

Android Handler完全解读

一&#xff0c;概述 Handler在Android中比较基础&#xff0c;本文笔者将对此机制做一个完全解读。读者可简单参考上述类图与时序图&#xff0c;便于后续理解。 二&#xff0c;源码解读 1&#xff0c;主线程伊始 众所周知&#xff0c;通过Zygote的fork方式&#xff0c;新创建…

Unity应用在车机上启动有概率黑屏的解决方案

问题描述 最近将游戏适配到车机上&#xff08;Android系统&#xff09;&#xff0c;碰到了一个严重bug&#xff0c;启动的时候有概率会遇到黑屏&#xff0c;表现就是全黑&#xff0c;无法进入Unity的场景。 经过查看LogCat日志&#xff0c;也没有任何报错&#xff0c;也没有任…

DLL劫持之IAT类型(Loadlibrary)

Loadlibrary Loadlibrary的底层是LoadLibraryEx 第三个参数&#xff1a; DONT_RESOLVE_DLL_REFERENCES : 这个标志用于告诉系统将DLL映射到调用进程的地址空间中&#xff0c;但是不调用DllMain并且不加载依赖Dll&#xff08;只映射自己本身&#xff09;。 LOAD_LIBRARY_AS_DA…

LVGL v9学习笔记 | 12 - 弧形控件的使用方法(arc)

一、arc控件 arc控件的API在lvgl/src/widgets/arc/lv_arc.h 中声明,以lv_arc_xxx命名。 arc控件由背景圆弧和前景圆弧组成,前景圆弧的末端有一个旋钮,前景圆弧可以被触摸调节。 1. 创建arc对象 /*** Create an arc object* @param parent pointer to an object, it w…

(N-141)基于springboot,vue网上拍卖平台

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 系统分前后台&#xff0c;项目采用前后端分离 前端技术&#xff1a;vueelementUI 服务端技术&#xff1a;springbootmybatis-plusredi…

利用STM32CubeMX和Keil模拟器,3天入门FreeRTOS(5.2) —— 互斥量

前言 &#xff08;1&#xff09;FreeRTOS是我一天过完的&#xff0c;由此回忆并且记录一下。个人认为&#xff0c;如果只是入门&#xff0c;利用STM32CubeMX是一个非常好的选择。学习完本系列课程之后&#xff0c;再去学习网上的一些其他课程也许会简单很多。 &#xff08;2&am…

[蓝桥杯]真题讲解:岛屿个数(BFS遍历图)

[蓝桥杯]真题讲解&#xff1a;岛屿个数&#xff08;BFS遍历图&#xff09; 一、视频讲解二、暴力代码&#xff08;也是正解代码&#xff09; 一、视频讲解 视频讲解 二、暴力代码&#xff08;也是正解代码&#xff09; //岛屿个数&#xff1a;搜索&#xff08;BFS/DFS&…

深度推荐模型之DeepFM

一、FM 背景&#xff1a;主要解决大规模稀疏数据下的特征组合遇到的问题&#xff1a;1. 二阶特征参数数据呈指数增长 怎么做的&#xff1a;对每个特征引入大小为k的隐向量&#xff0c;两两特征的权重值通过计算对应特征的隐向量内积 而特征之间计算点积的复杂度原本为 实际应…

华为二层交换机与防火墙配置上网示例

二层交换机与防火墙对接上网配置示例 组网图形 图1 二层交换机与防火墙对接上网组网图 二层交换机简介配置注意事项组网需求配置思路操作步骤配置文件相关信息 二层交换机简介 二层交换机指的是仅能够进行二层转发&#xff0c;不能进行三层转发的交换机。也就是说仅支持二层…