网络文件系统—NFS

目录

一、概述

二、NFS挂载原理

三、NFS相关协议及软件安装管理

1.协议:

2.软件:

四、NFS系统守护进程

五、NFS服务器的配置

六、NFS服务器的启动与停止

1. 启动NFS服务器

2.查询NFS服务器状态

3.停止NFS服务器

4.设置NFS服务器的自动启动状态

5.查看RPC服务器开启了哪些端口

七、实验相关实例

1.将NFS服务器的/home/zhangsan共享给192.168.115.0网段,rw权限

2.重启rpcbind 和nfs 服务

3.服务器端查看nfs共享状态

4.客户端查看nfs共享状态

5.客户端挂载nfs服务器共享目录

6.卸载和自动挂载

八、相关命令

九、实验

1.服务器端:将新增加的磁盘设置成lv逻辑卷

2.安装nfs服务

3.编辑nfs配置

4.打开客户端进行连接

5.服务器端调整权限

6.客户端测试创建删除

7.服务器修改目录共享范围

8.用户映射选项

9.nfs用户映射关系:

10.说明

a.查看本机的rpc端口 

b.客户端查看服务器允许挂载的用户IP 

c.客户端永久挂载格式如下

d.服务器禁止所有客户端挂载

 十、NFS v3和v4的区别

1.问题现象:

2.问题原因:

3.解决方案:


一、概述

       NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法

       它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样。一般客户端挂载到本地目录的名字可以随便,但为方便管理,我们要和服务器端一样比较好。

初级:单磁盘、单主机、存储管理方案

    分区、格式化、挂载

    逻辑卷、磁盘阵列、磁盘配额{对现有的存储空间进行使用约束}

中级:网络文件系统

    samba:cifs

    NFS:nfs

    解决单设备存储上限问题!

NFS一般用来存储共享视频,图片等静态数据。

二、NFS挂载原理

       NFS是通过网络来进行服务端和客户端之间的数据传输。两者之间要传输数据就要有想对应的网络端口来进行传输。NFS服务器到底使用什么网络端口来传输数据的,NFS服务器端其实是随机选择端口来进行数据传输。那NFS客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?其实NFS服务器时通过远程过程调用(remote procedure call 简称RPC)协议/服务来实现的。也就是说RPC服务会统一管理NFS的端口,客户端和服务端通过RPC来先沟通NFS使用了哪些端口,之后再利用注册端口来进行数据的传输。

       也就是RPC管理服务端的NFS端口分配,客户端要传数据,那客户端的RPC会先跟服务端的RPC去要服务器的端口,要到端口后再建立连接,然后传输数据。

RPC和NFS之间又是如何之间相互通讯的?

       首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口。RPC就会记录下这些端口。并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那服务端的RPC就会将记录的NFS端口信息告知客户端。

RPC和NFS的启动顺序是怎样的?

       在启动NFS SERVER之前,首先要启动RPC服务(即portmap服务,下同)否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行/etc/init.d/nfs  reload

总结:客户端NFS和服务端NFS通讯过程

1)首先服务器端启动RPC服务,并开启111端口

2)启动NFS服务,并向RPC注册端口信息

3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

三、NFS相关协议及软件安装管理

1.协议:

        RPC(Remote Procedure Call Protocol)——远程过程调用协议

2.软件:

        nfs-utils-* :包括NFS命令与监控程序

        rpcbind-* :支持安全NFS RPC服务的连接

注:通常情况下,是作为系统的默认包安装的

CentOS 6.*之前rpcbind叫portmap

四、NFS系统守护进程

nfs:

        它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器

rpcbind:

        主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,rpcbind会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。

五、NFS服务器的配置

       NFS服务器的配置相对比较简单,只需要在相应的配置文件中进行设置,然后启动NFS服务器即可。

       NFS服务的配置文件为 /etc/exports,这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容。

/etc/exports文件内容格式:

共享目录  客户端1(访问权限,用户映射,其他)  客户端2(访问权限,用户映射,其他)

a.共享目录:共享目录是指NFS服务器共享给客户机使用的目录

b.客户端:客户端是指网络中可以访问这个NFS共享目录的计算机

客户端常用的指定方式:

        指定ip地址的主机:192.168.0.200

        指定子网中的所有主机:192.168.88.0

        指定域名的主机:www.kernel.com

        指定域中的所有主机:*.kernel.com

        所有主机:*

c.设置共享目录的访问权限、用户映射等。

访问权限选项:

       设置输出目录只读:ro

       设置输出目录读写:rw

用户映射选项:

       root_squash:将root用户的访问映射为匿名(nfsnobody)用户uid和gid;(默认生效)

       no_root_squash:保留管理员权限,以服务器管理员的权限管理;

       all_squash:将远程访问的用户及所属组都映射为指定uid、gid的匿名用户;

                 anonuid=xxx:将远程访问的所有用户都映射为指定uid的匿名用户;

                 anongid=xxx:将远程访问的所有用户组都映射为指定gid匿名组账户;

其它选项:

        sync:   将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性(同步);

        async:将数据先保存在内存缓冲区中,必要时才写入磁盘(异步);

六、NFS服务器的启动与停止

1. 启动NFS服务器

#为了使NFS服务器能正常工作,需要启动rpcbind和nfs两个服务,并且rpcbind一定要先于nfs启动。
service rpcbind start

service nfs start

2.查询NFS服务器状态

service rpcbind status

service nfs status

3.停止NFS服务器

#要停止NFS运行时,需要先停止nfs服务再停止rpcbind服务,对于系统中有其他服务(如NIS)需要使用时,不需要停止rpcbind服务
service nfs stop

service rpcbind stop

4.设置NFS服务器的自动启动状态

#设置rpcbind和nfs服务在系统运行级别2345自动启动。
chkconfig --level 2345 rpcbind on

chkconfig --level 2345 nfs on

5.查看RPC服务器开启了哪些端口

rpcinfo –p localhost

七、实验相关实例

1.将NFS服务器的/home/zhangsan共享给192.168.115.0网段,rw权限

vi /etc/exports

/home/zhangsan 192.168.115.0(rw)

2.重启rpcbind 和nfs 服务

service rpcbind restart

service nfs restart

exportfs

3.服务器端查看nfs共享状态

#查看自己共享的服务
showmount -e 本机ip

4.客户端查看nfs共享状态

showmount -e NFS服务器IP

5.客户端挂载nfs服务器共享目录

#命令格式:mount NFS服务器IP:共享目录 本地挂载点目录
mount 192.168.115.10:/home/zhangsan/ /media/zhangsan/

mount | grep nfs

#指定挂载使用nfs V3版本(避免同步延迟)
mount -o vers=3 共享 本地

验证客户端和nfs服务器端文件是否一致: 

修改服务器端相应权限,不然客户端无法正常访问和使用

6.卸载和自动挂载

卸载:

1.卸载客户端的挂载目录
    umount 挂载点

2.停止服务器端的共享
    exportfs –au

自动挂载:/etc/fstab

#格式:<server>:</remote/export> </local/directory> nfs < options> 0 0

vim /etc/fstab

192.168.115.10:/home/zhangsan /media/zhangsan nfs defaults 0 0

#挂载
mount –a

八、相关命令

exportfs命令

    如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs 命令来使改动立刻生效,该命令格式如下:

exportfs [-aruv]

    -a    #全部挂载或卸载 /etc/exports中的内容

    -r    #重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab

    -u    #卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)

    -v    #在export的时候,将详细的信息输出到屏幕上。

具体例子:

#卸载所有共享目录
exportfs -au

#重新共享所有目录并输出详细信息
exportfs -ra

rpcinfo命令

利用rpcinfo -p 可以查看出RPC开启的端口所提供的程序有哪些

其中nfs 开启的是2049,portmapper(rpcbind) 开启的是111,其余则是rpc开启的

九、实验

实验准备:

两台虚拟机,一台服务器端,一台客户端。服务器端新加一块磁盘(防止根分区被写满)

1.服务器端:将新增加的磁盘设置成lv逻辑卷

#创建pv
pvcreate /dev/sdb

#创建vg
vgcreate nfs_vg /dev/sdb

#创建lv
lvcreate -L 15G -n nfs_lv nfs_vg

#格式化文件系统
mkfs.xfs /dev/nfs_vg/nfs_lv

#创建共享目录
mkdir /nfs_share

#永久挂载
vim /etc/fstab
/dev/nfs_vg/nfs_lv    /nfs_share    xfs    defaults    0    0

mount -a

2.安装nfs服务

yum search rpcbind

yum -y install rpcbind nfs-utils

systemctl start rpcbind && systemctl enable rpcbind

3.编辑nfs配置

vim /etc/exports
    #将/nfs_share目录共享给192.168.88.120,使其拥有读写权限
    /nfs_share	192.168.88.120(rw)

systemctl start nfs

4.打开客户端进行连接

#客户端创建nfs共享的挂载目录
mkdir /mnt/nfs_share

#如果客户端不识别nfs文件系统就进行安装。yum -y install nfs-utils
mount 192.168.88.110:/nfs_share /mnt/nfs_share && df -h

#验证是否有权限写入文件
cd /mnt/nfs_share && touch a.txt
#发现没有权限进行创建文件。

5.服务器端调整权限

#在服务器端给目录最大权限,是所有人都可以写,以此来查看客户端写入借用的身份
chmod 777 /nfs_share/

#客户端创建测试
touch a.txt		#创建成功

#查看客户端创建文件的所借用的身份
ll /nfs_share

#将权限改回正常值
chmod 755 /nfs_share

#给nfsnobody设置acl权限
setfacl -m u:nfsnobody:rwx /nfs_share/

6.客户端测试创建删除

#删除文件需要用户对文件所在目录拥有w写权限
rm -rf /mnt/nfs_share

touch a.txt

useradd zhangsan

setfacl -m u:zhangsan:rw a.txt

7.服务器修改目录共享范围

vim /etc/exports
    #如果要让多个客户端共享,IP之间用空格隔开,ro为只读的意思
    /nfs_share	192.168.88.120(rw) 192.168.88.130(ro)

8.用户映射选项

root_squash:将root用户的访问映射为匿名(nfsnobody)用户uid和gid;(默认生效)

no_root_squash保留管理员权限,以服务器管理员的权限管理;

all_squash将远程访问的用户及所属组都映射为指定uid、gid的匿名用户;

        anonuid=xxx:将远程访问的所有用户都映射为指定uid的匿名用户;

        anongid=xxx:将远程访问的所有用户组都映射为指定gid匿名组账户;

9.nfs用户映射关系:

选项:root_squash

     超级管理员:借用服务器端的nfsnobody用户的身份进行管理

     普通管理员:保留客户端自己的身份进行文件管理{前提:有权限}

选项:no_root_squash

     超级管理员:保留客户端root的身份,创建并管理文件

     普通管理员:保留客户端自己的身份进行文件管理{前提:有权限} 

选项:all_squash

     超级管理员:借用服务器端的nfsnobody用户的身份进行管理

     普通管理员:借用服务器端的nfsnobody用户的身份进行管理

选项:all_squash;anonuid=xxx;anongid=xxx

     超级管理员:借用服务器端的【指定用户】的身份进行管理

     普通管理员:借用服务器端的【指定用户】的身份进行管理

10.说明

a.查看本机的rpc端口 

rpcinfo -p localhost

b.客户端查看服务器允许挂载的用户IP 

showmount -e 192.168.88.110

c.客户端永久挂载格式如下

d.服务器禁止所有客户端挂载

如果服务器端单方面禁止客户端挂载,客户端则一直进行尝试连接,并且无法访问挂载目录。

#服务器禁止所有用户挂载
exportfs -au

#服务器恢复所有用户进行挂载
exportfs -ar

 十、NFS v3和v4的区别

1.问题现象:

    NFS客户端在使用v4版本挂载NFS服务器共享目录时,所创建的文件属于nobody用户

2.问题原因:

    NFS 在 v4 版本中修改了用户映射关系模式,通过调用NIS服务来完成用户映射,但NIS服务在未配置的情况下无法提供正常映射关系,所以出现了上述错误。

    #拓展:NIS(Network Information Service)网络信息服务

    #相关配置文件:/etc/idmapd.conf

3.解决方案:

服务器端:

    1.创建并编写配置文件

vim /etc/modprobe.d/nfs.conf
    #关闭掉RPC服务对rpc.idmapd模块的调用
    options nfs nfs4_disable_idmapping=1

    2.正常编辑NFS配置文件并重启

vim /etc/exports
    /nfs_share	192.168.88.120(rw)

#重启服务
service nfs restart

    3.手动关闭rpcidmapd服务

service rpcidmapd stop

客户端:

    正常挂载即可

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

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

相关文章

Redis的配置优化、数据类型、消息队列

文章目录 一、Redis的配置优化redis主要配置项CONFIG 动态修改配置慢查询持久化RDB模式AOF模式 Redis多实例Redis命令相关 二、Redis数据类型字符串string列表list集合 set有序集合sorted set哈希hash 三、消息队列生产者消费者模式发布者订阅者模式 一、Redis的配置优化 redi…

【java计算机毕设】网上购书管理系统MySQL servlet JSP项目设计源代码 期末寒暑假作业 小组作业

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】网上购书管理系统MySQL servlet JSP项目设计源代码 期末寒暑假作业 小组作业 2项目介绍 系统功能&#xff1a; servlet网上购书管理系统包括管理员、用户两种角色。 管理员功能包括订单管理&#xff08;已…

pytorch中一些最基本函数和类

1.Tensor操作 Tensor是PyTorch中最基本的数据结构&#xff0c;类似于NumPy的数组&#xff0c;但可以在GPU上运行加速计算。 示例&#xff1a;创建和操作Tensor import torch# 创建一个零填充的Tensor x torch.zeros(3, 3) print(x)# 加法操作 y torch.ones(3, 3) z x y pr…

放大电路中的反馈

一、基本概念 根据反馈的效果可以区分反馈的极性&#xff0c;使基本放大电路净输入量增强的反馈为正反馈&#xff0c;使基本放大电路净输入量减弱的反馈为负反馈。 二、判断反馈极性 瞬时极性法&#xff1a;首先规定电路输入信号在某一时刻对地的极性&#xff0c;并逐级判断电…

Arch升级后启动变慢

systemd-analyze blame refector.service 耗时2分钟&#xff01; 安全检查&#xff1a;检测镜像速度排序写入源&#xff0c;这个更新时运行不就行了&#xff0c;没必要每次启动时运行啊&#xff01; 禁止服务&#xff1a;systemctl disable reflector.service

【C++】——类和对象(上)

文章目录 什么是类和对象类的定义类的访问限定符及其封装类的作用域类的实例化类的对象的大小计算this指针 什么是类和对象 类是一个用户定义的类型&#xff0c;它封装了数据&#xff08;称为属性或成员变量&#xff09;和操作这些数据的方法&#xff08;称为成员函数或方法&a…

23种设计模式之责任链模式

责任链模式 1、定义 避免将一个请求的发送者与接受者耦合在一起&#xff0c;让多个对象都有机会处理请求。将接受请求的对象连接成一条链&#xff0c;并且沿着这条链传递请求&#xff0c;直到有一个对象能够处理它为止 2、责任链模式结构 Handler(抽象处理者)&#xff1a;定…

事务ACID四大特性(图文详解~)

ACID ACID 是数据库管理系统中保证事务正确执行的四大特性的缩写。 1. Atomicity&#xff08;原子性&#xff09;&#xff1a; 原子性指事务是不可分割的单位&#xff0c;要么全部执行成功&#xff0c;要么全部失败回滚。—All or nothing. 通常使用日志记录机制来启动回滚功…

Linux 磁盘扩容

centos7 磁盘扩容 yum install -y cloud-utils-growpart 1.扩容vda 1 growpart /dev/vda 1 2.以 resize2fs 格式 resize2fs /dev/vda1 df -TH

机器学习开源分子生成系列(2)-基于三维形状和静电相似性的DeepFMPO v3D安装及使用

前言 本文是基于 3D 的分子生成方法DeepFMPO v3D的介绍及安装使用。 一、DeepFMPO v3D是什么&#xff1f; github代码介绍文章 在药物发现中&#xff0c;如何寻找具新颖性和结构多样性的候选分子是颇受药物设计科学家关注的问题。通过虚拟筛选的化学空间搜索往往会受限于筛选…

软件设计师(中级)备考视频教程

一、视频介绍 本视频主要包括软件设计师系统学习教程&#xff0c;通过学习本视频&#xff0c;可以帮助考生高效且深入地掌握软件设计师资格考试核心知识&#xff0c;全方位覆盖考试要点&#xff0c;从而轻松备战考试。视频不仅涵盖了考试所需的全面知识体系&#xff0c;还通过直…

鸿蒙实训笔记

第一天 #初始化一个新的NPM项目(根据提示操作) npm init #安装TSC、TSLint和NodeJS的类型声明 npm install -s typescript tslint types/node 在根目录中新建一个名为tsconfig.json的文件&#xff0c;然后在代码编辑器中打开&#xff0c;写入下述内容&#xff1a; {"co…

C# Winform的三态CheckBox,以及批量修改Panel中的控件

在C# WinForms中&#xff0c;如果你想批量修改一个Panel容器内的所有CheckBox控件的状态&#xff0c;你可以使用foreach循环来遍历Panel的Controls集合。下面是一个示例&#xff0c;展示了如何将一个Panel内所有的CheckBox控件设为选中状态&#xff08;Checked true&#xff0…

法制史学习笔记(个人向) Part.4

法制史学习笔记(个人向)_Part.4 6. 唐朝法律制度 6.1 立法概况 立法指导思想&#xff1a;德礼为政教之本&#xff0c;刑罚为政教之用&#xff08;德主刑辅 → \rightarrow →德本刑用&#xff09;&#xff0c;抬高了刑罚在法律体系中的作用&#xff0c;强调两者兼有&#xff0…

Isaac Lab(isaac sim)中使用python ros

ROS&#xff08;Robot Operating System&#xff09;为机器人技术提供了标准化的开发框架和中间件&#xff0c;通过定义接口和约定&#xff0c;简化了硬件与软件的集成&#xff0c;提高了开发效率。它拥有强大的工具集和生态系统&#xff0c;支持从算法开发到系统集成的全过程&…

Django任务管理

1、用django-admin命令创建一个Django项目 django-admin startproject task_manager 2、进入到项目下用命令创建一个应用 cd task_manager python manage.py startapp tasks 3、进入models.py定义数学模型 第2步得到的只是应用的必要空文件&#xff0c;要开始增加各文件实际…

skywalking-2-客户端-php的安装与使用

skywalking的客户端支持php&#xff0c;真的很棒。 官方安装文档&#xff1a;https://skywalking.apache.org/docs/skywalking-php/next/en/setup/service-agent/php-agent/readme/ 前置准备 本次使用的php版本是8.2.13: php -v PHP 8.2.13 (cli) (built: Nov 21 2023 09:5…

近期几首小诗汇总-生活~卷

生活 为生活飘零&#xff0c;风雨都不阻 路见盲人艰&#xff0c;为她心点灯 贺中科大家长论坛成立十五周年 科学家园有喜贺 园外丑汉翘望中 曾一学子入我科 正育科二盼长大 憧憬也能入此家 与科学家论短长 园外翘首听高论 发现有隙入此坛 竟然也能注册成 入园浏览惶然立 此贴…

PostgreSQL17索引优化之支持并行创建BRIN索引

PostgreSQL17索引优化之支持并行创建BRIN索引 最近连续写了几篇关于PostgreSQL17优化器改进的文章&#xff0c;其实感觉还是挺有压力的。对于原理性的知识点&#xff0c;一方面是对这些新功能也不熟悉&#xff0c;为了尽可能对于知识点表述或总结做到准确&#xff0c;因此需要…

springboot websocket 知识点汇总

以下是一个详细全面的 Spring Boot 使用 WebSocket 的知识点汇总 1. 配置 WebSocket 添加依赖 进入maven官网, 搜索spring-boot-starter-websocket&#xff0c;选择版本, 然后把依赖复制到pom.xml的dependencies标签中 配置 WebSocket 创建一个配置类 WebSocketConfig&…