一种集群文件系统的制作方法

文档序号:12466185阅读:149来源:国知局
一种集群文件系统的制作方法与工艺

本发明涉及计算机技术领域,特别涉及一种集群文件系统。



背景技术:

随着计算机技术和网络技术的快速发展,集群系统以其强大的运算能力和健壮的容错机制让其逐步成为计算机行业的焦点。但是作为配套的集群文件系统的发展受到分布式的影响,发展缓慢,大部分的集群文件系统是在原有的文件系统的基础上重新创建虚拟机需求的文件系统格式。此类文件系统加深了每一次的IO操作的流程,降低了文件系统的访问速率。因此如何提高集群文件系统的效率,是本领域技术人员需要解决的技术问题。



技术实现要素:

本发明的目的是提供一种集群文件系统,该集群文件系统提供块设备使虚拟设备根据所需要的文件格式,将该块设备格式化为自己需求的文件系统,降低了每次IO操作的流程。

为解决上述技术问题,本发明提供一种集群文件系统,包括:lvm管理模块,nfs管理模块;其中,

所述lvm管理模块,用于根据块设备创建信息创建对应的块设备提供给集群用户,使所述集群用户直接在所述块设备中进行IO操作;

所述nfs管理模块,用于在挂载lvm存储池的节点挂载nfs文件系统,通过sanlock管理所述lvm存储池。

可选的,所述nfs管理模块包括:

初始化模块,用于在创建lvm存储池时,在所述nfs文件系统中创建对应的lvm存储池锁信息文件。

可选的,所述初始化模块具体为在创建lvm存储池时,通过sanlock执行init lockspace,并在每一台主机上执行add lockspace操作,创建以vg的uuid为名的文件,使所述文件具有对应lvm存储池的资源锁。

可选的,所述nfs管理模块包括:

元数据一致性单元,用于若接收到元数据操作请求时,通过sanlock获取对应的vg锁资源后执行对应的元数据操作,并在所述元数据操作完成后释放所述vg锁资源。

可选的,所述nfs管理模块包括:

块设备锁信息创建单元,用于在创建块设备时,在所述nfs文件系统中创建对应的块设备锁信息文件。

可选的,所述设备锁信息创建单元具体为在创建块设备时,通过sanlock创建以所述块设备的uuid为名的文件,并通过sanlock执行init resource操作,使所述文件具有所述块设备的资源锁。

可选的,所述nfs管理模块包括:

块设备操作单元,用于若接收到块设备操作请求时,通过sanlock获取对应的锁资源后执行对应的块设备操作,并在所述块设备操作完成后释放所述锁资源。

可选的,所述nfs管理模块包括:

块设备锁信息删除单元,用于若接收到块设备删除请求时,通过sanlock检测到所述块设备对应的锁资源未被占用时,删除所述块设备,并在删除成功后删除所述块设备对应的块设备锁信息文件。

可选的,本方案还包括:

锁信息检测模块,用于定时检测所述nfs管理模块中的锁信息和内核中块设备信息,并删除已经被删除的块设备对应的内核信息。

本发明所提供的一种集群文件系统,包括:lvm管理模块,nfs管理模块;其中,lvm管理模块,根据块设备创建信息创建对应的块设备提供给集群用户,使集群用户直接在块设备中进行IO操作;nfs管理模块,在挂载lvm存储池的节点挂载nfs文件系统,通过sanlock管理lvm存储池;

可见,该集群文件系统提供块设备使虚拟设备根据所需要的文件格式,直接将该块设备格式化为自己需求的文件系统,即用户直接在块设备中进行IO操作,减少了现有技术中首先在文件系统中进行IO操作的步骤,降低了每次IO操作的流程;同时提供了较为速度的IO操作,提高集群文件系统的效率,同时提高了集群的虚拟设备的IO速度。

附图说明

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

图1为本发明实施例所提供的集群文件系统的结构框图;

图2为本发明实施例所提供的另一集群文件系统的结构框图。

具体实施方式

本发明的核心是提供一种集群文件系统,该集群文件系统提供块设备使虚拟设备根据所需要的文件格式,将该块设备格式化为自己需求的文件系统,降低了每次IO操作的流程。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本实施例中lvm即logical volume manager(逻辑卷管理),nfs(network file system)即网络文件系统,sanlock是一个软件实现的轻量灵活的分布式锁管理器,在ovirt、libvirt等开源虚拟化项目中都有应用。现有技术中首先在文件系统中进行IO操作,然后再由文件系统将对应的IO操作写到块设备中,即进行了两次IO操作的流程,降低了IO操作速度。本实施例中直接提供块设备,使其直接在块设备中进行IO操作,因此节省了IO操作的流程,提高了IO操作速度。具体请参考图1,图1为本发明实施例所提供的集群文件系统的结构框图;该系统可以包括:lvm管理模块100,nfs管理模块200;其中,

lvm管理模块100,用于根据块设备创建信息创建对应的块设备提供给集群用户,使集群用户直接在块设备中进行IO操作;

具体的,lvm管理模块100提供具体的块设备,以提供给集群使用,增快集群文件系统的访问速度。

nfs管理模块200,用于在挂载lvm存储池的节点挂载nfs文件系统,通过sanlock管理lvm存储池。

具体的,nfs管理模块200提供集群管理的依赖文件,通过nfs来判断作为sanlock锁管理的存储目标。且nfs管理模块200中sanlock管理的目的是为了lvm更好的适合集群管理文件,同时防止集群成员共同的访问,造成脑裂现象。即nfs文件系统提供了sanlock管理的存储依赖,即挂载lvm存储池的节点都需要挂载该nfs文件系统,通过sanlock来管理lvm存储池,使之适应于集群文件系统。

进一步,sanlock不仅可以提供锁管理方案;同时Sanlock还可以提供一个弱的集群管理方案,即集群lvm存储池访问节点控制。以提高nfs管理模块200的管理效率和管理可靠性。

该系统通过lvm管理模块100和nfs管理模块200达到管理控制集群文件系统。通过nfs提供的集群成员可以相互访问的文件系统来提供共享式可读写的文件,通过sanlock提供互斥的锁的操作,避免资源被不同的机器复用。

基于上述技术方案,本发明实施例提供的集群文件系统,该系统提供给虚拟设备以具体的块文件,虚拟设备则根据所需要的文件格式,将该块设备格式化为自己需求的文件系统,降低了每次IO操作的流程。同时提供了较为速度的IO操作,提高集群文件系统的效率,同时提高了集群的虚拟设备的IO速度。

基于上述实施例,创建lv时候对lvm的元数据操作,因为多台主机都能同时的访问创建该lvm存储池,因此,为了保证lvm的元数据的安全性,集群的lvm的每一次对于元数据的操作必须是互斥的,因此,通过sanlock来保证集群的对于元数据的操作是互斥的,因此sanlock+nfs提供了vg锁,即对元数据的操作必须通过sanlock来获取vg的锁,然后在进行操作,并在操作完成后释放该vg锁。即可选的,本实施例中nfs管理模块200可以包括:

初始化模块,用于在创建lvm存储池时,在nfs文件系统中创建对应的lvm存储池锁信息文件。

具体的,初始化模块具体为在创建lvm存储池时,通过sanlock执行initlockspace,并在每一台主机上执行add lockspace操作,创建以vg的uuid为名的文件,使文件具有对应lvm存储池的资源锁。

即首先配置iscsi设备或者FC块设备,通过主机能够正常的访问到该LUN,把每一个使用该LUN的主机上挂载一个每台主机都可以访问到的nfs文件系统。部署sanlock管理软件,然后在一台主机上执行init lockspace(以即将创建的vg的uuid为该锁信息的lockspace name)操作,即初始化该分布式锁信息,然后在每一台主机上执行add lockspace操作,即执行连接锁操作,对每一台主机进行锁管理操作;创建vg(上述的lockspace name的uuid),然后在nfs文件系统上创建该vg的锁信息(以vg的uuid为名的文件),然后初始化。

元数据一致性单元,用于若接收到元数据操作请求时,通过sanlock获取对应的vg锁资源后执行对应的元数据操作,并在元数据操作完成后释放vg锁资源。

其中,将若干个磁盘分区连接为一个整块的卷组(volume group,vg),形成一个lvm存储池。

基于上述实施例,为了防止集群的同时访问造成脑裂问题,本实施例中nfs管理模块可以包括:

块设备锁信息创建单元,用于在创建块设备时,在nfs文件系统中创建对应的块设备锁信息文件。

具体的,设备锁信息创建单元具体为在创建块设备时,通过sanlock创建以块设备的uuid为名的文件,并通过sanlock执行init resource操作,使文件具有块设备的资源锁。

即每一次创建lv(即块设备)的操作必须在该nfs文件系统上面创建以该lv的uuid为名的文件,同时对该文件执行init resource操作,即该文件为该lv的锁信息。

块设备操作单元,用于若接收到块设备操作请求时,通过sanlock获取对应的锁资源后执行对应的块设备操作,并在块设备操作完成后释放锁资源。

块设备锁信息删除单元,用于若接收到块设备删除请求时,通过sanlock检测到块设备对应的锁资源未被占用时,删除块设备,并在删除成功后删除块设备对应的块设备锁信息文件。

具体的,每一次使用该lv时候必须获取该lv的资源锁,删除lv时候必须同时删除该资源锁。即对于内核的lv的残留数据来说,每次创建lv的操作必须通过sanlock创建出来sanlock的资源的锁,即以lv的uuid为命名的资源信息,每次使用lv的时候获取该lv的锁,然后才能正常的使用,对于lv的删除操作时候必须检查该lv是否已经被占用,即该lv正在使用;能够正常的删除lv时候执行删除操作,删除完成之后必须删除该lv的锁信息,避免信息残留。

基于上述任意实施例,请参考图2,本实施例还可以包括:

锁信息检测模块,用于定时检测nfs管理模块中的锁信息和内核中块设备信息,并删除已经被删除的块设备对应的内核信息。

具体的,其它集群成员节点需要有定时任务去检测该锁信息和内核lv的信息的内容,删除该已经被删除的lv的内核信息。确保系统资源不会被占用。

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

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