一种访问用户态网络文件系统的方法、装置及设备与流程

文档序号:16312976发布日期:2018-12-19 05:21阅读:245来源:国知局
一种访问用户态网络文件系统的方法、装置及设备与流程

本发明涉及存储技术领域,特别是涉及一种访问用户态网络文件系统的方法、装置、设备及可读存储介质。

背景技术

用户态网络文件系统(nfs-ganesha)属于开源项目,在系统服务故障场景下,相比于内核态网络文件系统(networkfilesystem,nfs)具有较好管理性和可维护性,并且nfs-ganesha易于实施和维护。因此,目前,大数据海量分布式对象存储nfs-ganesha应用前景很大。

现有的,nfs-ganesha基于ipv4对外提供服务。但是,由于ipv4存在网络地址资源有限的问题,制约了nfs-ganesha的应用和发展。例如,由于ipv4地址有限,使得用户态网络文件系统的安全性、处理性能,无法满足用户需求。

综上所述,如何有效地提升网络文件系统的安全性等问题,是目前本领域技术人员急需解决的技术问题。



技术实现要素:

本发明的目的是提供一种访问用户态网络文件系统的方法、装置、设备及可读存储介质,以在用户态网络文件系统实现ipv6方式挂载访问。

为解决上述技术问题,本发明提供如下技术方案:

一种访问用户态网络文件系统的方法,包括:

利用绑定有ipv6地址的端口,接收目标客户端利用tcp6协议发送的访问请求;

确定所述访问请求对应的存储设备,并获取以ipv6格式挂载了所述存储设备的目标共享目录;

创建连接所述目标客户端和所述目标共享目录的目标套接字;所述目标套接字对应的传输协议为tcp6协议;

利用所述目标套接字向所述目标客户端提供所述存储设备的访问服务。

优选地,还包括:

利用bind_sockets_v6函数将ipv6地址和端口进行绑定。

优选地,所述利用绑定ipv6地址的端口,接收目标客户端利用tcp6协议发送的访问请求,包括:

创建监听套接字,利用所述监听套接字对绑定ipv6地址的端口进行监听;

接收目标客户端利用tcp6协议发送的访问请求。

优选地,在所述利用绑定有ipv6地址的端口,接收目标客户端利用tcp6协议发送的访问请求之前,还包括:

修改配置文件,启用ipv6协议。

优选地,获取以ipv6格式挂载了所述存储设备的目标共享目录,包括:

判断共享目录中是否存在所述存储设备;

如果是,则直接将所述共享目录作为目标共享目录;

如果否,则将所述存储设备以ipv6格式挂载至目标共享目录中。

优选地,所述将所述存储设备以ipv6格式挂载至目标共享目录中,包括:

利用挂接指令将存储设备以ipv6格式挂载至所述目标共享目录的挂载目录下。

优选地,所述利用绑定有ipv6地址的端口,接收目标客户端利用tcp6协议发送的访问请求,包括:

判断nfs-ganesha服务中的ipv6开关的状态是否为使能状态;

如果是,则利用绑定有ipv6地址的端口,接收目标客户端利用tcp6协议发送的访问请求。

一种访问用户态网络文件系统的装置,包括:

访问请求接收模块,用于利用绑定有ipv6地址的端口,接收目标客户端利用tcp6协议发送的访问请求;

目标共享目录获取模块,用于确定所述访问请求对应的存储设备,并获取以ipv6格式挂载了所述存储设备的目标共享目录;

目标套接字创建模块,用于创建连接所述目标客户端和所述目标共享目录的目标套接字;所述目标套接字对应的传输协议为tcp6协议;

访问服务提供模块,用于利用所述目标套接字向所述目标客户端提供所述存储设备的访问服务。

一种访问用户态网络文件系统的设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述访问用户态网络文件系统的方法的步骤。

一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述访问用户态网络文件系统的方法的步骤。

应用本发明实施例所提供的方法,利用绑定有ipv6地址的端口,接收目标客户端利用tcp6协议发送的访问请求;确定访问请求对应的存储设备,并获取以ipv6格式挂载了存储设备的目标共享目录;创建连接目标客户端和目标共享目录的目标套接字;目标套接字对应的传输协议为tcp6协议;利用目标套接字向目标客户端提供存储设备的访问服务。

在用户态网络文件系统中,当通过绑定有ipv6地址的端口,接收到目标客户端利用tcp6协议发送的访问请求之后,首先确定对应的存储设备,然后获取对应的目标共享目录。然后建立目标套接字,将目标客户端以ipv6格式挂载至目标共享目录中。挂载之后,可通过tcp6协议对目标客户端提供访问存储设备的服务。也就是说,可在用户态网络文件系统中实现ipv6挂载访问。由于ipv6的地址有2^128-1个地址,因而地址资源有限的问题不复存在,进一步解决了由于地址资源有限导致的用户态网络文件系统性能制约问题和安全问题。另外,由于ipv6分配遵循聚类(aggregation)的原则,使得路由器能在路由表中用一条记录(entry)表示一片子网,可减小了路由器中路由表的长度,提高了路由器转发数据包的速度,还可进一步提升用户态网络文件系统的系统性能。

相应地,本发明实施例还提供了与上述访问用户态网络文件系统的方法相对应的访问用户态网络文件系统的装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中一种访问用户态网络文件系统的方法的实施流程图;

图2为本发明实施例中一种访问用户态网络文件系统的装置的结构示意图;

图3为本发明实施例中一种访问用户态网络文件系统的设备的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例中一种访问用户态网络文件系统的方法的流程图,该方法包括以下步骤:

s101、利用绑定有ipv6地址的端口,接收目标客户端利用tcp6协议发送的访问请求。

其中,ipv6地址指ipv6协议中的地址,由128位二进制数码表示。ipv6协议为替代现行版本ip协议——ipv4的下一代ip协议。

需要说明的是,为了支持ipv6,可以预先在服务器端和目标客户端进行配置,以便支持ipv6协议。即修改配置文件,启用ipv6协议。具体的,则预先在服务器端和目标客户端中添加ipv6协议,然后在配置文件中启用ipv6协议。例如,在配置环境下,输入如下操作指令:

/etc/sysctl.conf

vim/etc/sysctl.conf

net.ipv6.conf.lo.disable_ipv6=0

sysctl–p,以完成配置。

在本发明实施例中,可以预先为指定端口配置ipv6地址。在对ipv6进行配置时,为了避免人工配置可能会出错误的问题。优选地,利用bind_sockets_v6函数将ipv6地址和端口进行绑定。即调用bind_sockets_v6函数为指定端口配置ipv6地址。需要说明的是,本发明实施例中所描述的端口可以为用户态网络文件系统中对外通过服务的访问服务的端口。为了兼容ipv4和ipv6,可仅将用户态网络文件系统部分端口配置上ipv6地址。

为端口配置好ipv6地址之后,可对该端口进行监测,以便及时接收目标客户端利用tcp6协议发送的访问请求。其中,tcp6协议为支撑ipv6的tcp传输协议。其中,目标客户端可以为装有centoslinuxrelease7.2.1511的终端设备。当然,目标客户端还可以为支持ipv6协议和tcp6协议的其他版本的系统的终端设备。访问请求可以为指定了访问对象的访问请求,访问对象可以为存储设备或者目标文件。

优选地,为了实现更好地对端口进行监测,可采用套接字进行监测,以便及时接收访问请求。具体实现过程如下:

步骤一、创建监听套接字,利用监听套接字对绑定ipv6地址的端口进行监听;

步骤二、接收目标客户端利用tcp6协议发送的访问请求。

为便于描述,下面将上述两个步骤结合起来进行说明。

为每一个设置了ipv6地址的端口设置监听套接字,利用该监听套接字对端口进行监听。接收目标客户端利用tcp6协议发送的访问请求。

在接收到访问请求之后,可执行步骤s102的操作。

s102、确定访问请求对应的存储设备,并获取以ipv6格式挂载了存储设备的目标共享目录。

若访问请求指定了请求访问的对象为存储设备,则可以直接从访问请求中确定出对应的存储设备;若访问请求为指定访问对象为目标文件的访问请求,则可以利用用户态网络文件系统存储的目标文件的元数据信息,确定出存储目标文件的存储设备。

然后,将获取以ipv6格式挂载了存储设备的目标共享目录。具体的,判断共享目录中是否存在存储设备;如果是,则直接将共享目录作为目标共享目录;如果否,则将存储设备以ipv6格式挂载至目标共享目录中。即,若存储设备已在共享目录时,则直接获取该共享目录;若存储设备还未添加至共享目录,则可以将存储设备添加至共享目录下的挂载目录中。其中,获取目标共享目录,可以在配置文件/etc/ganesha/ganesha.conf中实现。优选地,在进行挂载时,可利用挂接指令将存储设备以ipv6格式挂载至目标共享目录的挂载目录下。具体的,挂接指令为mount,该命令格式:mount[-tvfstype][-ooptions]devicedir。具体的,如何设置挂接指令中的参数可参照挂接指令的使用规则,在此不再赘述。

s103、创建连接目标客户端和目标共享目录的目标套接字。

其中,目标套接字对应的传输协议为tcp6协议。

获取目标共享目录之后,可以先创建一个连接目标更新目录和目标客户端的目标套接字,并为该套接字设置tcp6协议。如何为套接字设置tcp6协议可参见常见的套接字传输协议设置流程,在此不再赘述。类似上文中的将存储设备挂载至目标共享目录下,这里的套接字的连接作用等同于将目标客户端挂载至用户态网络文件系统中。

s104、利用目标套接字向目标客户端提供存储设备的访问服务。

完成挂载之后,可利用该目标套接字向目标客户端提供存储设备的访问访问。也就是说,目标客户端可以对目标共享目录下的存储设备进行访问,这里的访问可以为对存储设备中的数据进行增加、删除、修改、查看等常见的访问操作。

应用本发明实施例所提供的方法,利用绑定有ipv6地址的端口,接收目标客户端利用tcp6协议发送的访问请求;确定访问请求对应的存储设备,并获取以ipv6格式挂载了存储设备的目标共享目录;创建连接目标客户端和目标共享目录的目标套接字;目标套接字对应的传输协议为tcp6协议;利用目标套接字向目标客户端提供存储设备的访问服务。

在用户态网络文件系统中,当通过绑定有ipv6地址的端口,接收到目标客户端利用tcp6协议发送的访问请求之后,首先确定对应的存储设备,然后获取对应的目标共享目录。然后建立目标套接字,将目标客户端以ipv6格式挂载至目标共享目录中。挂载之后,可通过tcp6协议对目标客户端提供访问存储设备的服务。也就是说,可在用户态网络文件系统中实现ipv6挂载访问。由于ipv6的地址有2^128-1个地址,因而地址资源有限的问题不复存在,进一步解决了由于地址资源有限导致的用户态网络文件系统性能制约问题和安全问题。另外,由于ipv6分配遵循聚类(aggregation)的原则,使得路由器能在路由表中用一条记录(entry)表示一片子网,可减小了路由器中路由表的长度,提高了路由器转发数据包的速度,还可进一步提升用户态网络文件系统的系统性能。

需要说明的是,基于上述实施例,本发明实施例提供了相应的优选方案。在优选地实施例中涉及与实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在优选实施例中不再一一赘述。

优选地,由于ipv4在短时间内仍然会继续使用,为了支持ipv4,可以在访问用户态网络文件系统设置一个ipv6开关,以便根据应用需要进行调节。具体的,即可在执行步骤s101之前,预先设置ipv6开关,即在配置文件中/etc/ganesha/ganesha.conf,增加v6disable=false/true字段。例如,若ipv6开关默认为打开ipv6支持,当v6disable=false表示支持客户端通过ipv6格式挂载,v6disable=true表示关闭开关,不支持客户端通过ipv6格式挂载。然后在执行s101时,首先判断nfs-ganesha服务中的ipv6开关的状态是否为使能状态;如果是,则利用绑定有ipv6地址的端口,接收目标客户端利用tcp6协议发送的访问请求。其中,使能状态即为v6disable=true。

为了便于本领域技术人员理解本发明实施例所提供的技术方案,下面以具体的配置过程为例,对本发明实施例所提供的技术方案进行详细描述。

为了实现ipv6挂载访问,涉及到的配置过程如下:

在服务器端,在linux系统平台,部署并启动nfs-ganesha服务,设置导出共享目录为/nfs_share,开启系统ipv6协议支持。

开启ipv6协议,具体可以为输入如下指令修改配置文件:

/etc/sysctl.conf

vim/etc/sysctl.conf

#net.ipv6.conf.all.disable_ipv6=1

net.ipv6.conf.all.disable_ipv6=0

net.ipv6.conf.default.disable_ipv6=0

net.ipv6.conf.lo.disable_ipv6=0

然后,执行命令启用ipv6

sysctl-p

完成修改配置之后,还可以查看配置的ipv6地址。例如,在服务端查看到的ipv6为fe80::20c:29ff:fe26:5f62%eno233434,其中eno233434为网卡名。

其中linux系统平台指centoslinuxrelease7.2.1511,设置导出共享目录的配置文件为etc/ganesha/ganesha.conf。然后,通过以下方法步骤实现支持ipv6挂载nfs-ganesha服务:

其中,ipv6开关指开关打开,v6disable=false表示支持客户端通过ipv6格式挂载,关闭开关,v6disable=true表示不支持客户端通过ipv6格式挂载。然后,在配置文件中/etc/ganesha/ganesha.conf,增加v6disable=false/true字段。

创建socekt用来监听通过函数bind_sockets_v6绑定ipv6地址和端口,开启监听模块,等待客户端的ipv6连接。以便在有客户端请求访问时,创建一个用于和连接进来的客户端进行通信的socket,同时,保持监听状态,等侍下一个客户端ipv6的连接。

客户端:开启系统ipv6协议支持。客户端指装有centoslinuxrelease

7.2.1511的客户端。然后将客户端挂载至共享目录下,通过ipv6格式进行挂载,挂载到/mnt/test下,指定挂载参数。具体的,可通过nfs-ganesha挂载命令:

mount-tnfs[fe80::20c:29ff:fe26:5f62%eno233434]:/nfs_share/mnt/test-overs=3,proto=tcp6完成。其中,指定挂载参数是指与nfs-ganesha服务端进行网络交互的tcp6协议参数,nfs_share为共享目录,/mnt/test为挂载目录。

完成上述的配置过程之后,即可在用户态网络文件系统上实现本发明实施例所提供的技术方案。即基于ipv6挂载访问nfs-ganesha。

相应于上面的方法实施例,本发明实施例还提供了一种访问用户态网络文件系统的装置,下文描述的访问用户态网络文件系统的装置与上文描述的访问用户态网络文件系统的方法可相互对应参照。

参见图2所示,该装置包括以下模块:

访问请求接收模块101,用于利用绑定有ipv6地址的端口,接收目标客户端利用tcp6协议发送的访问请求;

目标共享目录获取模块102,用于确定访问请求对应的存储设备,并获取以ipv6格式挂载了存储设备的目标共享目录;

目标套接字创建模块103,用于创建连接目标客户端和目标共享目录的目标套接字;目标套接字对应的传输协议为tcp6协议;

访问服务提供模块104,用于利用目标套接字向目标客户端提供存储设备的访问服务。

应用本发明实施例所提供的装置,利用绑定有ipv6地址的端口,接收目标客户端利用tcp6协议发送的访问请求;确定访问请求对应的存储设备,并获取以ipv6格式挂载了存储设备的目标共享目录;创建连接目标客户端和目标共享目录的目标套接字;目标套接字对应的传输协议为tcp6协议;利用目标套接字向目标客户端提供存储设备的访问服务。

在用户态网络文件系统中,当通过绑定有ipv6地址的端口,接收到目标客户端利用tcp6协议发送的访问请求之后,首先确定对应的存储设备,然后获取对应的目标共享目录。然后建立目标套接字,将目标客户端以ipv6格式挂载至目标共享目录中。挂载之后,可通过tcp6协议对目标客户端提供访问存储设备的服务。也就是说,可在用户态网络文件系统中实现ipv6挂载访问。由于ipv6的地址有2^128-1个地址,因而地址资源有限的问题不复存在,进一步解决了由于地址资源有限导致的用户态网络文件系统性能制约问题和安全问题。另外,由于ipv6分配遵循聚类(aggregation)的原则,使得路由器能在路由表中用一条记录(entry)表示一片子网,可减小了路由器中路由表的长度,提高了路由器转发数据包的速度,还可进一步提升用户态网络文件系统的系统性能。

在本发明的一种具体实施方式中,还包括:

端口地址配置模块,用于利用bind_sockets_v6函数将ipv6地址和端口进行绑定。

在本发明的一种具体实施方式中,访问请求接收模块101,包括:

监听单元,用于创建监听套接字,利用监听套接字对绑定ipv6地址的端口进行监听;

接收单元,用于接收目标客户端利用tcp6协议发送的访问请求。

在本发明的一种具体实施方式中,还包括:

ipv6协议启用模块,用于在利用绑定有ipv6地址的端口,接收目标客户端利用tcp6协议发送的访问请求之前,修改配置文件,启用ipv6协议。

在本发明的一种具体实施方式中,目标共享目录获取模块102,具体用于判断共享目录中是否存在存储设备;如果是,则直接将共享目录作为目标共享目录;如果否,则将存储设备以ipv6格式挂载至目标共享目录中。

在本发明的一种具体实施方式中,目标共享目录获取模块102,具体用于

利用挂接指令将存储设备以ipv6格式挂载至目标共享目录的挂载目录下。

在本发明的一种具体实施方式中,访问请求接收模块101,具体用于判断nfs-ganesha服务中的ipv6开关的状态是否为使能状态;如果是,则利用绑定有ipv6地址的端口,接收目标客户端利用tcp6协议发送的访问请求。

相应于上面的方法实施例,本发明实施例还提供了一种访问用户态网络文件系统的设备,下文描述的一种访问用户态网络文件系统的设备与上文描述的一种访问用户态网络文件系统的方法可相互对应参照。

参见图3示,该访问用户态网络文件系统的设备包括:

存储器d1,用于存储计算机程序;

处理器d2,用于执行计算机程序时实现上述方法实施例的访问用户态网络文件系统的方法的步骤。

相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种访问用户态网络文件系统的方法可相互对应参照。

一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的访问用户态网络文件系统的方法的步骤。

该可读存储介质具体可以为u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可存储程序代码的可读存储介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1