nfs安装配置详解

nfs

NFS,全称为Network File System,是一种网络文件系统协议,用于在计算机网络中实现文件共享。它允许在不同的操作系统之间共享文件和目录,使得在网络中的计算机可以像访问本地文件一样访问远程计算机上的文件。

NFS最初由Sun Microsystems开发,并在1984年首次发布。它是基于客户端-服务器模型的,其中一个计算机作为NFS服务器提供文件和目录的共享,而其他计算机则作为NFS客户端请求和访问这些共享资源。NFS支持在不同的操作系统之间进行文件共享,包括UNIX、Linux和Windows等。

NFS使用RPC(Remote Procedure Call)机制进行通信。客户端通过发送RPC请求来访问服务器上的文件,服务器则相应地提供文件访问和操作。NFS可以实现文件的读取、写入、修改、删除等基本操作,并支持文件和目录的访问控制。

NFS的工作原理如下:

  1. 客户端向服务器发送挂载请求,指定要访问的共享资源的位置。
  2. 服务器确认挂载请求,并将共享资源挂载到客户端的文件系统中,使其在客户端上可见。
  3. 客户端可以像访问本地文件一样访问挂载的共享资源,可以读取、写入、修改和删除文件。
  4. 客户端可以向服务器发送文件操作请求,服务器响应并执行相应的操作。
  5. 客户端可以卸载共享资源,从文件系统中移除它。

NFS具有以下特点和优势:

  • 透明性:NFS使得远程文件访问对用户来说是透明的,就像访问本地文件一样,无需了解底层的网络细节。
  • 共享性:NFS允许多个客户端同时访问共享资源,实现文件共享和协作工作。
  • 可靠性:NFS提供了一些机制来确保文件访问的可靠性和完整性,如文件锁定和写入确认等。
  • 性能:NFS在文件访问速度上具有较高的性能,可以通过一些优化技术进一步提高性能,如缓存和预读取等。

需要注意的是,NFS是一种基于网络的文件系统协议,它依赖于网络连接的稳定性和性能。在设计和配置NFS时,需要考虑网络带宽、延迟和安全等因素,以确保文件访问的效率和安全性。

安装、使用

nfs机器上的操作

安装

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

启动

[root@abweb ~]# service nfs restart

restart、stop、start

查看是否启动

[root@abweb web]# ps aux|grep nfs

nfs自己并没有去对外监听某个端口号,而是外包给了rpc服务,rpc帮助nfs去监听端口,然后告诉客户机和本机的那个进程对应的端口连续

查看rpc服务相关的端口

netstat -anplut|grep rpc

编辑共享文件的配置文件

[root@abweb ~]# vim /etc/exports
[root@abweb web]# cat /etc/exports
/web  192.168.2.0/24(ro,all_squash,sync)

/web 是我们共享的文件夹的路径–》使用绝对路径
192.168.2.0/24 允许过来访问的客户机的ip地址网段
(rw,all_squash,sync) 表示权限的限制
rw 表示可读可写 read and write
ro 表示只能读 read-only
all_squash :任何客户机上的用户过来访问的时候,都把它认为是普通的用户
root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器匿名用户
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘,效率更高,但可能丢失数据

刷新输出文件的列表

 exportfs -rv

建议关闭防火墙和selinux

service firewalld stop
systemctl disable firewalld

server机器

安装

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

启动

[root@abweb ~]# service nfs restart

挂载nfs服务器上的目录到本机上

[root@web1 html]# mount  192.168.2.27:/web /usr/local/ydhnginx/html/
[root@web1 html]# df

192.168.2.27:/web       17811456 3744256 14067200   22% /usr/local/ydhnginx/html

挂载成功

重新进入/usr/local/ydhnginx/html就可以看到共享文件了

[root@web1 html]# ls
index.html  y

权限问题

在NFS中,权限问题是指控制客户端对共享文件系统的访问权限的设置和管理。以下是有关NFS权限的详细解释:

  1. 导出选项(Export Options):在NFS服务器上,通过在 /etc/exports 文件或其他类似配置文件中设置导出选项来定义共享目录的权限。常见的导出选项包括:

    • rw:读写权限,允许客户端对共享目录进行读写操作。
    • ro:只读权限,只允许客户端对共享目录进行读取操作。
    • root_squash:启用root映射,将客户端以root权限的请求映射为匿名用户。这样可以限制root用户在共享目录中的权限,提高安全性。
    • no_root_squash:禁用root映射,允许客户端以root权限访问共享目录。
    • 其他选项根据需要进行配置。
  2. 客户端访问权限(Client Access Permissions):NFS服务器上的导出选项可以指定允许访问共享目录的客户端地址或地址范围。通过配置正确的允许访问的客户端,可以限制哪些客户端可以访问共享目录,提高安全性。

  3. 客户端身份映射(Client Identity Mapping):在NFS服务器上,可以配置客户端身份映射,将客户端的身份映射为服务器上的对应用户或组。这对于确保在共享文件系统中正确应用文件和目录的权限非常重要。

  4. 客户端和服务器的用户和组标识(User and Group Identifiers):在NFS共享中,客户端和服务器之间需要保持用户和组标识的一致性。如果客户端和服务器上的用户和组标识不匹配,可能会导致权限问题。

  5. 权限同步(Permission Synchronization):当在NFS共享目录中进行更改时,需要确保权限的同步。这涉及到在客户端和服务器之间同步文件和目录的权限,以确保客户端对文件和目录的访问权限保持正确。

客户机上能否有写的权限要看2种权限:
1.共享权限 --》/etc/exports文件里的权限,例如ro,rw
2.文件系统里的权限 --》/web 在linux里的权限

会取权限较小的,例如有nfs机器有rw权限,server机器有ro权限,那么server机器只会有权限。

开机自动挂载

  • 第一种方式vim/etc/re.local

    mount  192.168.2.24:/web   /usr/local/sczhengbo/html
    

    使用rc.local需要给可执行权限

    chmod +x /etc/rc.d/rc.local
    
  • 第二种方式:修改/etc/fstab,文件。

    /etc/fstab 是linux系统开机会自动根据这个文件里的内容挂载磁盘分区

    192.168.2.24:/web   /usr/local/sczhengbo99/html  nfs    defaults  0 0
    

192.168.2.24:/web 挂载的分区–》nfs的文件系统
/usr/local/sczhengbo/html 在本地的挂载点

nfs 文件系统的类型

defaults 挂载的选项,使用默认
0 是否支持dump命令进行备份
0 是否开机的时候进行分区的文件系统的检查,分区的文件系统是否有问题

相关的命令和文件

  • mount:是一个用于挂载文件系统的命令
  • showmount:是一个用于显示NFS服务器上已经导出(共享)的目录列表的命令
  • exportfs -rv:一个用于重新导出(刷新)NFS共享的命令
  • /etc/exports:是一个位于Linux系统中的配置文件,用于定义NFS共享的配置信息。
  • umount:是一个用于卸载(取消挂载)文件系统的命令

rpc

nfs安装配置详解_第1张图片

RPC(Remote Procedure Call)是一种用于实现分布式系统中进程间通信的机制。它允许一个应用程序在一台计算机上调用另一台计算机上的远程过程(也称为远程函数、远程方法)并获取执行结果,就像调用本地过程一样。

以下是RPC的详细介绍:

  1. 基本原理:RPC基于客户端-服务器模型。客户端应用程序通过RPC机制发起远程过程调用,请求服务器上的特定过程执行。请求通常包括过程名称和参数。服务器接收到RPC请求后,执行相应的过程,并将结果返回给客户端。

  2. 抽象透明性:RPC提供了一种抽象透明的编程模型,使得客户端调用远程过程时无需关心底层网络细节和通信协议。客户端和服务器之间的通信对于应用程序来说是透明的,就像调用本地过程一样,使得分布式系统的开发更加方便。

  3. 过程映射:RPC需要将远程过程映射到具体的网络地址和端口,以便客户端可以正确地发起请求。这个映射通常是通过在客户端和服务器之间定义一个接口描述语言(IDL)来实现的。IDL定义了可供调用的过程、参数和数据类型,并提供了接口规范。通过IDL,客户端和服务器可以在语义上一致地定义和理解远程过程。

  4. 通信协议:RPC使用不同的通信协议来实现远程过程调用。常见的RPC协议包括:

    • ONC RPC(Open Network Computing Remote Procedure Call):也称为Sun RPC,是早期RPC协议的一种实现,广泛用于UNIX和Linux系统。
    • gRPC:由Google开发的高性能RPC框架,基于HTTP/2协议,支持多种编程语言和平台。
    • JSON-RPC:基于JSON(JavaScript Object Notation)格式的RPC协议,通过HTTP或其他传输协议进行通信。
    • XML-RPC:基于XML(Extensible Markup Language)格式的RPC协议,通过HTTP或其他传输协议进行通信。
  5. 序列化和反序列化:RPC需要将传输的数据在客户端和服务器之间进行序列化和反序列化,以便在网络上传输。序列化将数据对象转换为字节流,以便传输;反序列化将字节流还原为数据对象。序列化和反序列化的过程在RPC中是透明的,由RPC框架自动处理。

  6. 错误处理:RPC框架通常提供错误处理机制,用于处理在远程过程调用过程中可能出现的

错误。这包括网络故障、超时、服务不可用等情况。RPC可以定义错误码、异常处理和重试机制,以便客户端能够适当地处理错误情况。

RPC在分布式系统中广泛应用,例如在微服务架构中用于服务间的通信,远程API调用等场景。它简化了分布式系统的开发和集成,提供了一种方便、高效的方式来实现进程间的通信和协作。

rpc和nfs

NFS(Network File System)和RPC(Remote Procedure Call)之间存在紧密的关系。RPC是NFS协议所依赖的通信机制,用于在客户端和服务器之间进行远程过程调用。

以下是NFS和RPC之间的详细关系:

  1. NFS协议基于RPC:NFS协议使用RPC作为通信机制。RPC是一种用于实现分布式系统中进程间通信的机制,它允许客户端应用程序调用位于远程服务器上的服务,并获取服务的响应。NFS客户端和服务器之间的交互通过RPC进行。

  2. RPC实现远程过程调用:RPC允许NFS客户端在本地发起远程过程调用,请求服务器执行相应的操作。客户端应用程序可以像调用本地过程一样调用远程服务器上的过程。通过RPC,客户端可以向NFS服务器发送文件操作请求,如读取、写入、创建和删除文件等。

  3. RPC通信过程:当NFS客户端发起远程过程调用时,它会向服务器发送一个RPC请求。该请求包括要调用的过程名称和相应的参数。服务器接收到RPC请求后,执行相应的操作,并将结果发送回客户端作为RPC响应。客户端接收到响应后,可以继续执行后续操作。

  4. RPC协议栈:RPC通信涉及到多个协议层次的交互。在NFS中,RPC协议栈通常基于TCP/IP协议栈进行通信。RPC在应用层上提供了一个透明的接口,使得客户端和服务器之间的通信对于应用程序来说是透明的,无需关心底层网络细节。

总结来说,NFS和RPC密切相关,RPC提供了NFS客户端和服务器之间的远程过程调用和通信机制。NFS客户端通过RPC发送请求到NFS服务器,并获取服务器的响应,实现了在网络中共享和访问文件的功能。RPC允许NFS客户端和服务器之间的透明通信,使得对于应用程序来说,远程过程调用的细节被抽象和隐藏,简化了分布式文件系统的使用。

san

存储区域网络(Storage Area Network,简称SAN)采用网状通道(Fibre Channel ,简称FC,区别与Fiber Channel光纤通道)技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。

设备:

  • 专业的存储服务器(有很大块磁盘,从容量非常大)
  • 专业的光纤交换机
  • 专业服务器:例如web服务器或者数据库服务器等,业务服务器通过HBA卡设备与光纤交换机

需要大量的资金投入:效果好,传输速度块。

nfs安装配置详解_第2张图片

nfs和san区别

NFS(Network File System)和SAN(Storage Area Network)是两种不同的技术用于实现存储和数据共享的方式。它们之间存在以下区别:

  1. 架构和定位:

    • NFS是一种基于网络的文件系统协议,用于在计算机网络中实现文件共享。它允许不同操作系统之间通过网络访问和共享文件。
    • SAN是一种独立的存储网络架构,用于连接存储设备和计算机系统。它提供高性能的块级存储访问,允许计算机直接访问存储设备。
  2. 访问方式:

    • NFS提供文件级别的访问,通过共享文件和目录实现远程访问。客户端通过NFS协议访问远程服务器上的文件,像访问本地文件一样进行读取和写入。
    • SAN提供块级别的访问,将存储设备的磁盘块作为逻辑单元进行访问。计算机系统通过SAN连接到存储设备,并可以直接访问和管理存储设备的磁盘块。
  3. 数据传输:

    • NFS使用TCP/IP协议进行数据传输,通过网络传输文件内容。它在网络上传输文件数据,并依赖于网络的带宽和延迟。
    • SAN使用专用的高速网络(如光纤通道或以太网)进行数据传输。它提供低延迟、高带宽的数据传输通道,适用于需要高性能存储访问的场景。
  4. 存储管理:

    • NFS服务器通常是文件服务器,负责管理共享的文件和目录。它提供访问控制、文件锁定和权限管理等功能。
    • SAN提供集中式存储管理,可以将多个存储设备汇集到一个逻辑池中,实现统一管理和配置。它提供高可用性、冗余和数据保护等功能。
  5. 应用场景:

    • NFS适用于需要在不同操作系统之间共享文件的场景,如文件共享、协作和远程访问等。它在大多数UNIX、Linux和Windows系统上都有广泛的支持。
    • SAN适用于需要高性能、低延迟的块级存储访问场景,如数据库、虚拟化和大规模数据存储等。它通常用于企业级应用和数据中心环境。

综上所述,NFS和SAN是两种不同的存储和数据共享技术。NFS主要用于文件级别的共享和访问,适用于跨平台的文件共享场景;SAN主要提供块级别的

存储访问,适用于需要高性能存储访问的应用。选择适合的技术应根据具体需求和应用场景进行评估和决策。

注意:

老的数据一致性解决方案:

  • nfs
  • san

新的解决方案:

使用云存储

  • 金山与
  • 亚马逊
  • 谷歌云
  • 阿里云
  • 七牛云
  • 腾讯云

你可能感兴趣的:(linux,linux,运维)