当前位置: 首页 > article >正文

Linux 配置NFS服务器

 1. 开放/nfs/shared目录,供所有用户查阅资料

服务端

(1)安装nfs服务,nfs-utils包中包含rpcbind(rpc守护进程)

[root@node1-server ~]# yum install -y nfs-utils  # nfs-utils包中包含rpcbind

[root@node1-server ~]# rpm -q rpcbind  # 检查rpcbind是否安装

(2)创建共享目录

[root@node1-server ~]# mkdir -p /nfs/shared  # -p 递归创建目录

[root@node1-server ~]# ll /nfs
total 0
drwxr-xr-x. 2 root root 6 Mar 27 10:08 shared

(3)关闭防火墙、selinux设置宽容模式、查看状态

[root@node1-server ~]# systemctl stop firewalld

[root@node1-server ~]# setenforce 0

[root@node1-server ~]# getenforce  # 查看selinux模式
Permissive  # 宽容模式

[root@node1-server ~]# systemctl status firewalld.service
○ firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)
     Active: inactive (dead)
       Docs: man:firewalld(1)

(4)启动服务、设置开机自启、查看服务状态

[root@node1-server ~]# systemctl start nfs-server

[root@node1-server ~]# systemctl start rpcbind

[root@node1-server ~]# systemctl enable nfs-server
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.

[root@node1-server ~]# systemctl enable rpcbind

[root@node1-server ~]# systemctl status nfs-server
● nfs-server.service - NFS server and services

[root@node1-server ~]# systemctl status rpcbind
● rpcbind.service - RPC Bind

(5)编辑/etc/exports文件

[root@node1-server ~]# vim /etc/exports  /etc/exports NFS服务的是核心配置文件,作用是对共享的目录、允许访问的客户端以及访问权限等信息进行配置
/nfs/shared *(ro)  # 将 /nfs/shared 目录共享出去,并且允许网络上的所有主机以只读权限访问该目录   *()中间没有空格

(6)重启服务

[root@node1-server ~]# exportfs -avr  # exportfs 用于管理 NFS共享目录 ; -a选项表示 “all”,即对 /etc/exports 文件中定义的所有共享目录执行相应操作 ; -v 选项代表 “verbose”,也就是详细模式 ; -r 选项意味着 “reexport”,即重新导出所有共享目录

客户端

(1)安装服务

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

(2)启动服务

[root@node2-client ~]# systemctl start nfs-server.service

[root@node2-client ~]# systemctl start rpcbind

(3)关闭防火墙、selinux设置宽容模式、查看状态

[root@node1-client ~]# systemctl stop firewalld

[root@node1-client ~]# setenforce 0

[root@node1-client ~]# getenforce

[root@node1-client ~]# systemctl status firewalld.service

(4)查看服务端提供的nfs服务

[root@node2-client ~]# showmount -e 192.168.11.135  # 查询 IP 地址为192.168.11.135的 NFS 服务器当前共享的目录列表   showmount:获取其共享目录信息    -e:向指定的 NFS 服务器请求其当前共享的目录列表
Export list for 192.168.11.135:
/nfs/shared (everyone)

(5)创建挂载点、临时挂载、查看挂载设备

[root@node2-client ~]# mkdir -p /mnt/shared

[root@node2-client ~]# mount -t nfs 192.168.11.135:/nfs/shared /mnt/shared/  # -t:用于指定要挂载的文件系统类型  ;192.168.11.135是 NFS 服务器的 IP 地址 ;:/nfs/shared 表示该服务器上共享出来的目录路径

[root@node2-client ~]# df -h  # df:报告文件系统磁盘空间的使用情况 ; -h:将磁盘空间的容量以人类可读的格式显示出来
Filesystem                  Size  Used Avail Use% Mounted on
devtmpfs                    4.0M     0  4.0M   0% /dev
tmpfs                       866M     0  866M   0% /dev/shm
tmpfs                       347M  7.1M  340M   3% /run
/dev/mapper/rhel-root        15G  4.2G   11G  28% /
/dev/nvme0n1p2              960M  291M  670M  31% /boot
/dev/nvme0n1p1             1022M  7.0M 1016M   1% /boot/efi
tmpfs                       174M   52K  174M   1% /run/user/42
tmpfs                       174M   36K  174M   1% /run/user/0
192.168.11.135:/nfs/shared   15G  4.3G   11G  29% /mnt/shared

[root@node2-client ~]# ll -d /mnt/shared/  # -d:仅列出目录本身的信息,不递归列出目录内部的文件和子目录
drwxr-xr-x. 2 root root 6 Mar 27 10:08 /mnt/shared/


2. 开放/nfs/upload目录为x.x.x.0/24网段的数据上传目录,并将所有用户及所属的用户组都映射为redhat,其UID与GID均为3000

服务端(开启服务同上,略)

(1)创建共享目录

[root@node1-server ~]# mkdir -p /nfs/upload

[root@node1-server ~]# ll /nfs/
total 0
drwxr-xr-x. 2 root root 6 Mar 27 10:08 shared
drwxr-xr-x. 2 root root 6 Mar 27 15:18 upload

(2)创建GID为3000的组redhat,创建GID和UID均为3000的用户redhat

[root@node1-server ~]# groupadd -g 3000 redhat  # 创建GID为3000的用户前必须要有一个GID为3000的组

[root@node1-server ~]# tail -1 /etc/group  # 查看最后一行组信息
redhat:x:3000:

[root@node1-server ~]# useradd -g 3000 -u 3000 redhat  # -g 指定GID   -u 指定UID

[root@node1-server ~]# tail -1 /etc/passwd  # 查看最后一行用户信息
redhat:x:3000:3000::/home/redhat:/bin/bash

[root@node1-server ~]# id redhat  # 查看redhat用户的id
uid=3000(redhat) gid=3000(redhat) groups=3000(redhat)

(3)编辑 /etc/exports 文件

[root@node1-server ~]# vim /etc/exports
/nfs/upload 192.168.11.0/24(rw,all_squash,anonuid=3000,anongid=3000)

# 将 /nfs/shared 目录共享出去,允许192.168.11.0网段中的所有主机以读写读权限访问该目录   ip网段和()中间没有空格 ;所有客户端用户(包括 root 用户)的身份都会被映射为 UID 和 GID 均为3000的匿名用户。

(4)修改共享目录 /nfs/upload 的所属组和所属用户

[root@node1-server ~]# chown -R redhat:redhat /nfs/upload/  # -R 修改一个目录及其内部所有子文件和子目录的所有者(递归修改)

[root@node1-server ~]# ll /nfs
total 0
drwxr-xr-x. 2 root   root   6 Mar 27 10:08 shared
drwxr-xr-x. 2 redhat redhat 6 Mar 27 15:18 upload

(5)重启服务

[root@node1-server ~]# exportfs -avr
exporting 192.168.11.0/24:/nfs/upload

客户端(开启服务同上,略)

(1)查看共享目录

[root@node2-client ~]# showmount -e 192.168.11.135  # 查询 IP 地址为192.168.11.135的 NFS 服务器当前共享的目录列表
Export list for 192.168.11.135:
/nfs/upload 192.168.11.0/24

(2)创建挂载点

[root@node2-client ~]# mkdir -p /mnt/upload

[root@node2-client ~]# ll /mnt
ls: cannot access '/mnt/shared': Stale file handle
total 0
drwxr-xr-x. 2 root root 6 Mar 24 17:34 hgfs
d?????????? ? ?    ?    ?            ? shared  # 由于服务端配置文件 /etc/exports 中已删除配置 /nfs/shared *(ro) ,故此处有未知信息
drwxr-xr-x. 2 root root 6 Mar 27 15:56 upload

(3)永久挂载

[root@node2-client ~]# vim /etc/fstab  # /etc/fatab 是一个非常重要的配置文件,用于定义文件系统的挂载点、挂载参数及其他相关属性;每次系统启动时,会自动读取该文件并挂载相应的文件系统

 16  192.168.11.135:/nfs/upload      /mnt/upload     nfs     defaults        0 0

# 192.168.11.135:/nfs/upload 指定了要挂载的 NFS 共享资源的位置

# /mnt/upload 本地系统上的一个挂载点,它是当前文件系统树中的一个目录

# nfs 指定了要挂载的文件系统类型

[root@node2-client ~]# mount -a  # mount -a会遍历 /etc/fstab 文件的每一行,并尝试挂载所有未被挂载的文件系统
mount: (hint) your fstab has been modified, but systemd still uses
       the old version; use 'systemctl daemon-reload' to reload.

[root@node2-client ~]# df -h  # 查看挂载情况
df: /mnt/shared: Stale file handle
Filesystem                  Size  Used Avail Use% Mounted on
devtmpfs                    4.0M     0  4.0M   0% /dev
tmpfs                       866M     0  866M   0% /dev/shm
tmpfs                       347M  7.1M  340M   3% /run
/dev/mapper/rhel-root        15G  4.2G   11G  28% /
/dev/nvme0n1p2              960M  291M  670M  31% /boot
/dev/nvme0n1p1             1022M  7.0M 1016M   1% /boot/efi
tmpfs                       174M   52K  174M   1% /run/user/42
tmpfs                       174M   36K  174M   1% /run/user/0
192.168.11.135:/nfs/upload   15G  4.3G   11G  29% /mnt/upload

[root@node2-client ~]# ll -d /mnt/upload/  # 查看挂载情况 
drwxr-xr-x. 2 3000 3000 6 Mar 27 15:18 /mnt/upload/

(4)创建测试文件

[root@node2-client ~]# touch /mnt/upload/textfile.txt

[root@node2-client ~]# ll /mnt/upload/
total 0
-rw-r--r--. 1 3000 3000 0 Mar 27 16:05 textfile.txt

相关文章:

Linux 配置NFS服务器

1. 开放/nfs/shared目录,供所有用户查阅资料 服务端 (1)安装nfs服务,nfs-utils包中包含rpcbind(rpc守护进程) [rootnode1-server ~]# yum install -y nfs-utils # nfs-utils包中包含rpcbind [rootnode…...

css100个问题

一、基础概念 CSS的全称及作用是什么?行内样式、内部样式表、外部样式表的优先级?解释CSS的层叠性(Cascading)CSS选择器优先级计算规则伪类与伪元素的区别?举例说明!important的作用及使用注意事项如何继承父元素字体…...

塔能科技:用精准节能撬动社会效益的行业杠杆

在全球积极践行可持续发展理念的当下,能源高效利用与节能减排,已然成为各行各业实现高质量发展绕不开的关键命题。对企业来说,节能早已不是一道可做可不做的选择题,而是关乎生存与发展、社会责任与竞争力的必答题。塔能科技推出的…...

Java 大视界 -- Java 大数据在自动驾驶高精度地图数据更新与优化中的技术应用(157)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...

Conda配置Python环境

1. 安装 Conda 选择发行版: Anaconda:适合需要预装大量科学计算包的用户(体积较大)。 Miniconda:轻量版,仅包含 Conda 和 Python(推荐自行安装所需包)。 验证安装: co…...

nginx https配置

一.https配置 HTTPS 协议是由HTTP 加上TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。 1.生成证书 openssl genrsa -des3 -out server.key 20…...

每日一题洛谷P10901 [蓝桥杯 2024 省 C] 封闭图形个数c++

排序思想&#xff0c;只不过这时的排序与之前的略有不同&#xff0c;com函数中要先比较封闭图形再比较真实的大小&#xff0c;多了一步&#xff0c;但是原理还是一样的 #include<iostream> #include<algorithm> #include<vector> using namespace std; //统…...

拓展知识六:MetInfo6.0.0目录遍历漏洞原理分析

所需进行代码审计的文件路径&#xff1a; C:\phpStudy\WWW\MetInfo6.0.0\include\thumb.php C:\phpStudy\WWW\MetInfo6.0.0\app\system\entrance.php C:\phpStudy\WWW\MetInfo6.0.0\app\system\include\class\load.class.php C:\phpStudy\WWW\MetInfo6.0.0\app\system\include…...

tar包部署rabbitMQ

部署erlang&#xff1a; 有网使用&#xff1a; sudo apt-get update sudo apt-get install libncurses5-dev libncursesw5-dev sudo yum install ncurses-devel 无网使用 tar zxvf ncurses.tar.gz mkdir ncurses cd ncurses-6.3/ ./configure --with-shared --without-debu…...

天锐蓝盾终端安全防护——企业终端设备安全管控

从办公室的台式电脑到员工手中的移动终端&#xff0c;这些设备不仅是工作的得力助手&#xff0c;更是企业数据的重要载体。然而&#xff0c;随着终端设备的广泛使用&#xff0c;安全风险也如影随形。硬件设备使用不当、数据随意传输等问题频发&#xff0c;使得企业数据面临着泄…...

MySQL高级特性与大数据应用

事务与锁机制 1.1 事务控制 START TRANSACTION; UPDATE account SET balance balance - 500 WHERE user_id 1001; UPDATE account SET balance balance 500 WHERE user_id 2002; COMMIT; -- 显式提交事务 ROLLBACK; -- 异常时回滚 1.2 锁机制 ​锁类型&#xff1a;共…...

小智机器人关键函数解析,Application::OutputAudio()处理音频数据的输出的函数

以下是对 Application::OutputAudio() 函数的详细解释&#xff1a; 源码&#xff1a; void Application::OutputAudio() { // 扬声器的输出auto now std::chrono::steady_clock::now();auto codec Board::GetInstance().GetAudioCodec();const int max_silence_seconds 10;…...

玛卡巴卡的k8s知识点问答题(五)

17. Init 类型容器有什么特点&#xff0c;主要用途&#xff1f; 特点&#xff1a; 启动顺序&#xff1a;Init 容器在普通容器启动之前运行&#xff0c;必须先完成所有 Init 容器后&#xff0c;Pod 的主容器才会启动。 顺序执行&#xff1a;如果定义了多个 Init 容器&#xff…...

3.27学习总结 爬虫+二维数组+Object类常用方法

高精度&#xff1a; 一个很大的整数&#xff0c;以字符串的形式进行接收&#xff0c;并将每一位数存储在数组内&#xff0c;例如100&#xff0c;即存储为[1][0][0]。 p2437蜜蜂路线 每一个的路线数前两个数的路线数相加。 #include <stdio.h> int a[1005][1005]; int …...

kafka零拷贝技术的底层实现

什么是 Sendfile&#xff1f; sendfile 是一种操作系统提供的系统调用&#xff08;system call&#xff09;&#xff0c;用于在两个文件描述符&#xff08;file descriptor&#xff09;之间高效传输数据。它最初由 Linux 内核引入&#xff08;从 2.1 版本开始&#xff09;&…...

MFC中CMap类的用法和原理

1、CMap 的原理 CMap 是一个基于哈希表的映射类&#xff0c;它将唯一键映射到对应的值。其内部实现依赖于哈希算法&#xff0c;通过哈希函数将键转换为哈希值&#xff0c;然后将哈希值映射到哈希表中的某个位置。如果多个键的哈希值相同&#xff08;即哈希冲突&#xff09;&am…...

elementplus的el-tabs路由式

在使用 Element Plus 的 el-tabs 组件&#xff0c;实现路由式的切换&#xff08;即点击标签页来切换不同的路由页面&#xff09;。下面是一个基于 Vue 3 和 Element Plus 实现路由式 el-tabs 的基本步骤和示例。 步骤 1: 安装必要的库 在vue3项目安装 Vue Router 和 Element …...

数据结构初阶:单链表

序言&#xff1a; 本篇博客主要介绍单链表的基本概念&#xff0c;包括如何定义和初始化单链表&#xff0c;以及如何进行数据的插入&#xff0c;删除和销毁等操作。 1.单链表 1.1 概念与结构 概念&#xff1a;链表是一种非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过…...

北斗导航 | 改进伪距残差矢量的接收机自主完好性监测算法原理,公式,应用,RAIM算法研究综述,matlab代码

改进伪距残差矢量的接收机自主完好性监测算法研究 摘要 接收机自主完好性监测(RAIM)是保障全球卫星导航系统(GNSS)可靠性的核心技术。本文针对传统伪距残差矢量法在微小故障检测和多故障隔离中的不足,提出一种融合加权奇偶空间与动态阈值调整的改进算法。通过理论推导验证…...

RabbitMQ高级特性--TTL和死信队列

目录 1.TTL 1.1设置消息的TTL 1.1.1配置交换机&队列 1.1.2发送消息 1.1.3运行程序观察结果 1.2设置队列的TTL 1.2.1配置队列和交换机的绑定关系 1.2.2发送消息 1.2.3运行程序观察结果 1.3两者区别 2.死信队列 2.1 声名队列和交换机 2.2正常队列绑定死信交换机 …...

Java后端开发: 如何安装搭建Java开发环境《安装JDK》和 检测JDK版本

文章目录 一、JDK的安装1、 打开 Oracle 官方网址2、点击产品 二、检测JDK是否安装成功以及JDK版本的查看1. 打开命令行窗口检测是否安装成功查看 JDK 版本 一、JDK的安装 1、 打开 Oracle 官方网址 Oracle官网地址:https://www.oracle.com/cn/ 2、点击产品 打开下载的JDK文件…...

LabVIEW液压控制系统开发要点

液压控制系统开发需兼顾高实时性、强抗干扰性和安全性&#xff0c;尤其在重工业场景中&#xff0c;毫秒级响应延迟或数据异常都可能导致设备损坏。本文以某钢厂液压升降平台项目为例&#xff0c;从硬件选型、控制算法、安全机制三方面&#xff0c;详解LabVIEW开发中的关键问题与…...

鸿蒙Flutter实战:18-组合而非替换,现有插件快速鸿蒙化

引言 在对插件鸿蒙化时&#xff0c;除了往期文章现有Flutter项目支持鸿蒙II中讲到的使用 dependency_overrides 来配置鸿蒙适配库的两种方式以外&#xff0c;如果三方插件本身使用了联合插件的形式&#xff0c;也可以通过下面这种方式来添加鸿蒙平台的实现&#xff1a; depen…...

Qt之Service开发

一、概述 基于Qt的用于开发系统服务(守护进程)和后台服务,有以下几个优秀的开源 QtService 框架和库。 1. QtService (官方解决方案) GitHub: https://github.com/qtproject/qt-solutions/tree/master/qtservice 特点: 官方提供的服务框架 支持 Windows 服务和 Linux 守护…...

MFC添加免费版大漠3.1233

先创建一个MFC工程&#xff0c; 添加dm.dll 方法一&#xff1a;通过类向导-添加类-类型库中的MFC类-文件&#xff0c;选择dm.dll&#xff0c;如果没有"添加类型库中的MFC类"选项就用方法二添加 方法二&#xff1a;添加-新建项-MFC-Active或TypeLib-实现接口位置选…...

vue 图片放大到全局

背景&#xff1a; 在vue项目中&#xff0c;el-image组件图片组件用于展示图片&#xff0c;组件自带的属性preview-teleported&#xff0c;设置为true可以控制图片放大到全局 实现效果&#xff1a; 核心代码&#xff1a; //图片地址&#xff1a;BASEUrl /file/ item.file //这…...

人工智能入门(1)

人工智能导引 文章目录 人工智能导引artifiicial intelligence由图灵测试出发的六个领域贝叶斯方法分析成为大多数AI系统中不确定推理的现代方法基础 研究方法 机器学习计算机利用已经有的数据样本&#xff0c;得出某种规律模型&#xff0c;并利用模型预测未来的一种方法 回归算…...

Python爬虫:Feapder 的详细使用和案例

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. Feapder 概述1.1 Feapder介绍1.2 Feapder 核心特点1.3 Feapder 主要组件1.4 Feapder的安装2. 基础爬虫编写2.1 创建爬虫2.2 运行爬虫3. 数据采集案例3.1 新闻网站采集3.2 电商商品采集3.3 使用 Spider 类创建更强大爬…...

mybatis里in关键字拼接id问题

我们一般会把ids集合用StrUtil.join(‘,’)转成"1,2,3"这种形式 然后放入in中 我们会这么写: select id, nick_name, icon from tb_user where id in (#{ids}) order by FIELD(id, #{ids})结果发现sql执行是这样的: select id, nick_name, icon from tb_user where…...

在rockylinux9.4安装mongodb报错:缺少:libcrypto.so.10文件库

问题点&#xff1a; rockylinux9.4系统环境报错&#xff1a; ./mongod: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory 解决方法&#xff1a; Ps&#xff1a;解压之后&#xff0c;检查mongodb的依赖环境…...