首页 > 其他分享 >认识NFS文件系统

认识NFS文件系统

时间:2024-06-06 21:44:24浏览次数:20  
标签:认识 sudo 端口 文件系统 systemctl nfs NFS 客户端

NFS简介

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

NFS 在文件传送或信息传送过程中依赖于 RPC(Remote Procedure Call) 协议,即远程过程调用, NFS 的各项功能都必须要向 RPC 来注册,如此一来 RPC 才能了解 NFS 这个服务的各项功能 Port、PID、NFS 在服务器所监听的 IP 等,而客户端才能够透过 RPC 的询问找到正确对应的端口,所以,NFS 必须要有 RPC 存在时才能成功的提供服务,简单的理解二者关系:NFS是 一个文件存储系统,而 RPC 是负责信息的传输。

NFS部署

操作系统:CentOS Linux release 7.9.2009 (Core)

内核版本:Linux hcss-ecs-1b32 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

自 Red Hat Enterprise Linux 7.4 发布以来,Red Hat Enterprise Linux 完全支持 NFS 版本 4.2 (NFSv4.2)。

NFS分为服务器端和客户端;服务端接收请求,发送同步数据;客户端请求数据

一、服务端安装配置

1.1、时区同步

服务端和客户端执行时间同步,保证时区一致、时间无相差

date -R	# 查看当前时区
sudo timedatectl list-timezones	# 列出所有可用时区
sudo timedatectl set-timezone Asia/Shanghai	# 设置为上海时区

1.2、安装nfs软件

NFS服务依赖 rpcbind 和 nfs-utils,先检查本机有无安装

rpm -qa nfs-utils rpcbind

若是返回空,则说明未安装,执行安装操作

yum install -y nfs-utils rpcbind # 服务端
yum install -y nfs-utils

1.3、启动服务&设置开机自启

sudo systemctl start rpcbind
sudo systemctl enable rpcbind


sudo systemctl start nfs-server
sudo systemctl enable nfs-server

1.4、设置共享目录

在服务端设置共享目录,并保证权限正确(rwxr-xr-x)

1.5、修改配置文件/etc/exports

$ vim /etc/exports
/data/share 192.168.1.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)

命令说明:允许/data/share目录被192.168.1.0/24区间的客户端挂载

参数 说明
ro 只读访问
rw 读写访问
sync 同步写入内存和硬盘
async 异步写;优先将数据写入内存,之后写入硬盘;效率高,但可能会丢数据
root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
all_squash 无论NFS客户端以什么身份访问,均映射为NFS服务器的匿名用户
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root用户
secure 缺省选项,使用1024以下的tcp/ip端口传输
insecure 使用1024以上的tcp/ip端口传输
no_wdelay 关闭写延迟,如果设置了async,则会忽略该选项
nohide 在共享目录中不共享其子目录
subtree_check 强制检查父目录的权限
no_subtree_check 不强制检查父目录的权限
anonuid=xxx 指定NFS服务器匿名用户的UID
anongid=xxx 指定NFS服务器匿名用户的GID

1.6、查看注册端口并放行

当firewalld进程必须要开启时,就需要将NFS运行需要的相关端口放行。

首先,可以先查看NFS需要的端口

rpcinfo -p localhost

其次,firewalld放行相关端口

firewall-cmd --zone=public --permanent --add-service={rpc-bind,mountd,nfs}
firewall-cmd --reload

1.7、配置完成后重启NFS并查看共享目录列表

如果showmount命令不存在,需要检查是否开启了selinux或者/usr/sbin下是否存在该命令

sudo systemctl restart nfs-server
showmount -e localhost

二、客户端安装配置

2.1、安装客户端工具

yum install -y nfs-utils

2.2、配置并启动服务

客户端不需要开启NFS服务。

sudo systemctl enable rpcbind
sudo systemctl start rpcbind

2.3、挂载共享目录

先查看服务端的共享目录

showmount -e 192.168.1.100	# 假设192.168.1.100是服务端的IP地址

在客户端创建并挂载对应目录

mkdir -p /data/share
mount -t nfs 192.168.1.100:/data/share /data/share -o proto=tcp -o nolock

检查挂载是否成功

df -hT /data/share
mount | grep /data/share

卸载挂载目录,可以使用umount命令。

2.4、配置自动挂载

配置NFS自动挂载和普通磁盘分区挂载一致,都需要修改/etc/fstab

$ vim /etc/fstab
192.168.1.100:/data/share	/data/share		nfs		defaults	0 	0

$ mount -a

重新加载systemctl,即可实现重启后自动挂载

systemctl daemon-reload

三、其他注意点&命令解析

1.1、NFS服务相关端口配置

NFS在启动时,会随机启动多个端口向RPC注册;当服务端开启了防火墙时,需要固定注册端口以便于端口放行

默认设置中 nfs 端口是2049,portmapper 的端口是111,mountd 端口是20048,status 和 nlockmgr 是随机端口。

这一点可以通过重启NFS服务测试到,用rpcinfo指令查看前后的端口变化比较。

要固定这些端口,可以修改/etc/sysconfig/nfs、/etc/modprobe.d/lockd.conf 这两个配置文件

rpcinfo -p localhost	# 使用rpcinfo命令查看注册的端口

$ vim /etc/sysconfig/nfs
RQUOTAD_PORT=30001  
LOCKD_TCPPORT=30002  
LOCKD_UDPPORT=30002  
MOUNTD_PORT=30003  
STATD_PORT=30004 

$ vim /etc/modprobe.d/lockd.conf
options lockd nlm_tcpport=30002
options lockd nlm_udpport=30002

$ sudo systemctl restart nfs-server
$ sudo systemctl restart rpcbind
$ sudo systemctl restart nfs-config
$ systemctl restart nfs-idmap
$ systemctl restart nfs-lock
$ systemctl restart nfs-server

1.2、指定协议挂载

默认情况下,NFS使用UDP协议进行挂载;为了提高挂载的可靠性和稳定性,我们可以指定TCP协议

mount 192.168.1.100:/data/share /data/share -o proto=tcp

1.3、exportfs指令:管理NFS共享的文件系统

/usr/sbin/exportfs命令主要用于维护NFS共享资源;重新共享/etc/exports变更目录或将NFS server共享目录卸载或重新共享

命令格式:exportfs [参数] [目录]

常用参数如下:

参数 解释
-a 全部挂载或全部卸载
-r 重新挂载
-u 卸载某一个目录
-v 显示共享目录

例如,在NFS服务器上修改了 /etc/exports 文件,增加了某个共享文件时,可以直接使用 sudo /usr/sbin/exportfs -arv 指令使其立即生效,不用重启NFS服务。

标签:认识,sudo,端口,文件系统,systemctl,nfs,NFS,客户端
From: https://www.cnblogs.com/bluemoon17/p/18236076

相关文章

  • ext4 文件系统相关命令
    日志文件系统大多数linux操作系统中的默认文件系统选择。ext4文件系统由ext3文件系统改进而来,而后者又是从ext2文件系统改进而来。常用的命令:$df-Thdf-T可以流浪当前系统挂载的卷及设备,-T可以打印设备类型,比如ext4tmpfs或者其他。root@ubuntu-server:~#df-ThFi......
  • 云主机(操作系统:CentOS7版本)安装nfs客户端,挂载文件系统
    本文分享自天翼云开发者社区《云主机(操作系统:CentOS7版本)安装nfs客户端,挂载文件系统》,作者:c****n1.保证宿主机上有nfs-utils1.1若宿主机yum源不可以用(1)本地下载nfs-utils安装包下载链接:https://mp.csdn.net/mp_download/manage/download/UpDetailed?spm=3001.5299(2)登录宿主机,......
  • 认识邮件系统
    邮件系统是指用于发送、接收和存储电子邮件的技术和服务。它包括了多个组件和协议,每个组件和协议都在邮件的传输过程中扮演着特定的角色。以下是邮件系统的基本工作原理:1.用户代理(UserAgent,UA)用户代理是用户与邮件系统交互的接口,比如邮件客户端(如Outlook、Thunderbird......
  • GD32F4xx+RT-Thread,SPI驱动、文件系统挂载应该怎么写
    在GD32F470芯片上使用RT-Thread操作系统,配合NORFlash(GD25Q256)编写SPI驱动、文件系统驱动以及挂载关联,可以按照以下步骤进行:1.SPI驱动编写首先需要编写SPI驱动来控制GD32F470与NORFlash之间的通信。这包括初始化SPI接口,配置SPI时钟、极性、相位等参数,并实现SPI传输函数。S......
  • 探索文件系统的世界:从基础概念到挂载机制
    引言在现代计算机系统中,文件系统是至关重要的一部分。它不仅负责数据的存储和管理,还为用户和应用程序提供了一种标准化的访问数据的方法。本文将深入探讨以下几个主题:为什么将磁盘抽象为块设备,为什么有了磁盘抽象还需要文件系统,文件系统如何作为虚拟磁盘,文件系统的分类,文件......
  • NFS,smb和数据库文件
    nfs的搭建网上有很多,可自行查看 WindowsServer2012R2搭建NFS服务器-知乎(zhihu.com)其中Windows10家庭版不支持NFS客户端,目前Windows上的协议是V3版本,防火墙上有NFS的选项,端口2049udp和tcp在客户端上的访问和smb一样,都可映射网络驱动器,使用\\ip\目录方式访问,可开机自动连......
  • 小小白学习运维 认识运维第一天(纯理论,看懂 去理解)
    云计算是什么公有云(阿里云腾讯云华为云)+私有云(OpenStack)+混合云公有云:阿里云,腾讯云,华为云。。。——————————Iaas选云服务器配置(什么CPU内存磁盘网络运行环境)买一个叫ESC的服务器就好。——————————pass机器硬件+操作系统(Linux)U......
  • 认识meta
    认识metacamera_metadata的存储结构camera_metadata.c中定义了camera中使用的metadata,其中包括metadata的数据结构,和对metadata这个数据结构的操作。camera_metadata.c文件是通过camera_metadata_tag_info.mako自定生成的。camera_metadata实际上就是一块连续的内存:这块......
  • 深入理解Linux文件系统
    目录inode和block概述block(块)indoe(索引节点)   inode的内容Linux系统文件三个主要的时间属性inode文件结构所以,当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode,看该用户是否具有访问这个文件的权限。如果有,就指向相对应的数据bloc......
  • 【Linux系统编程】冯诺依曼体系、操作系统、进程的认识
    目录一、认识冯诺依曼体系二、认识操作系统三、认识进程一、认识冯诺依曼体系我们日常使用的计算机,笔记本和我们不常见的计算机如服务器,它们都遵循冯诺依曼体系。下图是冯诺依曼体系结构的图解:我们可以看到冯诺依曼体系结构由以下硬件组成:输入设备、输出设备、存储器......