首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数万客户端NFS服务的困境,聊聊自动挂载技术

我们知道NFS最大的特点是可以实现存储资源的共享。在NFS协议中并没有约束NFS客户端的数量,因此客户端可以达到数十,数百甚至上万个。在一些大型企业中,一个NFS服务器共享给数千个客户端是常态。

但是,当有数千个客户端挂载到这个NFS服务器时就会有一个非常大的问题,就是网络带宽会被无效占用。因为,只要客户端挂载NFS服务器上的导出目录,不管是否有文件读写,客户端总会时不时的向NFS服务器发送一些RPC请求。在客户端少的情况下没啥关系,在数千个客户端的情况下将会产生比较大的负载。

对于普通用户来说,我们经常用的是本地文件系统,对于NFS远程文件系统用的并不频繁。那么有没有一种方案,在使用这个NFS文件系统的时候自动挂载,而不使用的时候自动卸载呢?

其实目前在Linux操作系统中是有这样一个解决方案的,这就是autofs软件。软件autofs可以根据配置信息自动挂载合适的文件系统,其触发条件是当应用程序访问某个目录时。这里的某个目录也是在配置文件中进行配置的。

实现自动挂载需要能够感知应用程序访问目录的动作,在具体实现层面是在内核中有一个autofs文件系统。该文件系统类似Ext4和XFS等文件系统,源代码也在fs目录下面。不过我们暂时不会深入到代码实现层面。

autofs包含三个模块,一个automount命令行工具、一个autofs文件系统和一个automoutd守护进程。在操作系统中有若干配置文件,通过增加配置内容我们就可以实现自动挂载的功能。我们以挂载一个NFS目录为例介绍一下具体的配置过程。

假设我们现在已经有了一个NFS服务端,其IP地址是192.168.2.135,导出的挂载点为/data。我们想让其自动挂载到客户端的/mnt目录下面。

其实配置并不复杂,我们只需要修改两个地方就可以。一个是在/etc/auto.master文件的末尾加上一行配置内容,具体如下所示。

添加完内容后auto.master文件的内容如下。这个文件中有很多默认配置,我们可以暂时不用关系。只需要关心一下最后一行就行。

这行内容包含两项内容,一个是挂载点的位置,另外一个是进行挂载时更详细的信息,保存在一个名为auto.nfs的文件当中。因此我们需要创建一个新文件,命名为auto.nfs,文件内容如下所示。

只有一行内容,非常简单。这里面也有两项内容,一项是挂载点的名称data,另外一项是NFS服务器的IP地址和导出目录。需要注意的是,我们这里虽然挂载点和导出目录都是data,但在实际配置时并不要求一定是一样的。比如前面挂载点的名称data,可以是data1、data2或者是datan任何一个名称都可以。

另外一点需要注意的是,挂载点在客户端必须是不能存在的,也就是/mnt目录下面不能有一个名称为data的子目录。当我们完成上述配置后,可以重启一下autofs服务,之后就生效了。

我们可以实验一下,比如直接通过cd命令切换到/mnt/data目录下面。如果配置没有问题,可以发现可以直接切换过去。过一段事件后,我们可以发现这个挂载的目录又消失了。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OxNn74l27WEtzA5Ar4v_neyQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券