Linux - nfs服务器
五、nfs服务器
1、基础
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统 中看来,那个远程主机的目录就好像是自己的一个磁盘分区一样。
由于NFS支持的功能比较多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些 端口来传输数据,因此NFS的功能所对应的端口并不固定,而是随机取用一些未被使用的小于1024的端 口用于传输。但如此一来就会产生客户端连接服务器的问题,因为客户端需要知道服务器端的相关端口 才能够连接。 此时就需要RPC(Remote Procedure Call,远程过程调用)的服务。由于当服务器在启动NFS时会随机 选取数个端口号,并主动向RPC注册,所以RPC知道每个NFS功能所对应的端口号,RPC将端口号通知给 客户端,让客户端可以连接到正确的端口上去。RPC采用固定端口号port 111来监听客户端的需求并向 客户端响应正确的端口号。 注:在启动NFS之前,要先启动RPC,否则NFS会无法向RPC注册。另外,RPC若重新启动,原来注册的 数据会消失不见,因此RPC重启后,它管理的所有服务都需要重新启动以重新向RPC注册。
安装
#nfs
yum install nfs-utils
#rpc
yum install rpcbind
2、简单配置
创建共享文件
[root@server ~]# mkdir /share -v
mkdir: 已创建目录 '/share'
开启目录共享(编辑配置文件)
[root@server ~]# vim /etc/exports
#编辑文件内容
/share 共享文件目录 192.168.5.0/24(rw) 共享的主机(网段,可以使用*代表所有)以及共享权限
#权限参数可以写多个,使用逗号隔开
相关权限参数
| 参数 | 说明 |
|---|---|
| rw,ro | 该目录共享的权限是可读写还是只读,但最终能否读写,还是与 文件系统的 rwx有关 |
| sync,async | sync代表数据会同步写入到内存与硬盘中,async则代表数据会先暂存于内存 当中,而非直接写入硬盘 |
| no_root_squash root_squash | 若客户端在共享目录里创建的文件的所属者和所属组是root用户 和root组, 那么显示文件的属主和属组时有以下两种情况: no_root_squash表示,文件 的所属者和所属组是root用户和 root组;root_squash表示将root用户和组 映射为匿名用户和组 (默认设置)。 |
| all_squash no_all_squash | all_squash表示客户端所有用户创建文件时,客户端会将文件的用户 和组映射为 匿名用户和组,而no_all_squash表示客户端普通用户创建的 文件的UID和GID是多 少,服务端就显示为多少(默认设置) |
| anonuid= anongid= | 将文件的用户和组映射为指定的UID和GID,若不指定默认为 65534(nfsnobody) |
客户端挂载
#查看可挂载的主机及其目录
[root@client ~]# showmount -e 192.168.5.100
Export list for 192.168.5.100:
/share 192.168.5.0
#创建文件并挂载
[root@client ~]# mount 192.168.5.100:/share /nfs
测试
#在服务端创建目录
[root@server ~]# mkdir /share/{1,2,3} -pv
mkdir: 已创建目录 '/share/1'
mkdir: 已创建目录 '/share/2'
mkdir: 已创建目录 '/share/3'
[root@server ~]# tree /share
/share
├── 1
│ └── test
├── 2
└── 33 directories, 1 file
[root@server ~]# echo hello > /share/1/test
#客户端查看
[root@client ~]# tree /nfs
/nfs
├── 1
│ └── test
├── 2
└── 33 directories, 1 file
[root@client ~]# cat /nfs/1/test
hello
#查看挂载情况
[root@client ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 866M 0 866M 0% /dev/shm
tmpfs 347M 7.0M 340M 3% /run
/dev/mapper/rhel-root 17G 4.3G 13G 27% /
/dev/nvme0n1p2 960M 292M 669M 31% /boot
/dev/nvme0n1p1 599M 7.0M 592M 2% /boot/efi
tmpfs 174M 52K 174M 1% /run/user/42
tmpfs 174M 36K 174M 1% /run/user/0
192.168.5.100:/share 17G 4.4G 12G 27% /nfs #挂载的服务器目录
#若客户端在具备该目录的写权限后,在该目录下创建的文件(在不指定anonuid=和anongid=两个参数的情况下)用户和用户组都为nobody
#服务器给权限
[root@server ~]# chmod 777 /share
#客户端修改目录
[root@client ~]# mkdir /nfs/{4,5,6} -pv
mkdir: 已创建目录 '/nfs/4'
mkdir: 已创建目录 '/nfs/5'
mkdir: 已创建目录 '/nfs/6'
#在客户端看
[root@client ~]# ll /nfs
总用量 0
drwxr-xr-x. 2 root root 18 11月 8 20:24 1
drwxr-xr-x. 2 root root 6 11月 8 20:23 2
drwxr-xr-x. 2 root root 6 11月 8 20:23 3
drwxr-xr-x. 2 nobody nobody 6 11月 8 20:35 4
drwxr-xr-x. 2 nobody nobody 6 11月 8 20:35 5
drwxr-xr-x. 2 nobody nobody 6 11月 8 20:35 6
#服务端看
[root@server ~]# ll /share
总用量 0
drwxr-xr-x. 2 root root 18 11月 8 12:24 1
drwxr-xr-x. 2 root root 6 11月 8 12:23 2
drwxr-xr-x. 2 root root 6 11月 8 12:23 3
drwxr-xr-x. 2 nobody nobody 6 11月 8 12:35 4
drwxr-xr-x. 2 nobody nobody 6 11月 8 12:35 5
drwxr-xr-x. 2 nobody nobody 6 11月 8 12:35 6
3、autofs自动挂载
在一般NFS文件系统的使用过程中,如果客户端要使用服务端所提供的文件系统,可以在 /etc/rc.d/rc.local 中设置开机时自动挂载( /etc/rc.d/rc.local 文件中写入的命令,在每次启动系统用户 登录之前都会执行一次)。但若对端宕机或根本没有启动,会导致主机超时等待。所以我们需要当客户端在有使用NFS文件系统的需求时才让系统自动挂载。当NFS文件系统使用完毕后,让NFS自动卸载。
autofs这个服务是在客户端的上面,它会持续的检测某个指定的目录,并预先设置当使用到该目录的某 个子目录时,将会取得来自服务器端的NFS文件系统资源,并进行自动挂载的操作。
安装软件(客户端)
yum install autofs -y
编辑配置文件
[root@client ~]# vim /etc/auto.master 主配置文件,定义了挂载点和自动挂载的规则
文件内添加:/nfs/test /etc/auto.suibian#本地端目录 具体挂载配置文件
[root@client ~]# vim /etc/auto.suibian 挂载点的具体配置文件
添加:
* 192.168.5.100:/share #*表示所有对/nfs/test目录的访问都会触发自动挂载 192.168.5.100:/share
重启服务开启自动挂载
[root@client ~]# systemctl restart nfs-server
[root@client test]# systemctl status autofs
[root@client ~]# cd /nfs/test/
[root@client test]# ll
总用量 0
drwxrwxrwx. 8 root root 60 11月 8 20:35 share
[root@client test]# tree
.
└── share├── 1│ └── test├── 2├── 3├── 4├── 5└── 67 directories, 1 file
[root@client test]#
#注意:以上操作在关闭防火墙以及selinux的情况下进行
相关文章:
Linux - nfs服务器
五、nfs服务器 1、基础 NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统 中看来,那个远程主机的目录就好像是自己的一个磁盘分区一样。 由于NFS支持的功能比较多,而不同的功能都会使用不同的程…...
uniapp图片上传预览uni.chooseImage、uni.previewImage
文章目录 1.上传图片2.预览图片 1.上传图片 uni.chooseImage(OBJECT) 从本地相册选择图片或使用相机拍照。 App端如需要更丰富的相机拍照API(如直接调用前置摄像头),参考plus.camera 微信小程序从基础库 2.21.0 开始, wx.choos…...
C++ 字符串中数字识别
【问题描述】 输入一个字符串,含有数字和非数字字符,如“sumabc234;while(abc700)tab{ass346;bssabc267;}”,将其中连续的数字作为一个整数,依次存放到一个数组nums中。例如,234放在nums[0],700放在nums[1…...
学术中常见理论归纳总结-不定期更新
1.信息传播类 1.1 扩散创新理论 创新扩散理论是传播效果研究的经典理论之一,是由美国学者埃弗雷特罗杰斯(E.M.Rogers)于20世纪60年代提出的一个关于通过媒介劝服人们接受新观念、新事物、新产品的理论,侧重大众传播对社会和文化的影响。 1927-1941年进行的“艾奥瓦杂交玉…...
ModelSim怎么修改字体及大小
点击TOOLS 选择PERFERENCES选择下一级菜单的TEXTFONT/CHOOSE/选择字体和大小最后不要忘记点apply再退出...
图片预处理技术介绍4——降噪
图片预处理 大家好,我是阿赵。 这一篇将两种基础的降噪算法。 之前介绍过均值模糊和高斯模糊。如果从降噪的角度来说,模糊算法也算是降噪的一类,所以之前介绍的两种模糊可以称呼为均值降噪和高斯降噪。不过模糊算法对原来的图像特征的…...
Scrapy管道设置和数据保存
1.1 介绍部分: 文字提到常用的Web框架有Django和Flask,接下来将学习一个全球范围内流行的爬虫框架Scrapy。 1.2 内容部分: Scrapy的概念、作用和工作流程 Scrapy的入门使用 Scrapy构造并发送请求 Scrapy模拟登陆 Scrapy管道的使用 Scrapy中…...
D84【python 接口自动化学习】- pytest基础用法
day84 pytest常用断言类型 学习日期:20241130 学习目标:pytest基础用法 -- pytest常用断言类型 学习笔记: 常用断言类型 代码实践 def test_assert():assert 11assert 1!2assert 1<2assert 2>1assert 1>1assert 1<1assert a…...
如何正确书写sh文件/sh任务?bash任务
正确书写xx.sh文件的方式为: source /usr/local/miniconda3/bin/activate condaEnv export CUDA_VISIBLE_DEVICES0 cd /hy-tmp/test export PYTHONPATH"xxx:$PYTHONPATH" python AAA.py python BBB.py python CCC.py 直接运行: bash xx.sh 即可…...
多线程篇-5--线程分类(线程类型,springboot中常见线程类型,异步任务线程)
常见的线程类型包括用户线程(User Threads)、守护线程(Daemon Threads)、主线程(Main Thread)、工作线程(Worker Threads)和线程池中的线程。 一、用户线程(User Thread…...
docker快速部署gitlab
文章目录 场景部署步骤默认账号密码效果 场景 新增了一台机器, 在初始化本地开发环境,docker快速部署gitlab 部署步骤 编写dockerfile version: 3.7services:gitlab:image: gitlab/gitlab-ce:latestcontainer_name: gitlabrestart: alwayshostname: gitlabenviron…...
C# 数据类型详解:掌握数据类型及操作为高效编码奠定基础
本文将带你深入了解C#中各种数据类型的特点、用途和最佳实践,让你不仅能熟练运用基本类型,还能掌握如何在实际项目中做出最合适的选择。 目录 C#基本语法 C#数据类型 C#类型转换 C#变量常量 C#基本语法 在学习C#之前我们要先知道C#的基础构建是由哪些…...
burp2
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...
[ACTF2020 新生赛]BackupFile--详细解析
信息搜集 让我们寻找源文件,目录扫描: 找到了/index.php.bak文件,也就是index.php的备份文件。 后缀名是.bak的文件是备份文件,是文件格式的扩展名。 我们访问这个路径,就会直接下载该备份文件。 我们把.bak后缀删掉…...
循环神经网络(RNN)简述
RNN及其变体 1、概述 (一)、概念 RNN(Recurrent Neural Network), 中文称作循环神经网络, 它一般以序列数据为输入, 通过网络内部的结构设计有效捕捉序列之间的关系特征, 一般也是以序列形式进行输出。 RNN的循环机制使模型隐层**上一时间步产生的结果, 能够作为当下时间步…...
九、Ubuntu Linux操作系统
一、Ubuntu简介 Ubuntu Linux是由南非人马克沙特尔沃思(Mark Shutteworth)创办的基于Debian Linux的操作系统,于2004年10月公布Ubuntu是一个以桌面应用为主的Linux发行版操作系统Ubuntu拥有庞大的社区力量,用户可以方便地从社区获得帮助其官方网站:http…...
SpringBoot 新冠密接者跟踪系统:校园疫情防控的智能守护者
摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古…...
【Ubuntu】E: Unable to locate package xxx
报错描述 在 Ubuntu 上 执行 apt install xxx 出现下面的报错: 即无法定位到该 Package,一般形式如下: # apt install xxx Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable …...
vue多页面应用集成时权限处理问题
在多页面应用(MPA)中,权限管理通常会涉及到每个页面的访问控制、身份验证、以及权限校验。以下是几种常见的权限处理方式: 1. 前端路由权限控制 原理:虽然是多页面应用,通常每个页面会独立加载和渲染&…...
Socket编程(TCP/UDP详解)
前言:之前因为做项目和找实习没得空,计算机网络模块并没有写成博客,最近得闲了,把计算机网络模块博客补上。 目录 一,UDP编程 1)创建套接字 2)绑定端口号 3)发送与接收数据 4&…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
