CN117348808A - 分布式块存储的i/o本地化方法、装置和设备 - Google Patents
分布式块存储的i/o本地化方法、装置和设备 Download PDFInfo
- Publication number
- CN117348808A CN117348808A CN202311279086.1A CN202311279086A CN117348808A CN 117348808 A CN117348808 A CN 117348808A CN 202311279086 A CN202311279086 A CN 202311279086A CN 117348808 A CN117348808 A CN 117348808A
- Authority
- CN
- China
- Prior art keywords
- volume
- data block
- host
- sub
- target
- 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
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000004807 localization Effects 0.000 title claims abstract description 50
- 230000015654 memory Effects 0.000 claims description 32
- 238000013508 migration Methods 0.000 claims description 30
- 230000005012 migration Effects 0.000 claims description 30
- 238000012545 processing Methods 0.000 claims description 29
- 238000013507 mapping Methods 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000002688 persistence Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000004927 fusion Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 239000003999 initiator Substances 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 239000011148 porous material Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
Abstract
本发明公开一种分布式块存储的I/O本地化方法、装置和设备,该方法包括:配置共享文件系统,共享文件系统中包括为多个主机创建的根共享目录卷,为每个主机创建一个子卷,并将多个子卷挂载到根共享目录卷中;在根共享目录卷中配置至少一个虚拟磁盘,每个虚拟磁盘文件配置在指定子卷,子卷的卷控制器属性值关联其所属的主机上,当接收到多个主机中任一主机的I/O数据请求时,根据所属的虚拟磁盘文件所在子卷,从子卷所属的卷控制器属性值对应的主机上的磁盘块中获取数据,本方法在共享文件系统中为每个主机创建子卷,且所有子卷都挂载到共享目录卷中,所以对外每个主机上创建的子卷位于本主机上,使得本主机的虚拟磁盘文件在卷粒度上具备I/O本地化功能。
Description
技术领域
本发明涉及存储技术领域,尤其是涉及一种分布式块存储的I/O本地化方法、装置和设备。
背景技术
分布式存储,是指将数据分散存储在多台独立的设备上。采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,不但提高了系统的可靠性、可用性和存取效率,还易于扩展。分布式存储的副本机制类似集中式存储的RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)简称为“磁盘阵列”,一般有两副本或三副本。存储集群的可用数量为总磁盘容量或副本个数。通常将不同的副本分布在不同的节点上。
超融合是计算、存储、网络虚拟化融合的一种产品形态,其特点是集群中的主机既是计算角色—承载业务虚拟机运行,又是存储节点角色—为分布式存储集群的节点,业务虚拟机的虚拟磁盘放置在分布式块存储上。
从虚拟磁盘的表现形式来看,会有两种形态,一种是虚拟磁盘文件,如qcow2文件格式,另一种是虚拟磁盘裸块形式。如图1所示,主机A作为发起程序iSCSI initiator(即是一种软件或硬件组件,用于将主机设备连接到iSCSI存储阵列或存储服务器)连接到一个iSCSI LUN(分布式iscsi target),形成主机A上的一个块设备,比如dev/sda,虚拟磁盘为主机host上的/dev/sda,形式为裸块形式的虚拟磁盘。
虚拟磁盘文件形态是部署在共享LUN的共享文件系统上。具体来说,如图2所示,主机A、主机B、主机C共同连接到一个共享iSCSI LUN(即是客户端服务器上面的一款连接分布式iSCSI target),在共享iSCSI LUN上建立共享文件系统,如ocfs2,虚拟磁盘是共享文件系统上的一个文件。相对于虚拟磁盘裸块形态,虚拟磁盘文件形态更方便用于复制,因此,更常用。目前,分布式块存储仅支持卷粒度输入/输出即I/O本地化,因此只适用于虚拟磁盘裸块形态。而对虚拟磁盘文件形态,则不支持卷粒度的I/O本地化。
发明内容
有鉴于此,本发明提供了一种分布式块存储的I/O本地化方法、装置和设备,以解决分布式存储的不同主机下的共享LUN应用场景中,虚拟磁盘粒度的I/O本地化问题。
第一方面,本发明提供了一种分布式块存储的I/O本地化方法,方法包括:
配置共享文件系统,所述共享文件系统中包括为多个主机创建的根共享目录卷,所述共享文件系统中配置至少一个虚拟磁盘文件,每个所述主机都具有计算和存储能力;
为每个所述主机创建一个子卷,并将多个所述子卷挂载到所述根共享目录卷中,以及在所述根共享目录卷中配置至少一个虚拟磁盘,每个虚拟磁盘文件配置至主机对应的子卷上,每个子卷上包括一个卷控制器属性值,且每个所述卷控制器属性值位于其所在子卷所属的主机上;
当接收到所述多个主机中任一主机的I/O数据请求时,根据所属的虚拟磁盘文件所在子卷,从所述子卷所属的卷控制器属性值对应的主机上的磁盘块中获取数据。
结合第一方面,在第一方面的一种可能的实施方式中,所述为每个所述主机创建一个子卷,并将多个所述子卷挂载到所述根共享目录卷中,包括:
为每个所述主机创建一个子卷和一个卷控制器,其中,每个所述子卷在所述根共享目录卷中对应一个卷路径;
利用共享文件系统技术将每个所述卷路径以及建立每个所述子卷和子卷路径之间的映射关系挂载到所述根共享目录卷中。
第二方面,本发明还提供了另一种分布式块存储的I/O本地化方法,该方法包括:
在共享文件系统中为集群中多个主机中的每个主机配置一定数量的数据块资源池,每个所述数据块资源池用于存储I/O数据块;数据块资源池中包括至少一个数据块地址;每个地址可用于分配一个数据块,在超融合场景下,集群中的每个主机都具有计算和存储能力;
为每个所述主机创建一个子卷,并将多个所述子卷挂载到所述共享文件系统的根共享目录卷中,其中,每个所述子卷上包括一个卷控制器属性值,且所述卷控制器属性值关联其所在子卷所属的主机上;
当接收I/O数据块写请求时,判断所述写请求对应的目标数据块是否已分配IP地址;
如果否,则从目标数据块资源池中获取目标数据块地址,并将所述目标数据块写入所述目标数据块地址对应的所述目标主机的磁盘块中,作为多副本存储的第一副本,所述目标数据块的其他副本从所述集群的其他主机的数据块资源池中分配数据块;所述目标数据块资源池是所述目标主机配置的数据块资源池。
结合第二方面,在第二方面的一种可能的实施方式中,方法还包括:当接收到目标数据块的读请求时,从所述目标主机的磁盘块中读取所述目标数据块。
结合第二方面,在第二方面的一种可能的实施方式中,所述判断所述写请求对应的目标数据块是否已分配IP地址之前,还包括:解析所述I/O数据块写请求得到目标主机的IP地址;根据所述IP地址确定所述目标主机。
结合第二方面,在第二方面的一种可能的实施方式中,所述将所述目标数据块写入所述目标数据块地址对应的所述目标主机的磁盘块中之后,还包括:计算分配给所述目标主机的剩余数据块资源池,所述剩余数据块资源池为分配给所述目标主机的所有数据块资源池减去存储当前数据块所占资源后的剩余块资源池;继续获取I/O数据块写请求,并在所述剩余数据块资源池中为所述数据块分配数据块地址;当所述剩余数据块资源池都被分配数据块后,为所述目标主机分配新的数量的数据块资源池。
结合第二方面,在第二方面的一种可能的实施方式中,还包括:接收所述多个主机中任一主机发起的I/O访问请求,所述I/O访问请求用于请求获取元数据;解析所述I/O访问请求得到I/O地址,并将所述I/O地址转换为数据块地址;根据所述数据块地址查找所述元数据所在的所述数据块资源池,并通过所述数据块资源池中的数据块地址读取所述元数据。
其中,当读取所述元数据时,在所述元数据的数据结构中配置参考字段,所述参考字段用于标记所述元数据被访问读取的频繁程度。
结合第二方面,在第二方面的一种可能的实施方式中,还包括:当检测到主机发生宕机时,生成并发送迁移命令,所述迁移命令用于确定所述主机在所述共享文件系统中备份数据的至少一个数据块资源池,并将所述数据块资源池中的数据块迁移至其他正常运行的主机上。
其中,发生数据迁移的所述数据块资源池中的数据块为在所述参考字段中被标记访问频繁程度高的数据块。
第三方面,本发明还提供一种分布式块存储的I/O本地化装置,该装置包括:
第一配置模块,用于配置共享文件系统,所述共享文件系统中包括为多个主机创建的根共享目录卷,所述共享文件系统中配置至少一个虚拟磁盘文件,每个主机都具有计算和存储能力;
第一创建模块,用于为每个所述主机创建一个子卷,并将多个所述子卷挂载到所述根共享目录卷中,以及在所述根共享目录卷中配置至少一个虚拟磁盘,其中,每个所述子卷上包括一个卷控制器属性值,且每个所述卷控制器属性值关联其所在子卷所属的主机上;
第一接收模块,用于接收到所述多个主机中任一主机的I/O数据请求,所述I/O数据请求用于确定虚拟磁盘文件;
处理模块,用于根据所属的虚拟磁盘文件所在子卷,从所述子卷所属的卷控制器属性值对应的主机上的磁盘块中获取数据。
第四方面,本发明还提供另一种分布式块存储的I/O本地化装置,装置包括:
第二配置模块,用于在共享文件系统中为集中多个主机中的每个主机配置一定数量的数据块资源池,每个所述数据块资源池用于存储I/O数据块,每个所述主机都具有计算和存储能力;
第二创建模块,用于为每个所述主机创建的自身卷控制器所在子卷,并将多个所述子卷挂载到所述共享文件系统的根共享目录卷中,每个所述子卷上包括一个卷控制器属性值,且每个所述卷控制器属性值关联其所在子卷所属主机上;
第二接收模块,用于接收I/O数据块写请求;
判断模块,用于判断所述写请求对应的目标数据块是否已分配IP地址,所述目标数据块资源池是所述目标主机配置的数据块资源池;
写入模块,用于将所述目标数据块写入所述目标数据块地址对应的所述目标主机的磁盘块中,作为多副本存储的第一副本,所述目标数据块的其他副本从所述集群的其他主机的数据块资源池中分配数据块。
第五方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面、第二方面或其对应的任一实施方式所述的分布式块存储的I/O本地化方法。
此外,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面、第二方面或其对应的任一实施方式的分布式块存储的I/O本地化方法。
本实施例提供的方法,相对于卷粒度的I/O本地化,提出适用于超融合场景下共享LUN下的虚拟磁盘文件形态的细粒度的I/O本地化,在共享文件系统中为多个主机创建根共享目录卷,并创建每个主机对应的子卷,并将创建的多个子卷挂载到根共享目录卷中,且每个虚拟磁盘文件被配置至在主机对应的子卷上,每个子卷上包括一个卷控制器属性值,且每个卷控制器属性值关联其所在子卷所属的主机上。当接收到任一主机的I/O数据请求时,根据所属的虚拟磁盘文件所在子卷,从子卷所属的卷控制器属性值对应的主机上的磁盘块中获取数据。由于主机的虚拟磁盘文件配置在主机对应的subvol子卷上,且该主机的虚拟磁盘对应的子卷subvol与I/O本地化节点是同一节点,所以该主机上的虚拟磁盘的I/O就具有I/O本地化能力,可以从子卷所属的卷控制器属性值对应的主机上的磁盘块中获取数据,实现了以虚拟磁盘文件形态在卷粒度上的I/O本地化存储。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一种虚拟磁盘裸块形态的结构示意图;
图2是本发明提供的一种虚拟磁盘文件形态的结构示意图;
图3是本发明实施例提供的一种I/O本地化的虚拟磁盘的结构示意图;
图4是本发明实施例提供的一种分布式块存储的I/O本地化方法的流程图;
图5是本发明实施例提供的另一种分布式块存储的I/O本地化方法的流程图;
图6是本发明实施例提供的一种I/O本地化装置的结构框图;
图7是本发明实施例提供的另一种I/O本地化装置的结构框图;
图8是本发明实施例提供的一种计算机设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先介绍本申请技术方案的应用场景以及相关技术术语。
(1)分布式存储
分布式存储是一种将数据分散存储在多个物理或逻辑设备(如服务器、磁盘、存储节点等)上的存储系统。与传统的集中式存储系统不同,分布式存储将数据划分成多个块或对象,并在多个节点上进行存储和管理,以实现更高的可靠性、可扩展性和性能。
在分布式存储系统中,数据通常被分割成多个副本并存储在不同的节点上,以确保数据的冗余和容错性。这意味着当一个节点或磁盘发生故障时,系统可以从其他节点中的副本中恢复数据,避免数据丢失。
另外,分布式存储系统还能通过在不同节点之间并行地处理数据来提供更高的性能。这种并行处理可以提高数据的读写速度和处理能力,从而提供更好的用户体验和响应时间。
(2)I/O本地化
I/O本地化是指将输入/输出(I/O)操作限制在本地计算资源上进行处理,而不是通过网络传输到远程计算资源进行处理。
在分布式系统或云计算环境中,通常存在多个计算节点或虚拟机,它们之间通过网络互连。当需要进行I/O操作时,可以选择将I/O操作本地化,即在发起I/O操作的节点上直接处理该操作,而不需要通过网络传输到其他节点进行处理。
I/O本地化可以提高I/O操作的效率和性能,因为它避免了网络的延迟和带宽限制。此外,通过将I/O操作本地化,可以减少网络通信的开销,并减轻整个系统的负载。
(3)虚拟磁盘和虚拟磁盘文件
虚拟磁盘(Virtual Disk)是一种在计算机系统中通过软件模拟的逻辑磁盘。它并非实际的物理硬盘,而是通过软件技术将一部分物理存储空间合并、划分或模拟为一个独立的逻辑单元。虚拟磁盘可以在物理存储介质上(如硬盘、固态硬盘等)创建一个或多个虚拟的磁盘映像文件,也可以使用虚拟化技术将物理存储资源划分为多个逻辑磁盘。
虚拟磁盘的一些常见的用途包括:虚拟机(Virtual Machine,VM):在虚拟化环境中,虚拟机可以使用虚拟磁盘来模拟一个独立的硬盘,为虚拟机提供存储空间和文件系统,虚拟机操作系统将其视为实际硬盘。
虚拟磁盘文件形态是指在计算机系统中,将磁盘的内容以文件的形式保存在主机的文件系统中。虚拟磁盘文件通常具有特定的格式和扩展名,可以模拟物理磁盘的功能,并在虚拟化环境中被虚拟机或其他虚拟化技术使用。
虚拟磁盘文件形态常见的格式包括:
VMDK(VMware Virtual Disk):VMware虚拟机的磁盘文件格式。
VHD(Virtual Hard Disk):Microsoft Hyper-V虚拟机的磁盘文件格式。
VDI(VirtualBox Disk Image):Oracle VirtualBox虚拟机的磁盘文件格式。
QCOW(QEMUCopy On Write):QEMU和KVM虚拟机的磁盘文件格式。
通过虚拟磁盘文件,可以将磁盘的内容以文件的形式保存在宿主机上,实现对虚拟机的磁盘访问和管理。同时,虚拟磁盘文件也可以被复制、迁移和备份,提供了便捷的管理和维护方式。
虚拟磁盘裸块形式(Raw Block Virtual Disk)是指一种虚拟磁盘的格式,它直接映射到底层物理磁盘的原始数据块。与传统的虚拟磁盘格式(如虚拟磁盘文件)不同,裸块形式的虚拟磁盘不包含额外的文件结构或元数据,而是直接将数据块映射到物理磁盘上的扇区。
(4)共享LUN
共享LUN表示多个主机或虚拟机共享访问的逻辑单元(Logical Unit Number)。一个LUN可以被视为一个虚拟磁盘,在物理存储设备上分配一部分容量给多个主机或虚拟机使用。
共享LUN允许多个主机或虚拟机同时读写相同的数据,从而实现数据的共享和协作。在分布式存储环境中,共享LUN通常由存储系统提供,主机或虚拟机通过网络连接到存储系统来访问共享LUN。而在虚拟化环境中,共享LUN可以被多个虚拟机同时挂载和使用,实现虚拟机之间的数据共享和协同工作。
本申请的技术方案可应用于超融合的分布式存储领域,其中,超融合指的是将计算、存储和网络等多个关键功能整合到一个统一的分布式存储系统中。超融合存储系统将分布式存储和超融合架构相结合,以提供更高级别的整合和集成。
超融合存储系统通常由多个节点组成,每个节点具备计算和存储功能。这些节点在集群中协同工作,相互协调和管理存储资源,并提供高可用性、高性能和可扩展性。
目前,基于超融合的分布式块存储中,分布式块存储形式仅支持卷粒度的I/O本地化,因此只适用于虚拟磁盘裸块形态。而对虚拟磁盘文件形态,则不支持(卷粒度)I/O本地化,
为了解决上述问题,本发明实施例提供了一种分布式块存储的I/O本地化方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
参见图3所示,为本发明实施例提供的一种I/O本地化的虚拟磁盘的示意图,应用于超融合分布式存储的技术场景,该场景中包括至少一个主机,比如包括主机A、主机B和主机C,每个主机对应的IP地址分别是:1.1.1.1、1.1.1.2、1.1.1.3。其中,3个主机共享文件系统,该共享文件系统上包括多个数据盘。
首先,设置预设条件,本实施例设置条件包括:条件1:假设本实施例中,分布式存储采用多副本机制,以两个副本为例。另外,预定义集群有3个主机,分别为主机A、主机B、主机C,且在超融合场景下,主机A、主机B和主机C都具有计算和存储能力。
其中,主机A上的虚拟机名为a,虚拟机a上设有一个虚拟磁盘,该虚拟磁盘名称为a1;类似地,主机B上的虚拟机名为b,虚拟机b上设有一个虚拟磁盘,该虚拟磁盘名称为b1;主机C上的虚拟机名为c,虚拟机c上设有一个虚拟磁盘,虚拟磁盘名称为c1。
另外,还设置根共享目录卷(简称“共享卷”,英文:sharevol)。
此外,在分布式存储系统中,还包括至少一个子卷,英文“subvol”是“subvolume”的缩写。子卷是指在分布式文件系统中的一个独立的逻辑卷或区域,用于管理和组织文件和数据。
子卷是将整个分布式存储空间(共享卷sharevol)划分为逻辑上的部分,以便更好地管理和控制数据。每个子卷可以被视为一个独立的文件系统或存储空间,具有自己的权限、配额和文件层次结构。本示例中,子卷subvol a至子卷subvol c是包含虚拟磁盘a1至虚拟磁盘c1的三个子卷。
另外,在图3中,每个子卷上还设置一I/O引擎处理模块,负责进行数据块(chunk预分配)、子卷处理、chunk池预分配,热标记元数据持久化等功能。在sharevol中还包括:共享文件系统模块,用于共享文件系统创建,配置虚拟磁盘文件。在共享卷之外,还包括迁移管理模块,用于选择目的主机,以及进行数据块chunk迁移等操作。
下面对本实施例提供的方法进行详细说明。
实施例一
本实施例提供一种虚拟磁盘所用分布式块存储的I/O本地化方案,在配置共享文件系统时,共享卷挂载时,为各主机创建子卷subvol,即在虚拟磁盘访问时做卷控制器属性值分配。
参见图4,为本发明实施例提供的一种分布式块存储的I/O本地化方法的流程图,该方法可由上述sharevol中的某一I/O引擎处理模块执行,该方法包括:
步骤S101,配置共享文件系统,所述共享文件系统中包括为多个主机创建的根共享目录卷,所述共享文件系统中配置至少一个虚拟磁盘文件。
如图3所示,本实施例中,为主机A至主机C这3个主机创建根共享目录卷sharevol。其中,创建所述共享卷中包括为每个主机创建的根共享卷和子卷,以及对应的卷路径,所述共享文件系统中配置至少一个虚拟磁盘文件,每个虚拟磁盘文件可被存放在任一主机虚拟磁盘。
步骤S102,为所述多个主机中的每个主机创建一个子卷,并将多个子卷挂载到所述根共享目录卷中。
其中,每个子卷上包括一个卷控制器属性值,且所述卷控制器属性值关联其所在子卷所属的主机上。比如子卷subvola的卷控制器属性值vc1关联子卷subvola所属的主机A上。具体地,在每个子卷在运行中设置一个卷控制器(volume control,vc)属性值,每个卷控制器属性值对应关联一个主机,用于为其对应的主机创建的所述子卷,并将所述子卷挂载到所述根共享目录卷中sharevol。
配置共享文件系统时使用共享卷sharevol,比如,为每个I/O引擎处理模块创建一个子卷subvol,该子卷还被分配一个卷控制器可赋予不同的属性值,包括为每个主机对应的卷路径。比如,创建根共享目录卷的卷路径为/poolname/iscsi/sharevol,创建每个子卷以及对应子卷路径为:/poolname/iscsi/sharevol->/shareocfs2/。
其中,ocfs2(Oracle Cluster File System)是由Oracle开发的一种并行共享文件系统ocfs,主要用于构建高性能的集群环境。它提供了在多个计算节点之间共享存储的功能,使得多个节点可以同时访问和操作相同的文件系统。
为所述多个主机中的每个主机创建的本主机对应的子卷,包括:创建每个所述主机对应的子卷,以及建立每个所述子卷和子卷路径之间的映射关系。
本实施例中,shareocfs2可以理解为是一种共享虚拟磁盘文件。在将多个子卷挂载到所述根共享目录卷中,即建立多个子卷与根共享目录卷之间的关系。比如对于设置的子卷subvola、subvolb和subvolc而言,建立每个子卷和对应的卷路径之间的关系为:
/poolname/iscsi/sharevol/subvola->/shareocfs2/subvola/
/poolname/iscsi/sharevol/subvolb->/shareocfs2/subvolb/
/poolname/iscsi/sharevol/subvolc->/shareocfs2/subvolc/
步骤S103,当接收到多个主机中任一主机的I/O数据请求时,根据所属的虚拟磁盘文件所在子卷,从所述子卷所属的卷控制器属性值对应的主机上的磁盘块中获取数据。
具体地,当接收来自主机A上的第一虚拟磁盘的读请求时,根据写请求确定虚拟磁盘文件所在的子卷,比如subvola,该子卷subvola所属的卷控制器属性值vc所属的主机为主机A,由于在主机A的磁盘块中预先存储数据,所以直接可以从主机A本地数据块中获取请求的数据。
另外,每个vc还用于处理I/O请求,由于每一个卷只能设计一个vc,因此为了实现完全运行(run to complete),本实施例中考虑单线程I/O处理能力,并将性能发挥到极致。
举例说明,对于主机A(比如第一主机),该主机A中设有卷控制器属性值vc1,对主机A请求的数据块chunk,记录为[a1C,a1B],意思是在子卷的虚拟磁盘a1上的两个副本,分别存储在主机B和主机C上,如果需要对主机A发起远程访问请求,则可执行前述步骤S101至S104。
具体地,基于上述步骤S101和S102,配置了第一子卷的虚拟磁盘a1、第二子卷的虚拟磁盘b1和第三子卷的虚拟磁盘c1所共享的根共享卷为:/poolname/iscsi/sharevol,对应的卷路径为:/shareocfs2/。以及建立每个子卷subvola至subvolc与在根共享卷的卷路径与share ocfs2/subvola/(虚拟磁盘文件)之间的对应关系。
同理地,对于每个I/O引擎处理模块,基于上述共享文件系统模块的配置,创建根共享卷和各子卷路径之间的关联关系。
需要说明的是,本实施例中,共享卷sharevol在运行的主机中只有一个卷控制器属性值vc是真实的vc,但配置的每个子卷上的vc为虚拟vc,比如主机A至主机C上包含3个虚拟子卷的vc,且这3个虚拟子卷的vc合并作为上述一真实的vc。
基于上述创建共享卷/poolname/iscsi/sharevol,以及卷路径为/shareocfs2/,进而可得每个共享卷的子卷与共享资源池中分布式块资源之间的映射关系,进行如下配置。
管理员配置虚拟机的虚拟磁盘,将磁盘文件放置在共享卷ocfs2上(/shareocfs2/),其中,OCFS(Oracle Cluster File System)是一种分布式文件系统,由Oracle开发,旨在为Oracle数据库和应用程序提供高可用性和可扩展性。OCFS通过在节点之间协调文件系统的元数据访问和数据一致性,实现并发访问和共享文件。它具有多个节点间的并发访问和锁定机制,以保证数据的完整性和一致性。
在共享文件系统模块上进行如下配置,如果是主机A上虚拟磁盘a1的配置请求,则在共享文件系统中,将虚拟磁盘a1配置在/shareocfs2/subvola/;如果是B主机上虚拟磁盘的配置请求,在共享文件系统模块,将虚拟磁盘放置在/shareocfs2/subvolb/;如果是C主机上虚拟磁盘的配置请求,在共享文件系统模块,将虚拟磁盘放置在/shareocfs2/subvolc/;
本实施例提供的方法,为多个主机创建根共享目录卷sharevol,并创建每个主机对应的子卷subvol,并将创建的多个子卷挂载到根共享目录卷中,当接收到一个主机的数据请求时,根据该主机预先分配的虚拟磁盘,将该主机请求写入的虚拟磁盘文件存储至创建的子卷上,比如主机A的虚拟磁盘被配置在/shareocfs2/subvola/,且又由于主机A的虚拟磁盘对应的子卷subvola的I/O本地化结点为A,所以主机A上的虚拟磁盘的输入输出I/O就具有I/O本地化能力,实现以虚拟磁盘文件形态在卷粒度上的I/O本地化存储。
实施例二
本实施例提供一种基于虚拟磁盘所用数据块chunk分配实现I/O本地化分配的方案,与前述实施例一是实现卷粒度I/O本地化存储的两种实施方式,该方案按源IP分配。本实施例应用于多副本的场景,比如包含两个副本,第一副本和第二副本。
具体地,参见图5,本实施例提供的I/O本地化方法包括:
步骤S201,在共享文件系统中为集群中多个主机中的每个主机配置一定数量的数据块资源池,每个所述数据块资源池用于存储数据块。
其中,配置数据块资源池具体包括:配置数据块资源池的名称、容量大小、为主机提供存储服务的主机标识,所述主机标识可以是某一主机的IP地址。每个数据块资源池中包括至少一个数据块地址,即数据块资源池为数据块地址的集合,用于为不同的数据块分配地址。
具体地配置过程包括:利用I/O引擎处理模块在各主机配置预分配一定数据量数据块(chunk)资源池,比如本实施例中,配置3个数据块资源池,用于为主机A至主机C提供存储服务功能。其中,3个数据块资源池名字分别记为poola、poolb、poolc。
容量大小为每个20G容量,若要存储1MB兆字节(Megabytes)的数据,则容量为20G的数据块资源池需要的数目是20480个。
此外,管理员还配置共享文件系统,比如使用共享卷sharevol。
步骤S202,为每个主机创建的一个子卷,并将多个所述子卷挂载到所述共享文件系统的根共享目录卷中,其中,每个所述子卷上包括一个卷控制器属性值,且所述卷控制器属性值关联其所在子卷所属的主机上。
该步骤与前述实施例一的步骤S102相同,具体地,可通过I/O引擎处理模块为共享卷sharevol建立多个子卷,比如创建3个子卷名称分别是subvola、subvolb、subvolc。在创建过程中还为每个子卷subvola、subvolb、subvolc各自设置一个虚拟卷控制器vc,且分别标记为A、B、C。
建立共享卷volshare与每个子卷subvala、subvalb、subvalc的元数据之间的映射关系。该映射关系为:
表1
根共享卷 | 子卷 |
/poolname/iscsi/sharevol | /poolname/iscsi/sharevol/subvola |
/poolname/iscsi/sharevol | /poolname/iscsi/sharevol/subvolb |
/poolname/iscsi/sharevol | /poolname/iscsi/sharevol/subvolc |
步骤S203,当接收I/O数据块写请求时,判断写请求对应的目标数据块是否已分配IP地址。
其中,所述目标主机是所述集群中多个主机之一,所述目标主机可以是主机A至主机C中的任一主机。解析所述请求报文得到主机标识为主机A至主机C中的任一标识。
可选的,所述主机标识可以是主机的IP地址或其他ID,本实施例对此不予限制。
当客户端虚拟机业务处理过程中对主机的虚拟磁盘进行数据读写时,触发I/O引擎处理模块执行步骤S203。
步骤S204,如果否,则从目标数据块资源池中获取目标数据块地址,并将所述目标数据块写入所述目标数据块地址对应的所述目标主机的磁盘块中,作为多副本存储的第一副本。另外,对于多副本,所述目标数据块的其他副本从所述集群的其他主机的数据块资源池中分配数据块;所述目标数据块资源池是目标主机配置的数据块资源池。
另外,上述方法还包括:在数据块读的过程中,当接收到所述目标数据块的读请求时,从所述目标主机的磁盘块中读取所述目标数据块。
可选的,在一些实施例中,上述步骤S204之后,还包括:计算分配给目标主机的剩余数据块资源,所述剩余数据块资源为配置给目标主机的数据块资源池减去所述数据块所占资源后的剩余块资源;继续获取I/O数据块写请求,并在所述剩余数据块资源池中为所述数据块分配数据块地址,当剩余数据块资源池都被分配数据块后,为所述目标主机重新分配新的数据块资源池,以供继续存储新的数据块。
以及,方法还包括:查询元数据,确定每个所述元数据对应的数据块类型,根据所述数据块类型,配置每个所述主机的虚拟vc。其中每个虚拟磁盘所在的主机与该主机的虚拟vc为同一节点。
举例说明,当首次向数据块资源池中写入第一个数据块时,I/O引擎处理模块可以根据接收的iscsi tcp报文,解析出请求端的主机标识,比如所述主机标识为源IP1.1.1.1,其中,源IP地址为1.1.1.1主机A的地址。
判断如果在为主机A分配的数据块资源池中的一个资源(比如chunk)已分配用于存储其他数据:则不走chunk分配流程,查询元数据,获取卷控制器属性值及chunk位置,并访问数据块。如果chunk未分配,判断源IP的归属。
如果源IP是主机A,则第一副本从虚拟vc名称A所在主机A的预分配数据块资源池获取chunk,用于存储当前I/O数据;第二副本从虚拟vc B和虚拟vc C中分配,分配后的数据块资源chunk标识为[a1A,a1B]、[a1A,a1C],并生成子卷subvola的数据块资源表(chunk表),并记录这类chunk的虚拟vc为A。此时,计算出为主机A配置的剩余数据块资源池为:poola剩余chunk数量=总数-使用数量。
同理地,如果源IP是主机B,第一副本从虚拟vc B所在主机B的预分配池获取chunk,第二副本的数据则从虚拟vc A和虚拟vc C中分配,分配后的数据块资源chunk标识为[b1B,b1A]、[b1B,b1C],并生成子卷的数据块资源subvolb chunk表,并记录这类chunk的虚拟vc为B。此时,计算为主机B配置的剩余数据块资源池为:poolb剩余chunk数量=总数-1。
如果源IP是C,则第一副本从虚拟vc C所在主机的预分配池获取chunk,第二副本从虚拟vc A、虚拟vc B中分配,分配后的chunk标识为[c1C,c1A]、[c1C,c1B],并生成子卷数据块资源subvolc chunk表,以及记录这类chunk的虚拟vc为C。此时,计算为主机C配置的剩余数据块资源池为:poolc剩余chunk数量=总数-使用数量;
经过上述记录后,子卷中的虚拟磁盘a1继续处理下一个写I/O操作。同理地,虚拟磁盘b1和虚拟磁盘c1相同处理,本实施例此处不再赘述。
进一步地,上述方法还包括:I/O引擎处理模块判断当poola/poolb/poolc预分配数据库资源池被数据占满用完时,为主机分配新的数据块资源池,比如再次预分配如20G空间的数据块资源池,以供虚拟磁盘a至虚拟磁盘c使用。
本实施例在预先配置各虚拟机的虚拟磁盘时,将磁盘文件放置在共享文件系统的根共享目录卷中/shareocfs2/,进而在虚拟机的虚拟磁盘进行I/O处理时,通过查询元数据,根据预先配置的数据块资源池以及为每个子卷配置的虚拟vc。由于虚拟磁盘所在主机和虚拟vc为同一节点,进而实现在主机的虚拟磁盘上的本地I/O,使主机在共享文件系统的子卷上具备I/O本地化能力。
本实施例提供的方法,可根据I/O请求的来源IP地址,通过优先从来源IP地址所在节点作为卷控制器vc,且作为第一副本所在位置。并且在共享卷sharevol中设置多个子卷,每个子卷对应有独立的虚拟vc,并通过虚拟vc处理子卷的数据块,使得各主机下的I/O具有独立性,因此每个主机下的虚拟磁盘可由本虚拟机进行I/O读写操作,实现vc的高性能。
实施例三
本实施例基于前述实施例一和实施例二,对共享卷中每个子卷的数据进行识别。具体地运行中,基于I/O数据被访问的频繁程度,将I/O数据标记为冷数据或热数据,并对这些数据进行识别、标记,以及持久化存储等处理。
具体地,上述方法还包括:接收客户端发起的I/O访问请求;解析I/O访问请求得到I/O地址,并将所述I/O地址转换为数据块地址。根据所述数据块地址,将请求的元数据存储在所述共享文件系统中。
每次当读取所述共享文件系统的元数据时,在所述元数据的数据结构中配置参考字段,该参考字段用于标记所述元数据被访问读取的频繁程度。
具体地,所述参考字段指示获取访问读取次数高频的元数据,并将所述高频的元数据持久化至共享磁盘上。例如,用户虚拟机业务处理中对虚拟磁盘读写,存储客户端发起I/O访问;并解析I/O地址,将该I/O地址转换成chunk地址,以便通过该chunk地址将元数据存储在内存。
其中,元数据的数据结构增加参考字段ref(reference),该chunk的元数据,比如ref++或ref--,类似于LRU淘汰机制,可以定义参数ref为0的数据为冷数据,非0的数据为热数据,此外,也可以定义参数ref 10以上的数据为热数据,参数ref 10以下(包括10)的为冷数据,且上述冷/热数据的定义存在一定有效期,即只有在效期内生效。
为了防止某一主机突然掉电,本实施例中,在主机的内存中对于热标记的元数据信息,需要持久化到共享磁盘上。
热标记元数据持久化,因为每次读都会改变引用计数,实时持久化只能适用于元数据缓存在Persistent Memory(简称PMem,一种持久化内存),而在非PMem的磁盘介质下(机械盘,ssd等更常用),I/O性能不适用实时持久化,采用定期快照形式将其持久化到共享磁盘上,每次的快照对象为一段时间的热数据,可以设计为连续存放多组持久化热标记元数据,如10组。理论上存储在共享存储上,由分布式存储提供可靠性,为了从设计上保障更安全,要为热标记元数据,增加校验码,在写入共享磁盘时,计算校验码,将热标记元数据和校验码一并存储。
热标记元数据使用过程中,在使用久化热标记元数据,优先使用最后一组热标记元数据,使用前进行检验,如果校验失败,取倒数第二组;也可以灵活取后两组校验通过的热标记元数据,进行合集处理,将多组的合集作为热标记元数据。
此外,在另一实施例中,为提高数据传输备份的安全性,本实施例还提供一种数据迁移方法。该方法用于处理本地I/O数据的迁移过程。
具体地,该方法包括:当某一主机发生宕机时,生成迁移命令,并向迁移管理模块发送迁移命令,所述迁移命令中包括:主机标识、共享卷名称等。迁移管理模块根据所述主机标识和共享卷名称确定主机在共享文件系统中备份数据的数据块资源池,比如poola,将该数据块资源池中的数据块迁移至其他正常运行的主机上。
其中,所述数据块为在所述参考字段中被标记访问频繁程度高的数据。
具体地,迁移管理模块在检查当主机A宕机时,a对应的子卷subvol为subvola,查询子卷subvola的主机B和主机C上的数据块资源池数目。迁移管理模块从共享文件系统的磁盘文件上获取a1的热数据信息。迁移管理模块确定要迁移的目标主机为选择所缺少的热数据块最少的主机。
如果要将缓存数据迁移到主机B,需要迁移的数据量为主机A的热数据量,且不在主机B上的chunk,此时记为moveb(数目);如果要将缓存数据迁移到主机C,需要迁移的数据量为主机A的热数据量,且不在主机C上的chunk,此时记为mvoec(数目);如果moveb<movec,则选择主机B作为目标主机;反之,如果moveb≥movec,则选择C作为目标主机。
在另一示例中,假如选择主机B为目标主机,在缓存数据迁移的过程包括:若主机A宕机,为被动迁移,且主机A上的副本不可访问,此时I/O引擎处理模块将主机C数据块移动到主机B;若主机A未宕机,为主动迁移,且主机A上的副本可访问,则I/O引擎处理模块从主机A、主机C同时各选部分数据块迁移到主机B,从而加快迁移速率。
同理地,对于虚拟vc的迁移,假设在第一子卷subvola的chunk上已经从主机A、主机B、主机C变为主机B、主机C,此时I/O引擎处理模块则将subvola的虚拟卷控制器属性值信息从主机A变更为主机B。对冷数据来说,可以不迁,也可以慢迁(不影响业务下,定期迁),但要完成正常的两个副本的重构,因为在集群中仍然需要有完整的两个副本数据。
本实施例中,对于冷热数据识别并定期持久化,在虚拟机(虚拟磁盘)迁移时,目标主机优先选择所缺更少的热数据chunk的主机上,从而减少传输数据量,加快了数据迁移速度。
在本实施例中还提供了一种分布式块存储的I/O本地化装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种分布式块存储的I/O本地化装置,用于实现前述实施例一中的方法步骤,如图6所示,该装置包括:第一配置模块601、第一创建模块602、第一接收模块603、处理模块604,此外,该装置中还可以包括其他更多或更少的模块,本实施例对此不做限制。
其中,第一配置模块601,用于配置共享文件系统,所述共享文件系统中包括为多个主机创建的根共享目录卷,所述共享文件系统中配置至少一个虚拟磁盘文件,每个所述主机都具有计算和存储能力。
第一创建模块602,用于为所述多个主机中的每个主机创建一个子卷,并将多个所述子卷挂载到所述根共享目录卷中,以及在所述根共享目录卷中配置至少一个虚拟磁盘。
其中,每个虚拟磁盘文件配置至主机对应的子卷上,每个子卷上包括一个卷控制器属性值,且卷控制器属性值关联其所在子卷所属的主机上。
第一接收模块603,用于接收到所述多个主机中任一主机的I/O数据请求。
处理模块604,用于根据所属的虚拟磁盘文件所在子卷,从所述子卷所属的卷控制器属性值对应的主机上的磁盘块中获取数据。
此外,所述共享文件系统中还包括多个卷控制器属性值;每个卷控制器属性值对应一个所述主机,用于为其对应的主机创建的所述子卷,并将所述子卷挂载到所述根共享目录卷中。
此外,第一创建模块602,还用于为每个所述主机创建一个子卷,以及在子卷运行过程中产生的卷控制器属性值,其中,每个所述子卷在所述根共享目录卷中对应一个卷路径;以及利用共享文件系统技术将每个所述卷路径以及建立每个所述子卷和子卷路径之间的映射关系挂载到所述根共享目录卷中。
在另一实施例中,还提供另一种分布式块存储的I/O本地化装置,用于实现前述实施例二或实施例三中的方法步骤。
如图7所示,该装置包括:第二配置模块701、第二创建模块702、第二接收模块703、判断模块704和写入模块705,此外,该装置中还可以包括其他更多或更少的模块,本实施例对此不做限制。
其中,第二配置模块701,用于在共享文件系统中为集群中多个主机中的每个主机配置一定数量的数据块资源池,每个所述数据块资源池用于存储I/O数据块。
其中,所述配置包括:每个数据块资源池的名称、容量、为每个主机提供存储服务的主机标识。
第二创建模块702,用于为所述多个主机中的每个主机创建的本主机对应的子卷,并将多个所述子卷挂载到所述共享文件系统的根共享目录卷中,其中,每个所述子卷上包括一个卷控制器属性值,且所述卷控制器属性值关联其所在子卷所属的主机上。
第二接收模块703,用于接收I/O数据块写请求。
判断模块704,用于判断所述I/O写请求对应的目标数据块是否已分配IP地址,所述目标数据块资源池是所述目标主机配置的数据块资源池。
写入模块705,用于将所述目标数据块写入所述目标数据块地址对应的所述目标主机的磁盘块中,作为多副本存储的第一副本,所述目标数据块的其他副本从所述集群的其他主机的数据块资源池中分配数据块。
可选的,在本实施例的一种可能的实施方式中,还包括处理模块,用于计算分配给所述目标主机的剩余数据块资源池,所述剩余数据块资源池为所述目标数据块资源池减去所述数据块所占资源后的剩余块资源;继续获取I/O数据块写请求,并在所述剩余数据块资源池中为所述数据块分配数据块地址;当所述剩余数据块资源池都被写满数据块后,为所述目标主机分配新的数据块资源池。
可选的,在本实施例的又一种可能的实施方式中,装置还包括接收模块、解析模块和配置模块。
其中,接收模块,用于接收所述多个主机中任一主机发起的I/O访问请求;解析模块,用于解析所述I/O访问请求得到I/O地址,并将所述I/O地址转换为数据块地址;根据所述数据块地址查找所述元数据所在的所述数据块资源池,并读取所述数据块资源池中的所述元数据。
配置模块,用于当读取所述共享文件系统中的元数据时,在所述元数据的数据结构中配置参考字段,所述参考字段用于标记所述元数据被访问读取的频繁程度。
可选的,在本实施例的又一种可能的实施方式中,上述装置还包括发送模块,用于当检测到某一主机发生宕机时,生成并发送迁移命令,所述迁移命令用于确定所述主机在所述共享文件系统中备份数据的至少一个数据块资源池,并将所述数据块资源池中的数据块迁移至其他正常运行的主机上,所述数据块为在所述参考字段中被标记访问频繁程度高的数据。
其中,发生数据迁移的所述数据块资源池中的数据块为在参考字段中被标记访问频繁程度高的数据块。
需要说明的是,本实施例中的I/O本地化装置是以功能单元或模块的形式来呈现,这里的单元是指ASIC电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本发明实施例还提供一种计算机设备,具有上述图6或图7所示的I/O本地化装置。
请参阅图8,是本发明可选实施例提供的一种计算机设备的结构示意图,如图8所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。
在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图8中以一个处理器10为例。
处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,所述存储器20存储有可由至少一个处理器10执行的指令,以使所述至少一个处理器10执行实现上述实施例示出的方法。
存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据一种小程序落地页的展现的计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。
该计算机设备还包括输入装置和输出装置。处理器10、存储器20、输入装置和输出装置可以通过总线或者其他方式连接,图8中以通过总线连接为例。
其中,输入装置可接收输入的数字或字符信息,以及产生与该计算机设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等。输出装置可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。上述显示设备包括但不限于液晶显示器,发光二极管,显示器和等离子体显示器。在一些可选的实施方式中,显示设备可以是触摸屏。
该计算机设备还包括通信接口30,用于该计算机设备与其他设备或通信网络通信。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。
其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (12)
1.一种分布式块存储的I/O本地化方法,其特征在于,所述方法包括:
配置共享文件系统,所述共享文件系统中包括为多个主机创建的根共享目录卷,所述共享文件系统中配置至少一个虚拟磁盘文件,每个所述主机都具有计算和存储能力;
为每个所述主机创建的一个子卷,并将多个所述子卷挂载到所述根共享目录卷中,以及在所述根共享目录卷中配置至少一个虚拟磁盘,其中,每个所述虚拟磁盘文件配置至所述主机对应的子卷上,每个所述子卷上包括一个卷控制器属性值,且每个所述卷控制器属性值关联其所在子卷所属的主机上;
当接收到所述多个主机中任一主机的I/O数据请求时,根据所属的虚拟磁盘文件所在子卷,从所述子卷所属的卷控制器属性值对应的主机上的磁盘块中获取数据。
2.根据权利要求1所述的方法,其特征在于,所述为每个所述主机创建一个子卷,并将多个所述子卷挂载到所述根共享目录卷中,包括:
为每个所述主机创建一个子卷和一个卷控制器,其中,每个所述子卷在所述根共享目录卷中对应一个卷路径;
利用共享文件系统技术将每个所述卷路径,以及建立每个所述子卷和子卷路径之间的映射关系挂载到所述根共享目录卷中。
3.一种分布式块存储的I/O本地化方法,其特征在于,所述方法包括:
在共享文件系统中,为集群中多个主机中的每个主机配置数据块资源池,每个所述数据块资源池用于存储数据块,每个所述主机都具有计算和存储能力;
为每个所述主机创建一个子卷,并将多个所述子卷挂载到所述共享文件系统的根共享目录卷中,其中,每个所述子卷上包括一个卷控制器属性值,且每个所述卷控制器属性值关联其所在子卷所属的主机上;
当接收I/O数据块写请求时,判断所述写请求对应的目标数据块是否已分配IP地址;
如果否,则从目标数据块资源池中获取目标数据块地址,并将所述目标数据块写入所述目标数据块地址对应的所述目标主机的磁盘块中,作为多副本存储的第一副本,所述目标数据块的其他副本从所述集群的其他主机的数据块资源池中分配数据块;所述目标数据块资源池是所述目标主机配置的数据块资源池。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当接收到所述目标数据块的读请求时,从所述目标主机的磁盘块中读取所述目标数据块。
5.根据权利要求3所述的方法,其特征在于,判断所述写请求对应的目标数据块是否已分配IP地址之前,还包括:
解析所述I/O数据块写请求得到目标主机的IP地址;
根据所述IP地址确定所述目标主机。
6.根据权利要求3所述的方法,其特征在于,所述将所述目标数据块写入所述目标数据块地址对应的所述目标主机的磁盘块中之后,还包括:
计算分配给所述目标主机的剩余数据块资源池,所述剩余数据块资源池为分配给所述目标主机的所有数据块资源池减去存储当前数据块所占资源后的剩余块资源池;
继续获取I/O数据块写请求,并在所述剩余数据块资源池中为所述数据块分配数据块地址;
当所述剩余数据块资源池都被分配数据块后,为所述目标主机分配新的数据块资源池。
7.根据权利要求3至6中任一项所述的方法,其特征在于,还包括:
接收所述多个主机中任一主机发起的I/O访问请求,所述I/O访问请求用于请求获取元数据;
解析所述I/O访问请求得到I/O地址,并将所述I/O地址转换为数据块地址;
根据所述数据块地址查找所述元数据所在的所述数据块资源池,并通过所述数据块资源池中的数据块地址读取所述元数据;
其中,当读取所述元数据时,在所述元数据的数据结构中配置参考字段,所述参考字段用于标记所述元数据被访问读取的频繁程度。
8.根据权利要求7所述的方法,其特征在于,还包括:
当检测到主机发生宕机时,生成并发送迁移命令,所述迁移命令用于确定所述主机在所述共享文件系统中备份数据的至少一个数据块资源池,并将所述数据块资源池中的数据块迁移至其他正常运行的主机上;其中,所述发生数据迁移的数据块为在所述参考字段中被标记访问频繁程度高的数据块。
9.一种分布式块存储的I/O本地化装置,其特征在于,所述装置包括:
第一配置模块,用于配置共享文件系统,所述共享文件系统中包括为多个主机创建的根共享目录卷,所述共享文件系统中配置至少一个虚拟磁盘文件,每个所述主机都具有计算和存储能力;
第一创建模块,用于为每个所述主机创建一个子卷,并将多个所述子卷挂载到所述根共享目录卷中,以及在所述根共享目录卷中配置至少一个虚拟磁盘,其中,每个所述虚拟磁盘文件配置至所述主机对应的子卷上,每个所述子卷上包括卷控制器属性值,且每个所述卷控制器属性值关联其所在子卷所属的主机上;
第一接收模块,用于接收到所述多个主机中任一主机的I/O数据请求;
处理模块,用于根据所属的虚拟磁盘文件所在子卷,从所述子卷所属的卷控制器属性值对应的主机上的磁盘块中获取数据。
10.一种分布式块存储的I/O本地化装置,其特征在于,所述装置包括:
第二配置模块,用于在共享文件系统中,为集群中多个主机中的每个主机配置数据块资源池,每个所述数据块资源池用于存储数据块,每个所述主机都具有计算和存储能力;
第二创建模块,用于为每个所述主机创建一个子卷,并将多个所述子卷挂载到所述共享文件系统的根共享目录卷中,其中,每个所述子卷上包括一个卷控制器,且所述卷控制器位于其所在子卷所属的主机上;
第二接收模块,用于接收I/O数据块写请求;
判断模块,用于判断所述写请求对应的目标数据块是否已分配IP地址,所述目标数据块资源池是所述目标主机配置的数据块资源池;
写入模块,用于将所述目标数据块写入所述目标数据块地址对应的所述目标主机的磁盘块中,作为多副本存储的第一副本,所述目标数据块的其他副本从所述集群的其他主机的数据块资源池中分配数据块。
11.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器和所述处理器相连接;
所述存储器中存储有计算机指令;
所述处理器通过执行所述计算机指令,从而执行权利要求1至2,或者3至8中任一项所述的分布式块存储的I/O本地化方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至2,或者3至8中任一项所述的分布式块存储的I/O本地化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311279086.1A CN117348808A (zh) | 2023-09-28 | 2023-09-28 | 分布式块存储的i/o本地化方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311279086.1A CN117348808A (zh) | 2023-09-28 | 2023-09-28 | 分布式块存储的i/o本地化方法、装置和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117348808A true CN117348808A (zh) | 2024-01-05 |
Family
ID=89362348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311279086.1A Pending CN117348808A (zh) | 2023-09-28 | 2023-09-28 | 分布式块存储的i/o本地化方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117348808A (zh) |
-
2023
- 2023-09-28 CN CN202311279086.1A patent/CN117348808A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102444832B1 (ko) | 분산된 가상 명칭 공간 관리를 사용한 온-디맨드 스토리지 프로비져닝 | |
US20210247973A1 (en) | Virtualized file server user views | |
US10082972B2 (en) | Method and system for pooling, partitioning, and sharing network storage resources | |
US20210263658A1 (en) | Data system with flush views | |
US10521135B2 (en) | Data system with data flush mechanism | |
US9411535B1 (en) | Accessing multiple virtual devices | |
EP3502877B1 (en) | Data loading method and apparatus for virtual machines | |
US9009437B1 (en) | Techniques for shared data storage provisioning with thin devices | |
US8799557B1 (en) | System and method for non-volatile random access memory emulation | |
US9329792B2 (en) | Storage thin provisioning and space reclamation | |
US8954706B2 (en) | Storage apparatus, computer system, and control method for storage apparatus | |
AU2017387062A1 (en) | Data storage system with redundant internal networks | |
AU2017387063A1 (en) | Data storage system with multiple durability levels | |
US11262918B1 (en) | Data storage system with uneven drive wear reduction | |
US11853587B2 (en) | Data storage system with configurable durability | |
US11409454B1 (en) | Container ownership protocol for independent node flushing | |
US20150052382A1 (en) | Failover methods and systems for a virtual machine environment | |
JP2021144748A (ja) | 分散型ブロックストレージシステム、方法、装置、デバイス、及び媒体 | |
CN107577733B (zh) | 一种数据复制的加速方法及系统 | |
US10162542B1 (en) | Data protection and incremental processing for multi-span business applications | |
US11842051B2 (en) | Intelligent defragmentation in a storage system | |
US11681443B1 (en) | Durable data storage with snapshot storage space optimization | |
US20220318042A1 (en) | Distributed memory block device storage | |
US10296419B1 (en) | Accessing a virtual device using a kernel | |
CN117348808A (zh) | 分布式块存储的i/o本地化方法、装置和设备 |
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 |