NFS,全称为Network File System,是一种网络文件系统协议,用于在计算机网络中实现文件共享。它允许在不同的操作系统之间共享文件和目录,使得在网络中的计算机可以像访问本地文件一样访问远程计算机上的文件。
NFS最初由Sun Microsystems开发,并在1984年首次发布。它是基于客户端-服务器模型的,其中一个计算机作为NFS服务器提供文件和目录的共享,而其他计算机则作为NFS客户端请求和访问这些共享资源。NFS支持在不同的操作系统之间进行文件共享,包括UNIX、Linux和Windows等。
NFS使用RPC(Remote Procedure Call)机制进行通信。客户端通过发送RPC请求来访问服务器上的文件,服务器则相应地提供文件访问和操作。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
安装
[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权限的详细解释:
导出选项(Export Options):在NFS服务器上,通过在 /etc/exports
文件或其他类似配置文件中设置导出选项来定义共享目录的权限。常见的导出选项包括:
rw
:读写权限,允许客户端对共享目录进行读写操作。ro
:只读权限,只允许客户端对共享目录进行读取操作。root_squash
:启用root映射,将客户端以root权限的请求映射为匿名用户。这样可以限制root用户在共享目录中的权限,提高安全性。no_root_squash
:禁用root映射,允许客户端以root权限访问共享目录。客户端访问权限(Client Access Permissions):NFS服务器上的导出选项可以指定允许访问共享目录的客户端地址或地址范围。通过配置正确的允许访问的客户端,可以限制哪些客户端可以访问共享目录,提高安全性。
客户端身份映射(Client Identity Mapping):在NFS服务器上,可以配置客户端身份映射,将客户端的身份映射为服务器上的对应用户或组。这对于确保在共享文件系统中正确应用文件和目录的权限非常重要。
客户端和服务器的用户和组标识(User and Group Identifiers):在NFS共享中,客户端和服务器之间需要保持用户和组标识的一致性。如果客户端和服务器上的用户和组标识不匹配,可能会导致权限问题。
权限同步(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 是否开机的时候进行分区的文件系统的检查,分区的文件系统是否有问题
RPC(Remote Procedure Call)是一种用于实现分布式系统中进程间通信的机制。它允许一个应用程序在一台计算机上调用另一台计算机上的远程过程(也称为远程函数、远程方法)并获取执行结果,就像调用本地过程一样。
以下是RPC的详细介绍:
基本原理:RPC基于客户端-服务器模型。客户端应用程序通过RPC机制发起远程过程调用,请求服务器上的特定过程执行。请求通常包括过程名称和参数。服务器接收到RPC请求后,执行相应的过程,并将结果返回给客户端。
抽象透明性:RPC提供了一种抽象透明的编程模型,使得客户端调用远程过程时无需关心底层网络细节和通信协议。客户端和服务器之间的通信对于应用程序来说是透明的,就像调用本地过程一样,使得分布式系统的开发更加方便。
过程映射:RPC需要将远程过程映射到具体的网络地址和端口,以便客户端可以正确地发起请求。这个映射通常是通过在客户端和服务器之间定义一个接口描述语言(IDL)来实现的。IDL定义了可供调用的过程、参数和数据类型,并提供了接口规范。通过IDL,客户端和服务器可以在语义上一致地定义和理解远程过程。
通信协议:RPC使用不同的通信协议来实现远程过程调用。常见的RPC协议包括:
序列化和反序列化:RPC需要将传输的数据在客户端和服务器之间进行序列化和反序列化,以便在网络上传输。序列化将数据对象转换为字节流,以便传输;反序列化将字节流还原为数据对象。序列化和反序列化的过程在RPC中是透明的,由RPC框架自动处理。
错误处理:RPC框架通常提供错误处理机制,用于处理在远程过程调用过程中可能出现的
错误。这包括网络故障、超时、服务不可用等情况。RPC可以定义错误码、异常处理和重试机制,以便客户端能够适当地处理错误情况。
RPC在分布式系统中广泛应用,例如在微服务架构中用于服务间的通信,远程API调用等场景。它简化了分布式系统的开发和集成,提供了一种方便、高效的方式来实现进程间的通信和协作。
NFS(Network File System)和RPC(Remote Procedure Call)之间存在紧密的关系。RPC是NFS协议所依赖的通信机制,用于在客户端和服务器之间进行远程过程调用。
以下是NFS和RPC之间的详细关系:
NFS协议基于RPC:NFS协议使用RPC作为通信机制。RPC是一种用于实现分布式系统中进程间通信的机制,它允许客户端应用程序调用位于远程服务器上的服务,并获取服务的响应。NFS客户端和服务器之间的交互通过RPC进行。
RPC实现远程过程调用:RPC允许NFS客户端在本地发起远程过程调用,请求服务器执行相应的操作。客户端应用程序可以像调用本地过程一样调用远程服务器上的过程。通过RPC,客户端可以向NFS服务器发送文件操作请求,如读取、写入、创建和删除文件等。
RPC通信过程:当NFS客户端发起远程过程调用时,它会向服务器发送一个RPC请求。该请求包括要调用的过程名称和相应的参数。服务器接收到RPC请求后,执行相应的操作,并将结果发送回客户端作为RPC响应。客户端接收到响应后,可以继续执行后续操作。
RPC协议栈:RPC通信涉及到多个协议层次的交互。在NFS中,RPC协议栈通常基于TCP/IP协议栈进行通信。RPC在应用层上提供了一个透明的接口,使得客户端和服务器之间的通信对于应用程序来说是透明的,无需关心底层网络细节。
总结来说,NFS和RPC密切相关,RPC提供了NFS客户端和服务器之间的远程过程调用和通信机制。NFS客户端通过RPC发送请求到NFS服务器,并获取服务器的响应,实现了在网络中共享和访问文件的功能。RPC允许NFS客户端和服务器之间的透明通信,使得对于应用程序来说,远程过程调用的细节被抽象和隐藏,简化了分布式文件系统的使用。
存储区域网络(Storage Area Network,简称SAN)采用网状通道(Fibre Channel ,简称FC,区别与Fiber Channel光纤通道)技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。
设备:
需要大量的资金投入:效果好,传输速度块。
NFS(Network File System)和SAN(Storage Area Network)是两种不同的技术用于实现存储和数据共享的方式。它们之间存在以下区别:
架构和定位:
访问方式:
数据传输:
存储管理:
应用场景:
综上所述,NFS和SAN是两种不同的存储和数据共享技术。NFS主要用于文件级别的共享和访问,适用于跨平台的文件共享场景;SAN主要提供块级别的
存储访问,适用于需要高性能存储访问的应用。选择适合的技术应根据具体需求和应用场景进行评估和决策。
注意:
老的数据一致性解决方案:
新的解决方案:
使用云存储