linux 中nfs原理,nfs原理及安装配置

本文将为您描述nfs原理及安装配置,具体操作过程:

皮皮虾

一、简介

二、工作原理

三、安装配置

一、简介

NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过网络共享资源。将NFS主机分享的目录,挂载到本地客户端当中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,在客户端端看起来,就像访问本地文件一样。

RPC,基于C/S模型。程序可以使用这个协议请求网络中另一台计算机上某程序的服务而不需知道网络细节,甚至可以请求对方的系统调用。

对于Linux而言,文件系统是在内核空间实现的,即文件系统比如ext3、ext4等是在Kernel启动时,以内核模块的身份加载运行的。

二、原理

NFS本身的服务并没有提供数据传递的协议,而是通过使用RPC(远程过程调用 Remote Procedure Call)来实现。当NFS启动后,会随机的使用一些端口,NFS就会向RPC去注册这些端口。RPC就会记录下这些端口,RPC会开启111端口。通过client端和sever端端口的连接来进行数据的传输。在启动nfs之前,首先要确保rpc服务启动。

具体过程如下:

6858f5199cb77a3f0d64fb11202e1bfd.png

本地用户要访问nfs服务器中文件,先向内核发起请求,内核处理调用nfs模块及rpc client

rpc client向rpc server发起连接

在连接之前,NFS服务除了启动nfsd本身监听的端口2049/tcp和2049/udp,还会启动其它进程(如mountd,statd,rquotad等)以完成文件共享,这些进程的端口是不固定的;是每次NFS服务启动时向RPC服务注册的,RPC服务会随机分配未使用的端口

完成连接,接受访问请求

nfs应用程序向内核发起请求

内核调用文件系统

然后client端通过获取的NFS端口来建立和server端的NFS连接并进行数据的传输。

以下为启动各服务的作用

rpc:远程过程调用协议,是实现本地调用远程主机实现系统调用的协议。

portmapper:负责分配rpc server的端口,并在client端请求时,负责响应目的rpc server端口返回给client端,工作在tcp与udp的111端口上。

mountd:是nfs服务的认证服务的守护进程,client在收到返回的真正端口时,就会去连接mountd,认证取得令牌。

nfsd:nfs的守护进程,负责接收到用户的调用请求后与内核发出请求并得到调用结果响应给用户,工作在tcp和udp的2049端口。

idmapd:是NFS的一个程序,用来负责远程client端创建文件后的权限问题。

quotad:用用于实现磁盘配额,当client端挂载nfs后可以限制磁盘空间的大小。

三、NFS服务配置安装

d4aecc34a2e03787b0a7414940e2a274.png

相关配置文件及命令的使用

/etc/exports

/path/to/somedir CLIENT_LIST

多个客户之间使用空白字符分隔

每个客户端后面必须跟一个小括号,里面定义了此客户访问特性,如访问权限等

172.16.0.0/16(ro,async) 192.16.0.0/24(rw,sync) *(ro)

权限属性:

ro:只读

rw:读写

sync:同步,数据同步写到内存与硬盘中

async:异步,数据先暂存内存

root_squash: 将root用户映射为来宾账号

no_root_squash: 有root的权限,不建议使用

all_squash: 全部映射为来宾账号

anonuid, anongid: 指定映射的来宾账号的UID和GID

exportfs命令:

-a:跟-r或-u选项同时使用,表示重新挂载所有文件系统或取消导出所有文件系统;

-r: 重新导出

-u: 取消导出

-v: 显示详细信息

showmount命令:

showmount -e NFS_SERVER: 查看NFS服务器"导出"的各文件系统

showmount -a NFS_SERVER: 查看NFS服务器所有被挂载的文件系统及其挂载的客户端对应关系列表

showmount -d NFS_SERVER: 显示NFS服务器所有导出的文件系统中被客户端挂载了文件系统列表

rpcinfo

-p hostname(orIP)

-p :显示所有的 port 与 program 的信息!

如果要让mountd和quotad等进程监听在固定端口,编辑配置文件/etc/sysconfig/nfs

客户端使用mount命令挂载

mount -t nfs NFS_SERVER:/PATH/TO/SOME_EXPORT /PATH/TO/SOMEWHRERE

安装配置

环境准备:

server端:192.168.1.222 centos 7

client端:192.168.1.200 centos 6.5

1.在服务端安装nfs,

# yum install nfs-utils rpcbind -y

aa609738d74fe7ce94c380ef7d0f12af.png

2.编辑/etc/exports,并启动nfs

132fdecff420deb4e26606b72cd84a00.png

#systemctl start nfs

3.客户端同样安装nfs-utils和rpcbind并启动,必须先启动rpcbind,否则报错(注意防火墙等)

add0a1295487c3c963c567a07ccba529.png

4.挂载并查看挂载信息

# mount -t nfs 192.168.1.222:/var/nfs /mnt

#showmount –e 192.168.1.222

7d5bd4a190677ff0f5427a2fd3a00d88.png

在服务器端/var/nfs创建目录或文件,并在客户端/mnt查看即可。

将所有用户映射为来宾账号实验

在服务器端添加用户hot,并修改配置文件并重新挂载文件系统

添加用户

useradd –u 520 hot

修改/etc/exports

/var/nfs192.168.1.0/24(rw,async,all_squash,anonuid=520)

重新挂载导出

exportfs –ra

7883189082a1d39fc4cb3aa1605d0ee7.png

在客户端上添加用户code,分别在code用户和root用户下创建文件,查看文件属性

6fe194ec3a9b705fe230c3f5fe6f4a13.png

72ab865a1bbcb50640a5462c4a1ad769.png

可以看到文件属主都为服务器端设置好的来宾账号hot的uid

让mountd和quotad等进程监听在固定端口,编辑配置文件/etc/sysconfig/nfs,取消注释

9a3f05ad465a51efa85f00a3072cde6b.png

重启nfs,查看端口

26c50bc1c87ba97e14ffd9bd88e540dd.png

人间不会有单纯的快乐,快乐总夹杂着烦恼和忧虑,人间也没有永远。——杨绛nfs原理及安装配置就为您介绍到这里,感谢您关注懒咪学编程c.lanmit.com.

本文地址:https://c.lanmit.com/czxt/Linux/38926.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux配置NFS,需要执行以下步骤: 1. 安装NFS服务器 首先,需要安装NFS服务器软件。在大多数Linux发行版,可以通过运行以下命令来安装: ``` sudo apt-get install nfs-kernel-server # Debian/Ubuntu sudo yum install nfs-utils # Red Hat/Fedora/CentOS ``` 2. 确认NFS服务已启动 启动NFS服务器后,可以通过运行以下命令来确认NFS服务是否已启动: ``` sudo systemctl status nfs-kernel-server # Debian/Ubuntu sudo systemctl status nfs-server # Red Hat/Fedora/CentOS ``` 3. 配置NFS共享 接下来,需要编辑NFS服务器的配置文件,以便指定要共享的目录。在大多数Linux发行版NFS服务器的配置文件位于 /etc/exports。例如,要将 /home/user 目录设置为共享目录,可以在文件末尾添加以下行: ``` /home/user *(rw,sync,no_subtree_check) ``` 其,* 表示允许任何主机访问该共享,rw 表示允许读写访问,sync 表示所有文件写入服务器后才返回应答,no_subtree_check 表示不检查子目录的权限。 4. 重新加载NFS配置 在编辑完NFS服务器的配置文件后,需要重新加载配置: ``` sudo exportfs -a ``` 5. 启动NFS客户端 在NFS服务器配置完成后,需要在NFS客户端上启动NFS服务。在大多数Linux发行版NFS客户端软件已经预装了,无需另行安装。 6. 挂载NFS共享 最后,需要在NFS客户端上挂载NFS共享。例如,要将NFS服务器上的 /home/user 目录挂载到本地的 /mnt 目录,可以运行以下命令: ``` sudo mount server:/home/user /mnt ``` 其,server 是NFS服务器的主机名或IP地址。 这些是配置NFS的基本步骤。当然,具体的配置方法可能因为发行版或版本而略有不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值