CN111290826A - 分布式文件***、计算机***和介质 - Google Patents
分布式文件***、计算机***和介质 Download PDFInfo
- Publication number
- CN111290826A CN111290826A CN201811487910.1A CN201811487910A CN111290826A CN 111290826 A CN111290826 A CN 111290826A CN 201811487910 A CN201811487910 A CN 201811487910A CN 111290826 A CN111290826 A CN 111290826A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- node
- client
- volume
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000004044 response Effects 0.000 claims abstract description 21
- 230000004048 modification Effects 0.000 claims abstract description 12
- 238000012986 modification Methods 0.000 claims abstract description 12
- 238000000034 method Methods 0.000 claims description 25
- 238000007726 management method Methods 0.000 claims description 20
- 238000013500 data storage Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 11
- 230000015654 memory Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000005012 migration Effects 0.000 description 6
- 238000013508 migration Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000002688 persistence Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种分布式文件***,包括:客户端、元数据节点、数据节点和卷管理节点;所述客户端对应一个或多个容器;所述元数据节点用于存储第一对应关系,所述第一对应关系为文件***属性与数据的存储位置的对应关系,所述数据为文件中的实际数据;所述数据节点用于存储数据;所述卷管理节点用于响应于接收到所述客户端的创建卷请求,创建一个或多个卷,每个卷为可被至少一个容器挂载的文件***的实例,每个文件***属性包括索引节点及对应的索引节点标识信息,所述索引节点标识信息包括文件名以及以下任意一种或多种:文件大小、创建时间、修改时间、链接数、用户、用户组和文件权限。本公开还提供了一种计算机***和一种计算机可读存储介质。
Description
技术领域
本公开涉及计算机技术领域,更具体地,涉及一种分布式文件***、计算机***和介质。
背景技术
在计算机技术领域中,虚拟化(Virtualization)是一种资源管理技术,可以将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。
容器是一种比传统虚拟机更为高效和轻量的虚拟化技术,目前最为流行的容器引擎是Docker,Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是无状态的,可以随时的被创建、启动、停止、销毁。
在实现本公开构思的过程中,发明人发现现有技术中至少存在如下问题:容器本身在集群中可以根据条件在任意物理机上面迁移,而容器数据的持久化和迁移,是目前在容器技术中比较棘手并且关键的问题。
发明内容
有鉴于此,本公开提供了一种可以实现容器数据的持久化和迁移的分布式文件***、计算机***和介质。
本公开的一个方面提供了一种分布式文件***,包括:客户端(client)、元数据节点(metanode)、数据节点(datanode)和卷管理节点(volume manager node,简称volmgr),其中,所述客户端对应一个或多个容器(container),所述元数据节点用于存储第一对应关系,所述第一对应关系为文件***属性与数据的存储位置的对应关系,所述数据为文件中的实际数据,所述数据节点用于存储数据,所述卷管理节点用于响应于接收到所述客户端的创建卷请求,创建一个或多个卷(volume),每个卷为可被至少一个容器挂载的文件***的实例,其中,每个文件***属性包括索引节点及对应的索引节点标识信息,所述索引节点标识信息包括文件名以及以下任意一种或多种:文件大小、创建时间、修改时间、链接数、用户、用户组和文件权限。本公开提供了一种新的分布式文件***架构,除了包括客户端、元数据节点和数据节点之外,还包括卷管理节点,该卷管理节点可以响应于客户端的创建卷请求,根据该卷管理节点的规模创建多个卷,构成一个卷池,也就是说,该卷池可以提供多个逻辑卷,客户端对应的容器只需要通过用户空间文件***(Filesystem in Userspace,Fuse)挂载即可使用,通过挂载该卷,容器的数据得到持久化,并且,无论容器被迁移到任意物理机,都可以重新挂载该volume,实现了数据的可以迁移性。
根据本公开的实施例,所述元数据节点还用于响应于接收到所述客户端发送的远程过程调用协议消息,将所述远程过程调用协议消息对应的索引节点标识信息和数据的数据块标识信息写入所述第一对应关系,并返回索引节点标识对应数据的存储位置以及文件打开成功消息,其中,所述远程过程调用协议消息包括索引节点标识和数据的数据块标识,这样可以在客户端需要写数据时,首先在元数据节点中做相应的记录,如哪个文件的哪些数据块在什么时间做了写入操作,在记录完成后,元数据节点还会给客户端返回打开文件成功的消息以及客户端想写入数据对应的数据的存储地址。这样就使得客户端可以得知将想写入的数据发送给哪个存储地址进行保存,且能保证元数据节点中存储的第一对应关系为最新的对应关系。相应地,所述数据节点还用于响应于接收到所述客户端发送的写入数据,将所述写入数据存储在指定位置,其中,所述写入数据的数据块信息中包括所述客户端对应容器已挂载的卷对应的数据的存储位置,所述指定位置为与所述写入数据对应的数据的存储位置,所述写入数据对应的数据的存储位置包括IP地址、接口和存储空间标识。这样就可以实现客户端远程在数据中写入数据的功能。
根据本公开的实施例,所述数据的数据块标识信息包括一个数据块组,所述数据块组包括数个数据节点的IP地址、接口和存储空间标识。这样可以实现数个副本数据的写入,保证了文件的数据的高可靠性。
根据本公开的实施例,当将所述远程过程调用协议消息中包含的索引节点标识和数据的数据块标识写入所述第一对应关系之后,所述元数据节点通过一致性复制协议(raft协议)使得其余元数据节点存储的第一对应关系的数据保持一致。
根据本公开的实施例,所述元数据节点还用于响应于接收到所述客户端发送的存储位置请求,返回与所述存储位置请求对应的数据的存储位置,其中,所述存储位置请求包括文件名,这样就可以使得客户端需要读数据的时候,可以从元数据节点中得到需要度数据的数据的存储位置。相应地,所述数据节点还用于响应于接收到所述客户端发送的数据读取请求,返回与所述数据读取请求对应的数据的数据块,其中,所述数据读取请求包括数据的存储位置以及偏移量。这样就实现了客户端远程读取数据的功能。此外,多个挂载点可以同时读取相同或不相同的文件,实现了卷的可共享性。
根据本公开的实施例,文件由多个数据块组成,每个数据块的大小为设定大小。
根据本公开的实施例,每个卷对应一个元数据存储空间组(元数据存储空间组的各元数据存储空间满足一致性复制协议)以及多个数据存储空间组,其中,所述元数据存储空间组位于所述元数据节点中,每个元数据节点可以承载多个元数据存储空间,所述多个数据存储空间组位于所述数据节点中,每个数据节点上可以承载多个数据存储空间,由于存在多种排列组合的可能,因此,可以创建众多大小不一的卷,形成卷池,每个卷都拥有自身文件***属性,支持标准可移植性操作***接口(Portable Operating SystemInterface of UNIX,POSIX)协议,可以被Fuse挂载。因此,每个容器都可以挂载一个或多个卷。
根据本公开的实施例,所述文件的数据按照一致性哈希值分布在数据节点的存储空间中,或者,所述文件的数据随机分布在数据节点的存储空间中。
根据本公开的实施例,所述容器的存储空间可达到PB级别。
根据本公开的实施例,所述客户端具有至少一个应用、虚拟文件***、用户空间文件***和用户空间文件***的接口库,其中,所述虚拟文件***用于给所述至少一个应用创建容器,所述用户空间文件***基于所述用户空间文件***的接口库与所述元数据节点和/或所述数据节点对所述容器中的数据信息进行交互。
本公开的另一个方面提供了一种计算机***,包括一个或多个处理器,以及存储装置,该存储装置用于存储可执行指令,所述可执行指令在被所述处理器执行时,实现如下所述的操作:响应于接收到所述客户端的创建卷请求,创建一个或多个卷,每个卷为可被至少一个容器挂载的文件***的实例,其中,每个文件***属性包括索引节点及对应的索引节点标识信息,所述索引节点标识信息包括文件名以及以下任意一种或多种:文件大小、创建时间、修改时间、链接数、用户、用户组和文件权限。
本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
根据本公开的实施例,容器可以真正的实现弹性伸缩、自由迁移,如应用创建一个容器,然后挂载所需的卷即可。
根据本公开的实施例,由于所述数据的数据块标识信息包括一个数据块组,所述数据块组包括数个数据节点的IP地址、接口和存储空间标识。使得容器数据的可靠性有大幅度提升,例如,当可以分别存储三个或其它个数的副本。
根据本公开的实施例,容器数据规模可以突破单机物理硬盘的限制,达到PB级别,例如,一个容器可以对应数个卷,每个卷对应的数据可以分别存储在不同的物理机上。
根据本公开的实施例,容器内业务文件读写响应延迟与物理磁盘解耦,稳定维持在优秀范围内,如容器内业务的数据可以不存储在本地的物理机上,因此可以实现文件读写响应延迟与物理磁盘解耦。
根据本公开的实施例,多个容器可以共享同一个存储空间,这种特性可以用来丰富业务类型。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的分布式文件***、计算机***和介质的应用场景;
图2示意性示出了现有技术中容器与物理机的关系示意图;
图3示意性示出了根据本公开实施例的容器与物理机的关系示意图;
图4示意性示出了根据本公开实施例的分布式文件***的架构图;以及
图5示意性示出了根据本公开实施例的适于分布式文件***的计算机***的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的***”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的***等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的***”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的***等)。
本公开的实施例提供了一种分布式文件***、计算机***和介质,该分布式文件***包括客户端、元数据节点、数据节点和卷管理节点,该卷管理节点可以响应于客户端的创建卷请求,根据该卷管理节点的规模创建多个卷,构成一个卷池,也就是说,该卷池可以提供多个逻辑卷,客户端对应的容器只需要通过用户空间文件***挂载即可使用,通过挂载该卷,容器的数据得到持久化,并且,无论容器被迁移到任意物理机,都可以重新挂载该volume,实现了数据的可以迁移性。
图1示意性示出了根据本公开实施例的分布式文件***、计算机***和介质的应用场景,图1所示的***架构100仅为可以应用本公开实施例的***架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、***、环境或场景。
如图1所示,根据该实施例的***架构100可以包括终端设备101、102、103,网络104、元数据服务器集群105、数据服务器集群106和卷管理服务器集群107。网络104用以在终端设备101、102、103与元数据服务器集群105、数据服务器集群106和卷管理服务器集群107之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与元数据服务器集群105、数据服务器集群106和卷管理服务器集群107交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种具有文件的通讯客户端应用,例如虚拟化工具、购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏、支持网页浏览且支持可移植性操作***接口的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
元数据服务器集群105、数据服务器集群106和卷管理服务器集群107可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
应该理解,图1中的终端设备、网络和服务器集群的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器集群。
图2示意性示出了现有技术中容器与物理机的关系示意图。
如图2所示,现有技术方案是使用容器所在物理机上的物理硬盘,借助本地卷管理机制(Logical Volume Manager,简称LVM)技术,将本地物理机的硬盘(disk)划分出分区,并映射给容器使用。
也就是说,现有技术中的容器中数据实际上被捆绑在了所属物理机上,无法实现容器数据迁移。由于物理机硬盘容易损坏,容器中数据的高可靠性也无法得到保证。
此外,由于单个物理机的硬盘容量有限,无法提供超大容量的卷volume。另外,单个物理机的硬盘性能有限,当重度使用时,读写响应延迟大,影响上层应用使用。
由于通过LVM技术划分出来的volume(简称Lvm Volume),不能提供共享功能,跨物理机的多个容器无法共享该volume。
综上,现有技术的方案只适合微小规模的容器集群。
图3示意性示出了根据本公开实施例的容器与物理机的关系示意图。
如图3所示,本公开提供的分布式文件***中,容器与本地物理机分离,而非如现有技术中将本地物理机的硬盘划分出分区,并映射给容器使用。本公开的容器中数据可以是存储在数据节点上,如数据服务器集群等,通过在客户端(Cluster)挂载卷来实现数据的远程读写功能。如图3所示,本公开提供的分布式文件***的核心技术点在于提供了一个高可用、可迁移、可共享的卷池(volumes pool),该卷池中可以提供成千上万个逻辑卷(volume),容器只需通过fuse挂载即可使用,通过挂载该volume,容器的数据得到持久化(容器的数据存储在数据服务器中,且可以通过卷中信息得到元数据服务器信息,该元数据服务器信息对应的元数据服务器中存储有文件的数据的存储位置,如数据存在哪个数据服务器的哪个磁盘的哪个数据块中,客户端(Cluster)随时可以通过这些信息找到数据并可以对其进行操作)。并且,无论容器被迁移到任意物理机,都可以重新挂载该volume,实现了数据的可以迁移性。
图4示意性示出了根据本公开实施例的分布式文件***的架构图。
如图4所示,该分布式文件***可以包括:客户端、元数据节点、数据节点和卷管理节点。
其中,所述客户端对应一个或多个容器,该客户端仅为示意性的,可以同时存在多个客户端。所述客户端具有至少一个应用(APP)、虚拟文件***(VFS)、用户空间文件***(FUSE)和用户空间文件***的接口库(Libfuse),所述虚拟文件***用于给所述至少一个应用创建容器,所述用户空间文件***基于所述用户空间文件***的接口库与所述元数据节点和/或所述数据节点对所述容器中的数据信息进行交互。
所述元数据节点用于存储第一对应关系,所述第一对应关系为文件***属性与数据的存储位置的对应关系,所述数据为文件中的实际数据。图4中共有3个元数据节点,这3个元数据节点共同组成了一个元数据节点集群。需要说明的是,上述3个元数据节点仅为示例性举例,可以存在更多或更少的元数据节点。图4中一个卷对应3个元数据节点,这3个元数据节点之间满足一致性复制协议(Raft),这样可以保证元数据节点中的数据的高可靠性。所述第一对应关系可以以“键-值内存存储空间”(Key-Value map,简称K-V map)的形式进行存储,其中,Key用于存储文件***属性,具体可以对应于一组父索引节点(parentinode,简称父节点)和文件名(filename),Value对应索引节点属性,如数据的存储位置等。
所述数据节点用于存储数据,图4中一个存储空间组,也叫做副本组(BlockGroup)对应3个数据节点,这仅为示例,还可以对应更多或更少的数据节点,每个数据节点可以对应一个硬盘(DISK),每个数据节点中可以有多个可配置的存储空间(Block),每个Block具有唯一标识(Block ID)可以根据第一个Block ID和偏移量来确定具体的存储位置。
所述卷管理节点用于响应于接收到所述客户端的创建卷请求,创建一个或多个卷,每个卷为可被至少一个容器挂载的文件***的实例,其中,每个文件***属性包括索引节点及对应的索引节点标识信息,所述索引节点标识信息包括文件名以及以下任意一种或多种:文件大小、创建时间、修改时间、链接数、用户、用户组和文件权限,其中,所述链接数指文件有几个硬链接(即一个文件的一个或多个文件名,用于将文件名和文件***使用的节点号链接起来),用户可以为用户名等(如root、admin等),用户组指具有某些相同属性的用户构成的组。图4中只示例性举出了一个卷管理节点(Volume manager),可以存在多个卷管理节点。其中,每个卷具有一个元数据节点表(MataData Table)以及与该元数据节点表对应的多个副本组(BlockGroup)。
在创建卷的过程中,需要客户端和卷管理节点进行数据交互,生成至少一个卷,该卷中存储有元数据节点表和副本组(BlockGroup),其中,元数据节点表和至少一个副本组(BlockGroup)相互关联。
由于每个volume对应一个RaftGroup(RaftGroup可以由数个meta range组成,如三个meta range组成),每个volume拥有多个BlockGroup。每个metanode上面可以承载n个meta range,每个datanode上面可以承载n个block。因此,存在多种组合可能,因此,整个集群中,可以创建众多的volume。
具体地,每个volume有一个自己的名称空间(namespace),包括1个元数据节点表和多个blockgroup,根据集群的规模,可以创建众多、大小不一的volume。每个volume都是一个文件***的实例,拥有自身文件***属性、支持标准posix协议、可被fuse挂载。
volume通过客户端挂载之后,即具备了文件***功能,可以当作本地目录使用。
文件的元数据信息,包括文件名、文件大小、修改日期、文件权限等元数据信息,存储在k-v map中。
所述文件的数据按照一致性哈希值分布在数据节点的存储空间中,或者,所述文件的数据随机分布在数据节点的存储空间中。
通过上述架构,每个volume都可以被一个或多个容器直接挂载使用,volume的个数根据集群规模可以创建成千上万个,且性能优秀。
图4中的曲线表示分布式文件***的数据流向。
在一个实施例中,以在容器中写入数据为例对数据流向进行说明。
首先,用户通过客户端挂载某个volume,比如/mnt目录,客户端通过fuse接管了用户的打开文件、读写文件等操作。所述客户端根据挂载的卷中的信息确定要写入数据对应的文件名所在的元数据节点,然后,向该元数据节点发送远程过程调用协议消息。
所述元数据节点用于响应于接收到所述客户端发送的远程过程调用协议消息,将所述远程过程调用协议消息对应的索引节点标识信息和数据的数据块标识信息写入所述第一对应关系,并返回索引节点标识对应数据的存储位置以及文件打开成功消息,其中,所述远程过程调用协议消息包括索引节点标识和数据的数据块标识。
具体地,当用户打开一个文件,客户端会向metanode发起grpc消息,申请索引节点标识(InodeID)、申请第一个数据块标识(ChunkID)、并将索引节点信息(InodeInfo)和数据块信息(ChunkInfo)写入metanode的k-v map中,metanode会向客户端返回打开文件成功的消息,客户端会生成一个文件句柄返回给fuse,这个流程完成了打开文件的流程。这其中,metanode之间会通过raft协议保证k-v map存储的数据一致性,多个metanode也保证了元数据的报可用。
所述数据节点用于响应于接收到所述客户端发送的写入数据,将所述写入数据存储在指定位置,其中,所述写入数据的数据块信息中包括所述客户端对应容器已挂载的卷对应的数据的存储位置,所述指定位置为与所述写入数据对应的数据的存储位置,所述写入数据对应的数据的存储位置包括IP地址、接口和存储空间标识。
具体地,用户开始向文件写入数据,每个数据块信息(chunkinfo)都包含申请好的一个副本组(blockgroup),blockgroup里面包含了三个datanode的地址(ip),接口(port)和存储空间标识(blockID),通过这几个信息,客户端向三个datanode分别写入文件实际数据。这其中,三个副本数据的写入保证了文件数据的高可靠性。这样就完成了在容器中数据的写入过程。
其中,所述数据的数据块标识信息包括一个数据块组,所述数据块组包括数个数据节点的IP地址、接口和存储空间标识。当将所述远程过程调用协议消息中包含的索引节点标识和数据的数据块标识写入所述第一对应关系之后,所述元数据节点通过一致性复制协议使得其余元数据节点存储的第一对应关系保持一致。
在另一个实施例中,以从容器中读取数据为例对数据流向进行说明。
所述客户端给所述元数据节点发送存储位置请求。
所述元数据节点用于响应于接收到所述客户端发送的存储位置请求,返回与所述存储位置请求对应的数据的存储位置,其中,所述存储位置请求包括文件名。
所述数据节点用于响应于接收到所述客户端发送的数据读取请求,返回与所述数据读取请求对应的数据的数据块,其中,所述数据读取请求包括数据的存储位置以及偏移量。
具体地,用户可以在其他的物理机或者容器中并行多次挂载该volume,当用户从挂载的目录中读取文件时,首先会去metanode获取文件元数据信息,包括文件大小、文件数据块信息(chunkinfos)等信息,获取到这些信息后,客户端就可以定位到该文件的数据分布在哪些datanode,并根据用户读文件时的入参,比如偏移量,来定位到该从哪个blockgroup的哪个chunk开始读取。这其中,多个挂载点可以同时读取相同或不同的文件,实现了volume的可共享性。chunkinfo里面会包含该chunk所属blockgroup的ID,通过ID可以定位到blockgroup。
其中,文件由多个数据块组成,每个数据块的大小为设定大小。例如,文件由多个chunk组成,每个chunk 64MB。
每个卷对应一个元数据存储空间组以及多个数据存储空间组,其中,所述元数据存储空间组位于所述元数据节点中,所述多个数据存储空间组位于所述数据节点中。
本公开提供的分布式文件***中,所述容器的存储空间可达到PB级别。
图5示意性示出了根据本公开实施例的适于分布式文件***的计算机***的方框图。图5示出的计算机***仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,根据本公开实施例的计算机***500包括处理器501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。处理器501例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器501还可以包括用于缓存用途的板载存储器。处理器501可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 503中,存储有***500操作所需的各种程序和数据。处理器501、ROM 502以及RAM 503通过总线504彼此相连。处理器501通过执行ROM 502和/或RAM 503中的程序来执行如下操作:响应于接收到所述客户端的创建卷请求,创建一个或多个卷,每个卷为可被至少一个容器挂载的文件***的实例,其中,每个文件***属性包括索引节点及对应的索引节点标识信息,所述索引节点标识信息包括文件名以及以下任意一种或多种:文件大小、创建时间、修改时间、链接数、用户、用户组和文件权限。需要注意,所述程序也可以存储在除ROM 502和RAM 503以外的一个或多个存储器中。处理器501也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例各种操作。
根据本公开的实施例,***500还可以包括输入/输出(I/O)接口505,输入/输出(I/O)接口505也连接至总线504。***500还可以包括连接至I/O接口505的以下部件中的一项或多项:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被处理器501执行时,执行本公开实施例的***中限定的上述功能。根据本公开的实施例,上文描述的***、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/***中所包含的;也可以是单独存在,而未装配入该设备/装置/***中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现如下所述的操作:响应于接收到所述客户端的创建卷请求,创建一个或多个卷,每个卷为可被至少一个容器挂载的文件***的实例,其中,每个文件***属性包括索引节点及对应的索引节点标识信息,所述索引节点标识信息包括文件名以及以下任意一种或多种:文件大小、创建时间、修改时间、链接数、用户、用户组和文件权限。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 502和/或RAM 503和/或ROM 502和RAM 503以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (12)
1.一种分布式文件***,包括:
客户端、元数据节点、数据节点和卷管理节点;
所述客户端对应一个或多个容器;
所述元数据节点用于存储第一对应关系,所述第一对应关系为文件***属性与数据的存储位置的对应关系,所述数据为文件中的实际数据;
所述数据节点用于存储数据;以及
所述卷管理节点用于响应于接收到所述客户端的创建卷请求,创建一个或多个卷,每个卷为可被至少一个容器挂载的文件***的实例,其中,每个文件***属性包括索引节点及对应的索引节点标识信息,所述索引节点标识信息包括文件名,以及以下任意一种或多种:文件大小、创建时间、修改时间、链接数、用户、用户组和文件权限。
2.根据权利要求1所述的***,其中:
所述元数据节点还用于响应于接收到所述客户端发送的远程过程调用协议消息,将所述远程过程调用协议消息对应的索引节点标识信息和数据的数据块标识信息写入所述第一对应关系,并返回索引节点标识对应数据的存储位置以及文件打开成功消息,其中,所述远程过程调用协议消息包括索引节点标识和数据的数据块标识;以及
所述数据节点还用于响应于接收到所述客户端发送的写入数据,将所述写入数据存储在指定位置,其中,所述写入数据的数据块信息中包括所述客户端对应容器已挂载的卷对应的数据的存储位置,所述指定位置为与所述写入数据对应的数据的存储位置,所述写入数据对应的数据的存储位置包括IP地址、接口和存储空间标识。
3.根据权利要求2所述的***,其中,所述数据的数据块标识信息包括一个数据块组,所述数据块组包括数个数据节点的IP地址、接口和存储空间标识。
4.根据权利要求2所述的***,其中,当将所述远程过程调用协议消息中包含的索引节点标识和数据的数据块标识写入所述第一对应关系之后,所述元数据节点通过一致性复制协议使得其余元数据节点存储的第一对应关系保持一致。
5.根据权利要求1所述的***,其中:
所述元数据节点还用于响应于接收到所述客户端发送的存储位置请求,返回与所述存储位置请求对应的数据的存储位置,其中,所述存储位置请求包括文件名;以及
所述数据节点还用于响应于接收到所述客户端发送的数据读取请求,返回与所述数据读取请求对应的数据的数据块,其中,所述数据读取请求包括数据的存储位置以及偏移量。
6.根据权利要求5所述的***,其中,文件由多个数据块组成,每个数据块的大小为设定大小。
7.根据权利要求1所述的***,其中,每个卷对应一个元数据存储空间组以及多个数据存储空间组,其中,所述元数据存储空间组位于所述元数据节点中,所述多个数据存储空间组位于所述数据节点中。
8.根据权利要求1所述的***,其中:
所述文件的数据按照一致性哈希值分布在数据节点的存储空间中;或者
所述文件的数据随机分布在数据节点的存储空间中。
9.根据权利要求1所述的***,其中,所述容器的存储空间可达到PB级别。
10.根据权利要求1所述的***,其中,所述客户端具有至少一个应用、虚拟文件***、用户空间文件***和用户空间文件***的接口库;
所述虚拟文件***用于给所述至少一个应用创建容器;
所述用户空间文件***基于所述用户空间文件***的接口库与所述元数据节点和/或所述数据节点对所述容器中的数据信息进行交互。
11.一种计算机***,包括:
一个或多个处理器;
存储装置,用于存储可执行指令,所述可执行指令在被所述处理器执行时,实现如下所述的操作:
响应于接收到所述客户端的创建卷请求,创建一个或多个卷,每个卷为可被至少一个容器挂载的文件***的实例,其中,每个文件***属性包括索引节点及对应的索引节点标识信息,所述索引节点标识信息包括文件名,以及以下任意一种或多种:文件大小、创建时间、修改时间、链接数、用户、用户组和文件权限。
12.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时,实现如下所述的操作:
响应于接收到所述客户端的创建卷请求,创建一个或多个卷,每个卷为可被至少一个容器挂载的文件***的实例,其中,每个文件***属性包括索引节点及对应的索引节点标识信息,所述索引节点标识信息包括文件名以及以下任意一种或多种:文件大小、创建时间、修改时间、链接数、用户、用户组和文件权限。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811487910.1A CN111290826A (zh) | 2018-12-06 | 2018-12-06 | 分布式文件***、计算机***和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811487910.1A CN111290826A (zh) | 2018-12-06 | 2018-12-06 | 分布式文件***、计算机***和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111290826A true CN111290826A (zh) | 2020-06-16 |
Family
ID=71022780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811487910.1A Pending CN111290826A (zh) | 2018-12-06 | 2018-12-06 | 分布式文件***、计算机***和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111290826A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767118A (zh) * | 2020-06-24 | 2020-10-13 | 中国工商银行股份有限公司 | 基于分布式文件***的容器存储空间处理方法及装置 |
CN111858474A (zh) * | 2020-06-29 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 分布式存储***Inode号分配管理方法及相关组件 |
CN112882653A (zh) * | 2021-01-26 | 2021-06-01 | 北京金山云网络技术有限公司 | 存储卷创建方法、装置及电子设备 |
CN113312316A (zh) * | 2021-07-28 | 2021-08-27 | 阿里云计算有限公司 | 数据处理方法及装置 |
CN113778973A (zh) * | 2021-01-21 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 数据存储方法和装置 |
CN113867942A (zh) * | 2021-09-12 | 2021-12-31 | 苏州浪潮智能科技有限公司 | 一种卷的挂载方法、***及计算机可读存储介质 |
CN114691357A (zh) * | 2022-03-16 | 2022-07-01 | 东云睿连(武汉)计算技术有限公司 | Hdfs容器化服务***、方法、装置、设备及存储介质 |
CN115098467A (zh) * | 2022-07-18 | 2022-09-23 | 重庆紫光华山智安科技有限公司 | 数据存储方法、装置、存储节点及存储介质 |
CN115391238A (zh) * | 2022-10-31 | 2022-11-25 | 深圳万物安全科技有限公司 | 持久卷的静态制备方法、装置、终端设备与介质 |
CN115617763A (zh) * | 2022-09-23 | 2023-01-17 | 中电金信软件有限公司 | 数据处理方法、装置、电子设备及存储介质 |
WO2023041047A1 (zh) * | 2021-09-17 | 2023-03-23 | 华为云计算技术有限公司 | 一种基于云技术的文件服务提供方法及相关设备 |
WO2023093634A1 (zh) * | 2021-11-25 | 2023-06-01 | 北京字节跳动网络技术有限公司 | 数据存储方法、装置、可读介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080189343A1 (en) * | 2006-12-29 | 2008-08-07 | Robert Wyckoff Hyer | System and method for performing distributed consistency verification of a clustered file system |
CN107196788A (zh) * | 2017-05-02 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 一种埋点数据的处理方法、装置、服务器及客户端 |
CN107844539A (zh) * | 2017-10-19 | 2018-03-27 | 广州阿里巴巴文学信息技术有限公司 | 隔离数据管理方法、装置、***、计算设备及存储介质 |
CN108268299A (zh) * | 2016-12-29 | 2018-07-10 | 航天信息股份有限公司 | 一种基于OpenStack云平台的Docker共享存储解决方法 |
CN108681434A (zh) * | 2018-05-24 | 2018-10-19 | 中科边缘智慧信息科技(苏州)有限公司 | 一种容器持久存储挂载方法 |
-
2018
- 2018-12-06 CN CN201811487910.1A patent/CN111290826A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080189343A1 (en) * | 2006-12-29 | 2008-08-07 | Robert Wyckoff Hyer | System and method for performing distributed consistency verification of a clustered file system |
CN108268299A (zh) * | 2016-12-29 | 2018-07-10 | 航天信息股份有限公司 | 一种基于OpenStack云平台的Docker共享存储解决方法 |
CN107196788A (zh) * | 2017-05-02 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 一种埋点数据的处理方法、装置、服务器及客户端 |
CN107844539A (zh) * | 2017-10-19 | 2018-03-27 | 广州阿里巴巴文学信息技术有限公司 | 隔离数据管理方法、装置、***、计算设备及存储介质 |
CN108681434A (zh) * | 2018-05-24 | 2018-10-19 | 中科边缘智慧信息科技(苏州)有限公司 | 一种容器持久存储挂载方法 |
Non-Patent Citations (1)
Title |
---|
匿名: "基于GlusterFS实现Docker 集群的分布式存储", Retrieved from the Internet <URL:http://www.uml.org.cn/yunjisuan/201705033.asp> * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767118A (zh) * | 2020-06-24 | 2020-10-13 | 中国工商银行股份有限公司 | 基于分布式文件***的容器存储空间处理方法及装置 |
CN111767118B (zh) * | 2020-06-24 | 2024-06-18 | 中国工商银行股份有限公司 | 基于分布式文件***的容器存储空间处理方法及装置 |
CN111858474A (zh) * | 2020-06-29 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 分布式存储***Inode号分配管理方法及相关组件 |
CN111858474B (zh) * | 2020-06-29 | 2022-12-27 | 苏州浪潮智能科技有限公司 | 分布式存储***Inode号分配管理方法及相关组件 |
CN113778973B (zh) * | 2021-01-21 | 2024-04-05 | 北京沃东天骏信息技术有限公司 | 数据存储方法和装置 |
CN113778973A (zh) * | 2021-01-21 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 数据存储方法和装置 |
CN112882653A (zh) * | 2021-01-26 | 2021-06-01 | 北京金山云网络技术有限公司 | 存储卷创建方法、装置及电子设备 |
CN113312316A (zh) * | 2021-07-28 | 2021-08-27 | 阿里云计算有限公司 | 数据处理方法及装置 |
CN113312316B (zh) * | 2021-07-28 | 2022-01-04 | 阿里云计算有限公司 | 数据处理方法及装置 |
CN113867942A (zh) * | 2021-09-12 | 2021-12-31 | 苏州浪潮智能科技有限公司 | 一种卷的挂载方法、***及计算机可读存储介质 |
CN113867942B (zh) * | 2021-09-12 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 一种卷的挂载方法、***及计算机可读存储介质 |
WO2023041047A1 (zh) * | 2021-09-17 | 2023-03-23 | 华为云计算技术有限公司 | 一种基于云技术的文件服务提供方法及相关设备 |
WO2023093634A1 (zh) * | 2021-11-25 | 2023-06-01 | 北京字节跳动网络技术有限公司 | 数据存储方法、装置、可读介质及电子设备 |
CN114691357A (zh) * | 2022-03-16 | 2022-07-01 | 东云睿连(武汉)计算技术有限公司 | Hdfs容器化服务***、方法、装置、设备及存储介质 |
CN114691357B (zh) * | 2022-03-16 | 2022-12-27 | 东云睿连(武汉)计算技术有限公司 | Hdfs容器化服务***、方法、装置、设备及存储介质 |
CN115098467A (zh) * | 2022-07-18 | 2022-09-23 | 重庆紫光华山智安科技有限公司 | 数据存储方法、装置、存储节点及存储介质 |
CN115617763A (zh) * | 2022-09-23 | 2023-01-17 | 中电金信软件有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN115391238B (zh) * | 2022-10-31 | 2023-03-14 | 深圳万物安全科技有限公司 | 持久卷的静态制备方法、装置、终端设备与介质 |
CN115391238A (zh) * | 2022-10-31 | 2022-11-25 | 深圳万物安全科技有限公司 | 持久卷的静态制备方法、装置、终端设备与介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111290826A (zh) | 分布式文件***、计算机***和介质 | |
US20230333942A1 (en) | Tiered cloud storage for different availability and performance requirements | |
JP5775177B2 (ja) | クローンファイル作成方法と、それを用いたファイルシステム | |
US8515911B1 (en) | Methods and apparatus for managing multiple point in time copies in a file system | |
CN104020961B (zh) | 分布式数据存储方法、装置及*** | |
US20130218934A1 (en) | Method for directory entries split and merge in distributed file system | |
JP2019519025A (ja) | 分散システムにおける範囲の分割および移動 | |
US20180253262A1 (en) | Systems and methods for list retrieval in a storage device | |
KR101991537B1 (ko) | 자율형 네트워크 스트리밍 기법 | |
US20140149702A1 (en) | Cloud scale directory services | |
US9600486B2 (en) | File system directory attribute correction | |
US10929246B2 (en) | Backup capability for object store used as primary storage | |
CN108427677B (zh) | 一种对象访问方法、装置及电子设备 | |
US10620871B1 (en) | Storage scheme for a distributed storage system | |
WO2019047976A1 (zh) | 网络文件管理方法、终端及计算机可读存储介质 | |
EP4173181B1 (en) | Container orchestration system (cos) services discovery across multiple cos clusters based on cos cluster domain name system | |
US20230101774A1 (en) | Techniques for performing clipboard-to-file paste operations | |
US12026066B2 (en) | Backing up data for a namespace assigned to a tenant | |
CN113179670A (zh) | 文档存储和管理 | |
US10545667B1 (en) | Dynamic data partitioning for stateless request routing | |
US20230055511A1 (en) | Optimizing clustered filesystem lock ordering in multi-gateway supported hybrid cloud environment | |
CN111225003A (zh) | 一种nfs节点配置方法和装置 | |
US11838362B2 (en) | Data object delivery for distributed cluster computing | |
CN115510016A (zh) | 一种基于目录分片的客户端应答方法、装置及介质 | |
US8943019B1 (en) | Lookup optimization during online file system migration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |