CN106933491B - 用于管理数据访问的方法及装置 - Google Patents
用于管理数据访问的方法及装置 Download PDFInfo
- Publication number
- CN106933491B CN106933491B CN201511020927.2A CN201511020927A CN106933491B CN 106933491 B CN106933491 B CN 106933491B CN 201511020927 A CN201511020927 A CN 201511020927A CN 106933491 B CN106933491 B CN 106933491B
- Authority
- CN
- China
- Prior art keywords
- data
- block
- storage block
- virtual
- memory block
- 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.)
- Active
Links
Images
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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
-
- 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/0671—In-line storage system
- G06F3/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例公开了一种用于管理数据访问的方法及装置。该方法包括:接收数据写请求,其中该写请求用于将数据写入一个或多个存储块;在确定特定的存储块不可用时,将需要被写入特定的存储块的数据写入与特定存储块对应的虚拟存储块;以及在确定特定的存储块变为可用时,将虚拟存储块存储的数据拷贝到特定的存储块。本公开的实施例还公开了相应的装置。本公开的实施例通过在数据访问操作中引入虚拟存储块,实现了多个写操作的并行数据传送,极大提升了系统数据写性能。同时,通过提出的数据加锁顺序方案,本公开的实施例还能避免数据访问可能产生的死锁现象。
Description
技术领域
本公开的实施例总体上涉及存储技术领域,具体地,涉及用于管理数据访问的方法及装置。
背景技术
在数据读写处理中,读写操作对存储设备进行访问,然而存储设备例如磁盘、磁盘阵列、缓存等是IO最慢的设备,数据拷贝耗时。同时,数据访问场景下,多用户操作和多线程应用非常广泛,进程并发时需要用锁来控制实现串行化。这些因素都导致数据系统的性能下降。
为了改善上述串行化的数据访问方式,一种直观的方案是例如减小磁盘管理单位,从而降低读写操作中多个请求冲突的机会,然而,如果是小读写数据,该方案并不可扩展,另外,存储设备的消耗和管理开销也将大幅增加。因此,需要对现有的数据读写性能进一步优化。
发明内容
本公开的实施例通过将虚拟存储块的概念引入到数据写操作,提出一种优化数据访问和写操作性能的方案,实现多个写操作的并行数据传送。
根据本公开的第一方面,提供一种用于管理数据访问的方法,包括:接收数据写请求,其中该写请求用于将数据写入一个或多个存储块;在确定特定的存储块不可用时,将需要被写入特定存储块的数据写入与特定存储块对应的虚拟存储块;以及在确定特定的存储块变为可用时,将虚拟存储块存储的数据拷贝到特定的存储块。
根据本公开的实施例,该方法还包括:基于写请求,按照顺序获取多个存储块。
根据本公开的实施例,所述顺序包括逻辑块地址的升序或降序。
根据本公开的实施例,在确定特定的存储块不可用时,将需要被写入特定存储块的数据写入与特定存储块对应的虚拟存储块包括:按照逐个的顺序确定需要写入数据的存储块是否可用;将可用的存储块加锁;在确定特定的存储块不可用时,创建与特定的存储块对应的虚拟存储块;创建与需要写入后续数据的存储块对应的虚拟存储块;以及将数据分别写入可用的存储块以及虚拟存储块。
根据本公开的实施例,在确定特定的存储块变为可用时,将虚拟存储块存储的数据拷贝到特定的存储块包括:响应于确定特定的存储块可用,对特定的存储块加锁,以将虚拟存储块存储的数据拷贝到特定的存储块。
根据本公开的实施例,该方法进一步包括:响应于完成将数据写入一个或多个存储块,对一个或多个存储块解锁。
根据本公开的实施例,每个存储块包含相同数目的逻辑页。
根据本公开的实施例,在确定特定的存储块不可用时,将需要被写入特定存储块的数据写入与特定存储块对应的虚拟存储块包括:创建与特定的存储块相对应的虚拟存储块;以及从存储池中分配与虚拟存储块大小对应的逻辑页,并将需要被写入特定存储块的数据写入分配的逻辑页。
根据本公开的实施例,在确定所述特定的存储块变为可用时,将虚拟存储块存储的数据拷贝到特定的存储块包括:将虚拟存储块迁移至特定存储块,或者将虚拟存储块存储的数据合并到特定的存储块。
根据本公开的第二方面,提供一种用于管理数据访问的装置,包括:接收单元,被配置为接收数据写请求,其中该写请求用于将数据写入一个或多个存储块;以及数据访问控制单元,被配置为在确定特定的存储块不可用时,将需要被写入特定存储块的数据写入与特定存储块对应的虚拟存储块;以及在确定特定的存储块变为可用时,将虚拟存储块存储的数据拷贝到特定的存储块。
根据本公开的实施例,数据访问控制单元进一步被配置为,基于写请求,按照顺序获取多个存储块。
根据本公开的实施例,其中所述顺序包括逻辑块地址的升序或降序。
根据本公开的实施例,数据访问控制单元进一步被配置为,按照逐个的顺序确定需要写入数据的存储块是否可用;将可用的存储块加锁;在确定特定的存储块不可用时,创建与特定的存储块对应的虚拟存储块;创建与需要写入后续数据的存储块对应的虚拟存储块;以及将数据分别写入可用的存储块以及虚拟存储块。
根据本公开的实施例,数据访问控制单元进一步被配置为,响应于确定特定的存储块可用,对特定的存储块加锁,以将虚拟存储块存储的数据拷贝到特定的存储块。
根据本公开的实施例,数据访问控制单元进一步被配置为,响应于完成将数据写入一个或多个存储块,对一个或多个存储块解锁。
根据本公开的实施例,每个存储块包含相同数目的逻辑页。
根据本公开的实施例,数据访问控制单元进一步被配置为,创建与特定的存储块相对应的虚拟存储块;以及从存储池中分配与虚拟存储块大小对应的逻辑页,并将需要被写入特定存储块的数据写入分配的逻辑页。
根据本公开的实施例,数据访问控制单元进一步被配置为,将虚拟存储块迁移至特定存储块,或者将虚拟存储块存储的数据合并到特定的存储块。
根据本公开的第三方面,提供一种计算机可读存储介质,具有存储在其上的计算机可读程序指令,所述计算机可读程序指令用于执行本公开的实施例的管理数据访问的方法。
根据本公开的第四方面,提供一种存储系统,其包括上述的根据本公开实施例的管理数据访问的装置。
通过在数据访问中引入虚拟存储块,实现了多个写操作的并行数据传送。由于写操作最耗时的部分被并行执行,极大提升了数据写性能。进一步地,通过引入新的数据加锁顺序方案,本公开的实施例还能避免可能产生的死锁现象。
附图说明
通过参考下列附图所给出的对非限制性实施例的详细描述,将更好地理解本公开的实施例,并且本公开的实施例的其他目的、细节、特点和优点将变得更明显。在附图中:
图1是示出一种典型单个写操作IO流程图;
图2是示出根据本公开的实施例的用于管理数据访问的方法流程图;
图3是示出根据本公开的实施例的单个写操作IO流程图;
图4是示出根据本公开的实施例避免死锁方法的示意图;以及
图5是示出根据本公开的实施例的用于管理数据访问的装置示意图。
具体实施方式
现将结合附图对本公开的实施例进行具体的描述。所附附图仅仅通过示例的方式示出了能够实现本公开的特定的实施例,示例的实施例并不旨在穷尽根据本公开的所有实施例。本领域的技术人员可以在不偏离本公开的实施例精神和保护范围的基础上从下述描述得到替代的实施方式,进行结构性或者逻辑性的修改。因此,以下的具体描述并非限制性的,且本公开的实施例的范围由所附的权利要求所限定。需要说明的是,尽管附图中以特定顺序描述了本公开的实施例中有关方法的步骤,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果,相反,本文中所描述的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
如前所述,本公开的实施例旨在提供一种优化数据访问性能的方案。在不同类型的存储设备中,由于缓存运行速度快,能够进行高速数据交换,其被广泛应用,更具体地,例如数据处理系统中广泛应用大的动态随机访问存储器(RAM)作为来自或到物理磁盘的数据缓存,但对其进行数据写操作同样存在前述的问题。为了便于描述,现以存储介质为缓存为例,详细描述本公开的原理和精神,但应该理解的是,本领域技术人员根据现有技术以及本领域的公知常识容易知晓在本公开的各个实施例中数据写操作如何对其他存储介质访问。
考虑到数据处理效率和便于管理的目的,缓存通常被分为固定大小的缓存页,例如8k大小的缓存页。缓存页存储一组相邻磁盘分区数据,是最小的缓存管理单位。缓存逻辑页(CLP)由多个缓存页(例如8个)组成,用于存储更大片的连续磁盘数据。CLP是磁盘数据的基本管理单位,它在磁盘上维系缓存页和数据之间的映射。另外,除了存储和磁盘映射,CLP必须也维护一些控制信息,例如在磁盘阵列应用中,磁盘阵列通常有多个控制器,必须保持不同控制器中的缓存数据同步和一致,当一个控制器失效时,必须保证其他控制器中的缓存数据可用,或例如另一种情况,当系统断电时,也必须确保缓存中主机确认的脏数据不被丢失。因此,考虑到多线程应用和并行多控制器IO,当已经存在一个写操作在使用CLP时,CLP必须专用地被访问,也即写操作需要对CLP对应的固定大小的磁盘LBA(逻辑块地址)范围具有锁定的特性。
当应用是并行顺序写时,如果它们尝试访问同一个CLP的同一磁盘范围,这些写操作可能互相竞争。如果某个写操作正在使用CLP,该CLP将无法被授予给其他写操作。另外,为了避免可能的死锁,所有写操作还必须以相同的顺序获取对多个CLP的访问,例如以LBA的升序或降序顺序。
为了更容易理解本公开提出的方案,下面首先结合图1对一个具体应用场景描述典型的单个写IO流程。在该场景中,多个控制器可对磁盘阵列进行操作,每个控制器都具有缓存,缓存被用于在主机和磁盘阵列之间进行数据交换存储。
在步骤S101,缓存接收写请求,该写请求可以是直接来自主机的,或者是来自上层驱动例如虚拟LUN驱动的,写请求中包含该数据写操作涉及的磁盘卷号如LUN序号、起始LBA、数据大小等信息。
在步骤S102,根据写请求中数据写操作的起始LBA和数据大小,在页表中搜索数据将被写入的CLP,并判断是否命中CLP。该页表中维护有CLP与缓存页之间的映射关系,同时还包括LBA和CLP之间的映射关系。在具体实施方式中,例如以哈希表形式实现。在该步骤中,写操作基于写请求尝试寻找需要的CLP。
在步骤S103,响应于未命中CLP,主机创建相应的CLP,该数据写操作获得访问新创建CLP的专用权限,写操作可实现对CLP加锁。
如果响应于步骤S102,命中数据将被写入的CLP,在步骤S108中,写操作尝试获取对该CLP的访问,并在步骤S109中,判断是否能够获得该CLP,如果判断该CLP忙,写操作将无法获取该CLP的访问,只能等待直至能够获得对该CLP的访问;如果步骤S109中判断没有其他写操作正在使用该CLP,意味着写操作可以获得该CLP加锁,能够进行访问及写入数据,之后将转到步骤S104。
在后续步骤S104中,获得访问CLP后,可从存储池中分配缓存页,并在步骤S105中,从主机或上层驱动中的缓冲(buffer)中将数据拷贝到缓存页中,从而将数据写入缓存。值得注意的是,数据还被镜像到其他控制器的缓存(如果存在的话)。
之后,在步骤S106,在数据传送完成后释放CLP,也即对CLP解锁,并在步骤S107中通知主机或上层驱动该写操作结束。
值得注意的是,上述是针对写请求涉及的一个CLP的写操作流程示意,根据一种实施方式,当写操作涉及多个CLP时,可以逐个获取对该多个CLP的访问,也即对多个CLP加锁,之后再进行对多个CLP的数据写入。另外,如前所述,写操作通常以相同的顺序获取对多个CLP的访问,例如以LBA的升序或降序顺序。
通过分析上述单个写IO流程,可以发现,在一种最差的情况下,上述流程在多个写操作中可能导致链式依赖,并严重降低系统性能,例如,写操作1占用CLP1和CLP2访问,写操作2占用CLP3但仍然希望访问CLP2,写操作3占用CLP4但仍然希望访问CLP3,等等,那么所有写操作必须完全串行。还可以发现,如果写操作不需要等待获取CLP访问,最耗时的步骤是数据拷贝(步骤S105)。由于数据拷贝花费了绝大部分IO时间,基于阿姆达尔定律(Amdahllaw),实现竞争同一个CLP的不同写操作的并行数据拷贝将会带来最好性能提升。
基于以上,本公开的一个实施例引入虚拟存储块的概念,虚拟存储块是临时分配的,其在拷贝数据时提供临时缓冲(buffer)以保存主机数据,并在数据迁移到实际存储块之后被释放。
图2是示出根据本公开的实施例的用于管理数据访问的方法流程图。下面对图2示出本公开的实施例进行说明。
在步骤S201,接收数据写请求,其中该写请求用于将数据写入一个或多个存储块,也即该请求涉及将被写入一个或多个存储块的数据。这里的存储块可以是任何合适的存储管理单元,例如逻辑页等。
在步骤S202,在确定特定的存储块不可用时,将需要被写入特定存储块的数据写入与特定存储块对应的虚拟存储块。在该步骤中,针对写请求所需要进行写操作的存储块,判断存储块是否可用,也即该存储块是否被其他写操作加锁;响应于确定该存储块不可用,无法获得对该存储块的访问加锁,则创建与该存储块对应的虚拟存储块,并将相应的数据写入该虚拟存储块。
在步骤S203,在确定特定的存储块变为可用时,将虚拟存储块存储的数据拷贝到特定的存储块。在该步骤中,判断上述不可用的存储块是否转变为可用,响应于确定该存储块变为可用,对其加锁,并将虚拟存储块存储的数据拷贝到该存储块中。
由上可见,本公开的方案实现了多个写操作并行数据传送,大幅提高了系统性能。为了便于理解,以下仍然以对缓存的写操作为具体示例进行描述。
根据本公开的一个实施例,引入虚拟CLP概念,相应地,将最终保存主机数据的CLP称之为实际CLP。当写操作访问实际CLP失败时,将创建虚拟CLP,虚拟CLP如实际CLP一样对应于相同磁盘范围。之后,为该虚拟CLP分配缓存页并启动来自主机或上层驱动的数据传送。因此,竞争同一个实际CLP的多个写操作能并行数据传送。在数据传送完成后,使用虚拟CLP的写操作尝试获取相应的实际CLP。一旦成功,该写操作移动或合并虚拟缓存页到实际CLP。最后,写操作释放实际CLP并通知主机或上层驱动写结束。
图3是示出根据本公开的实施例的单个写操作IO流程图。下面描述根据本公开的一个实施例的单个写操作IO流程,对于与图1所示单个写操作IO流程类似的步骤,这里将仅作简略说明。
步骤S301至S305与图1中步骤S101至S105类似。在这些步骤中,缓存接收写请求,该写请求可以是直接来自主机的,或者是来自上层驱动例如虚拟LUN驱动的。根据写请求中数据写操作的起始LBA和数据大小,在页表中搜索数据将被写入的CLP,并判断是否命中CLP。响应于未命中CLP,主机创建相应的CLP,该数据写操作获得访问新创建CLP的专用权限,能够对该CLP加锁。接着,获得访问CLP后,可从存储池中分配缓存页,并从主机或上层驱动中的缓冲(buffer)中将数据拷贝到缓存页中,从而实现将数据写入缓存。
同样地,如果响应于步骤S302命中数据将被写入的CLP,在步骤S308中,写操作尝试获取对该CLP的访问,并在步骤S109中,判断是否能够获得该CLP,如果判断没有其他写操作正在使用该CLP,意味着写操作可以获得该CLP加锁,能够进行访问写入数据,之后将转到步骤S304及其后续步骤。
如果在步骤S309,判断该CLP忙,写操作将无法获取该CLP的访问,那么在步骤S10,创建虚拟CLP,该虚拟CLP与实际的CLP对应,具有相同的磁盘范围。在步骤S311,从存储池中为该虚拟CLP分配缓存页,并在步骤S312,从主机或上层驱动中的缓冲(buffer)中将数据拷贝到虚拟CLP对应的缓存页中。
在步骤S313,判断是否获得实际的CLP加锁。在具体实现中,根据本公开的一个实施例,例如建立写请求和相应CLP的等待队列,一旦能够获得某个CLP加锁,即触发步骤S313的判断操作。本领域技术人员根据现有技术以及本领域的公知常识容易知晓,也可以采取其他任何合适的实现方式触发步骤S313。
响应于步骤S313中确定能够获得该实际的CLP加锁,则进行到步骤S314,将虚拟CLP页中的数据移动/合并至实际的CLP中,该步骤仅仅是在同一存储介质中的数据迁移,相对于数据写入更为高效;同时,根据本公开的一个实施例,当写入虚拟CLP的数据可以整体迁移时,只需将虚拟CLP指向实际的CLP位置即可,不需要进行实际的数据拷贝过程。
当完成写请求所涉及的数据传送后,也即完成步骤305和314之后,在步骤S306,释放实际的CLP,也即对实际的CLP解锁,并在步骤S307中通知主机或上层驱动写操作结束。
值得注意的是,上述是针对写请求涉及的一个CLP的写操作流程示意,根据本公开的一个实施例,当该写操作涉及多个CLP时,可以逐个获取对该多个CLP的访问,也即获得对该写请求所需要的所有的实际或虚拟CLP访问权限,之后再进行对多个CLP的数据写入。另外,如前所述,写操作通常以相同的顺序获取对多个CLP的访问,例如以LBA的升序或降序顺序。应理解的是,本领域技术人员也可以以其他合适的方式控制单个写操作对其需要的CLP的访问。
通过上述描述可知,根据本公开的一个实施例,对存储介质的数据拷贝步骤,实现了多个写操作的并行处理,例如对于一个写操作,在执行步骤S305和S312时,其他写操作即使需要相同的CLP也可以进行数据传送,实现了多个写操作并行数据传送。而在步骤S314中,仅是将数据从虚拟CLP向实际的CLP的迁移过程,是更为快速的数据传送方式。
如前所述,当写操作访问多个实际CLP时,写操作通常以例如LBA的上升或下降顺序获得所有CLP,以避免可能的与需要获取相同的CLP的其他写操作可能产生的死锁。引入虚拟CLP后,也存在多个写操作可能会处于死锁的情况。下面以图4为例进行说明。
图4是示出根据本公开的一个实施例避免死锁方法的示意图。首先参考图4的上半部分,示意了一种可能存在的多个写操作死锁情况。假设有两个写操作,写操作1和写操作2,其中写操作1需要将其数据写入CLP3至CLP6,写操作2需要将其数据写入CLP1至CLP6,每个写操作所需的多个CLP在LBA上是连续的。
假设写操作2获得实际的CLP1和CLP2(R-CLP1和R-CLP2),同时写操作1获得实际的CLP3(R-CLP3)。根据本公开的实施例的方案,此时,由于写操作2无法获取R-CLP3加锁,于是创建对应的虚拟CLP即V-CLP3。写操作2继续获得实际的CLP4(R-CLP4),而之后写操作1由于无法获取R-CLP4,其已被写操作2获得了,因此创建对应的虚拟CLP即V-CLP4。最后,写操作2获得实际的CLP5和CLP6(R-CLP5和R-CLP6),写操作1使用虚拟的CLP5和CLP6(V-CLP5和V-CLP6)。也即如图4所示,此时所有的CLP都已经为写操作1和写操作2做好准备,两个写操作开始数据写入,将各自数据写入相应的实际CLP和虚拟CLP中。之后,写操作2将尝试获取访问R-CLP3,写操作1将尝试获取访问R-CLP4。在这种情况下,导致了多个写操作的死锁。
根据本公开的一个实施例,为了避免可能产生的死锁现象,采用如下方法:如果写操作无法获得访问实际的CLP,那么,即使该写操作能够获得访问后续的实际CLP中的一些,仍然为所有后续的实际CLP均使用虚拟CLP。图4描述了这样的示例。参考图4的下半部分,采用该方法后,对于写操作2,由于无法获取R-CLP3(被写操作1获得加锁),则对需要数据写入的后续CLP,均使用虚拟CLP,也即写操作2使用V-CLP3至V-CLP6,对于写操作1,由于可获得需要的实际CLP,其使用R-CLP3至R-CLP6。可以看出,采用提出的新的加锁顺序方案,如图4中所示的死锁并不会发生,因为当写操作2发现其无法获取访问R-CLP3时,写操作2将为R-CLP3至R-CLP6使用虚拟CLP。
应该理解,图4中所示仅是两个写操作的示意,本领域技术人员容易知晓,在存在多个写操作的情形下,本公开的一个实施例将容易地得到应用。
图5是示出根据本公开的实施例的用于管理数据访问的装置示意图。根据本公开的实施例,用于管理数据访问的装置包括:接收单元501,被配置为接收数据写请求,其中该写请求用于将数据写入一个或多个存储块;以及数据访问控制单元502,被配置为在确定特定的存储块不可用时,将需要被写入特定存储块的数据写入与特定存储块对应的虚拟存储块;以及在确定特定的存储块变为可用时,将虚拟存储块存储的数据拷贝到特定的存储块。
根据本公开的实施例,数据访问控制单元进一步被配置为,基于所述写请求,按照顺序获取多个存储块。
根据本公开的实施例,其中为数据写操作按照顺序获取多个存储块中的顺序包括逻辑块地址的升序或降序。
根据本公开的实施例,数据访问控制单元进一步被配置为,按照逐个的顺序确定需要写入数据的存储块是否可用;将可用的存储块加锁;在确定特定的存储块不可用时,创建与特定的存储块对应的虚拟存储块;创建与需要写入后续数据的存储块对应的虚拟存储块;以及将数据分别写入可用的存储块以及虚拟存储块。
根据本公开的实施例,数据访问控制单元进一步被配置为,响应于确定特定的存储块可用,对特定的存储块加锁,以将虚拟存储块存储的数据拷贝到特定的存储块。
根据本公开的实施例,数据访问控制单元进一步被配置为,响应于完成将数据写入一个或多个存储块,对一个或多个存储块解锁。
根据本公开的实施例,每个存储块包含相同数目的逻辑页。
根据本公开的实施例,数据访问控制单元进一步被配置为,创建与特定的存储块相对应的虚拟存储块;以及从存储池中分配与虚拟存储块大小对应的逻辑页,并将需要被写入特定存储块的数据写入分配的逻辑页。
根据本公开的实施例,数据访问控制单元进一步被配置为,将虚拟存储块迁移至特定存储块,或者将虚拟存储块存储的数据合并到特定的存储块。
根据本公开的实施例,还提供一种计算机可读存储介质,具有存储在其上的计算机可读程序指令,所述计算机可读程序指令用于执行本公开的实施例的管理数据访问的方法。
根据本公开的实施例,还提供一种存储系统,其包括上述的根据本公开实施例的管理数据访问的装置。
通过以上描述和相关附图中所给出的教导,这里所给出的本公开的许多修改形式和其它实施方式将被本公开相关领域的技术人员所意识到。因此,所要理解的是,本公开的实施方式并不局限于所公开的具体实施方式,并且修改形式和其它实施方式意在包括在本公开的范围之内。此外,虽然以上描述和相关附图在部件和/或功能的某些示例组合形式的背景下对示例实施方式进行了描述,但是应当意识到的是,可以由备选实施方式提供部件和/或功能的不同组合形式而并不背离本公开的范围。就这点而言,例如,与以上明确描述的有所不同的部件和/或功能的其它组合形式也被预期处于本公开的范围之内。虽然这里采用了具体术语,但是它们仅以一般且描述性的含义所使用而并非意在进行限制。
对于本领域技术人员而言,显然本公开的实施例不限于上述示范性实施例的细节,而且在不背离本公开的实施例的精神或基本特征的情况下,能够以其他的具体形式实现本公开的实施例。因此,无论如何来看,均应将实施例看作是示范性的,而且是非限制性的。此外,明显的,“包括”一词不排除其他元素和步骤,并且措辞“一个”不排除复数。装置权利要求中陈述的多个元件也可以由一个元件来实现。
Claims (20)
1.一种用于管理数据访问的方法,包括:
接收数据写请求,其中所述写请求用于将数据写入被表现在数据缓存内的一个或多个存储块;
在确定所述数据缓存内的特定的存储块由于所述特定存储块被将其他数据向所述特定存储块的另一写入进行加锁而不可用时,在所述特定存储块保持不可用的同时,将需要被写入所述特定存储块的数据写入所述数据缓存中的虚拟存储块中,所述虚拟存储块与所述特定存储块对应、并且由所述数据缓存的一组大小一致的缓存页组成;以及
在确定所述特定的存储块变为可用时,将所述虚拟存储块存储的数据拷贝到所述特定的存储块,
所述方法由此通过写入所述虚拟存储块来实现指向所述特定存储块的数据的并行写入,
其中所述方法还包括:
接收指定将第一数据写入第一范围的第一写请求,所述第一范围由第一有序的存储块系列在所述数据缓存中表示;
接收指定将第二数据写入第二范围的第二写请求,所述第二范围由第二有序的存储块系列在所述数据缓存中表示,所述第一有序的存储块系列至少部分地与所述第二有序的存储块系列重叠,并且形成有序的共享存储块系列;
启动在所述第一写请求和所述第二写请求的所述数据缓存中的处理;以及
响应于在处理所述第二写请求的同时遇到所述有序的共享存储块系列中的加锁的存储块,(i)创建多个虚拟存储块,所述多个虚拟存储块包括用于在所述有序的共享存储块系列中的加锁的所述存储块和后续的每个存储块的虚拟存储块,以及(ii)通过将第二数据的部分写入所述多个虚拟存储块来继续处理所述第二写请求。
2.根据权利要求1所述的方法,还包括:
基于所述写请求,按照顺序获取多个存储块。
3.根据权利要求2所述的方法,其中所述顺序包括逻辑块地址的升序或降序。
4.根据权利要求2所述的方法,其中在确定特定的存储块不可用时,将需要被写入所述特定存储块的数据写入与所述特定存储块对应的虚拟存储块包括:
按照逐个的顺序确定需要写入数据的存储块是否可用;
将可用的存储块加锁;
在确定所述特定的存储块不可用时,创建与所述特定存储块对应的虚拟存储块;
创建与需要写入后续数据的存储块对应的虚拟存储块;以及
将所述数据分别写入所述可用的存储块以及所述虚拟存储块。
5.根据权利要求1所述的方法,其中在确定所述特定的存储块变为可用时,将所述虚拟存储块存储的数据拷贝到所述特定的存储块包括:
响应于确定所述特定的存储块可用,对所述特定的存储块加锁,以将所述虚拟存储块存储的数据拷贝到所述特定的存储块。
6.根据权利要求1所述的方法,进一步包括:
响应于完成将所述数据写入所述一个或多个存储块,对所述一个或多个存储块解锁。
7.根据权利要求1所述的方法,其中每个存储块包含相同数目的逻辑页。
8.根据权利要求7所述的方法,其中在确定特定的存储块不可用时,将需要被写入所述特定存储块的数据写入与所述特定存储块对应的虚拟存储块包括:
创建与所述特定的存储块相对应的虚拟存储块;以及
从存储池中分配与所述虚拟存储块大小对应的逻辑页,并将所述需要被写入所述特定存储块的数据写入所述分配的逻辑页。
9.根据权利要求1所述的方法,其中在确定所述特定的存储块变为可用时,将所述虚拟存储块存储的数据拷贝到所述特定的存储块包括:
将所述虚拟存储块迁移至所述特定存储块,或者
将所述虚拟存储块存储的数据合并到所述特定的存储块。
10.一种用于管理数据访问的装置,包括:
数据缓存;
磁盘阵列;
接收单元,被配置为接收数据写请求,其中所述写请求用于将数据写入所述数据缓存的一个或多个存储块,所述数据缓存被配置为与所述磁盘阵列执行数据存储交换;以及
数据访问控制单元,被配置为:
在确定所述缓存内的特定的存储块由于所述特定存储块被将其他数据向所述特定存储块的另一写入进行加锁而不可用时,在所述特定存储块保持不可用的同时,将需要被写入所述特定存储块的数据写入所述数据缓存中的虚拟存储块中,所述虚拟存储块与所述特定存储块对应、并且由所述数据缓存的一组大小一致的缓存页组成的虚拟存储块;以及
在确定所述特定的存储块变为可用时,将所述虚拟存储块存储的数据拷贝到所述特定的存储块,
所述数据访问控制单元由此通过写入所述虚拟存储块来实现指向所述特定存储块的数据的并行写入,
所述数据访问控制单元还被配置为:
接收指定将第一数据写入第一范围的第一写请求,所述第一范围由第一有序的存储块系列在所述数据缓存中表示;
接收指定将第二数据写入第二范围的第二写请求,所述第二范围由第二有序的存储块系列在所述数据缓存中表示,所述第一有序的存储块系列至少部分地与所述第二有序的存储块系列重叠,并且形成有序的共享存储块系列;
启动在所述第一写请求和所述第二写请求的所述数据缓存中的处理;以及
响应于在处理所述第二写请求的同时遇到所述有序的共享存储块系列中的加锁的存储块,(i)创建多个虚拟存储块,所述多个虚拟存储块包括用于在所述有序的共享存储块系列中的加锁的所述存储块和后续的每个存储块的虚拟存储块,以及(ii)通过将第二数据的部分写入所述多个虚拟存储块来继续处理所述第二写请求。
11.根据权利要求10所述的装置,其中所述数据访问控制单元进一步被配置为:基于所述写请求,按照顺序获取多个存储块。
12.根据权利要求11所述的装置,其中所述顺序包括逻辑块地址的升序或降序。
13.根据权利要求11所述的装置,其中所述数据访问控制单元进一步被配置为:
按照逐个的顺序确定需要写入数据的存储块是否可用;
将可用的存储块加锁;
在确定所述特定的存储块不可用时,创建与所述特定存储块对应的虚拟存储块;
创建与需要写入后续数据的存储块对应的虚拟存储块;以及
将所述数据分别写入所述可用的存储块以及所述虚拟存储块。
14.根据权利要求10所述的装置,其中所述数据访问控制单元进一步被配置为:
响应于确定所述特定的存储块可用,对所述特定的存储块加锁,以将所述虚拟存储块存储的数据拷贝到所述特定的存储块。
15.根据权利要求10所述的装置,其中所述数据访问控制单元进一步被配置为:
响应于完成将所述数据写入所述一个或多个存储块,对所述一个或多个存储块解锁。
16.根据权利要求10所述的装置,其中每个存储块包含相同数目的逻辑页。
17.根据权利要求10所述的装置,其中所述数据访问控制单元进一步被配置为:
创建与所述特定的存储块相对应的虚拟存储块;以及
从存储池中分配与所述虚拟存储块大小对应的逻辑页,并将所述需要被写入所述特定存储块的数据写入所述分配的逻辑页。
18.根据权利要求17所述的装置,其中所述数据访问控制单元进一步被配置为:
将所述虚拟存储块迁移至所述特定的存储块,或将所述虚拟存储块存储的数据合并到所述特定的存储块。
19.一种计算机可读存储介质,具有存储在其上的计算机可读程序指令,所述计算机可读程度指令用于执行根据权利要求1-9中任一项所述的方法。
20.一种存储系统,包括根据权利要求10-18中任一项所述的装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511020927.2A CN106933491B (zh) | 2015-12-29 | 2015-12-29 | 用于管理数据访问的方法及装置 |
US15/386,166 US10552049B2 (en) | 2015-12-29 | 2016-12-21 | Method and apparatus for managing data access |
US16/780,315 US11048414B2 (en) | 2015-12-29 | 2020-02-03 | Method and apparatus for managing data access |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511020927.2A CN106933491B (zh) | 2015-12-29 | 2015-12-29 | 用于管理数据访问的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106933491A CN106933491A (zh) | 2017-07-07 |
CN106933491B true CN106933491B (zh) | 2020-05-22 |
Family
ID=59087844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511020927.2A Active CN106933491B (zh) | 2015-12-29 | 2015-12-29 | 用于管理数据访问的方法及装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10552049B2 (zh) |
CN (1) | CN106933491B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10289306B1 (en) * | 2018-01-31 | 2019-05-14 | EMC IP Holding Company LLC | Data storage system with core-affined thread processing of data movement requests |
CN109739443B (zh) * | 2019-01-08 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种ssd混合读写的方法、装置、设备及存储介质 |
CN110727608B (zh) * | 2019-09-03 | 2022-07-12 | 深圳市道通智能航空技术股份有限公司 | 一种日志数据的存储方法、电子设备及存储介质 |
US20240143512A1 (en) * | 2022-11-01 | 2024-05-02 | Western Digital Technologies, Inc. | Write buffer linking for easy cache reads |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975655A (zh) * | 2005-11-29 | 2007-06-06 | 国际商业机器公司 | 用于管理对存储装置的访问的方法和设备 |
CN104714756A (zh) * | 2013-12-17 | 2015-06-17 | 国际商业机器公司 | 用于在双向同步镜像环境中进行本地锁定的方法和计算机系统 |
CN104932831A (zh) * | 2014-03-20 | 2015-09-23 | 华邦电子股份有限公司 | 串行与非式闪存存储器及其内建可变式坏区的管理方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7003621B2 (en) * | 2003-03-25 | 2006-02-21 | M-System Flash Disk Pioneers Ltd. | Methods of sanitizing a flash-based data storage device |
US20090276604A1 (en) * | 2008-05-01 | 2009-11-05 | Broadcom Corporation | Assigning memory for address types |
TWI403897B (zh) * | 2009-07-30 | 2013-08-01 | Silicon Motion Inc | 記憶裝置及其資料管理方法 |
US9141564B1 (en) * | 2010-08-04 | 2015-09-22 | Open Invention Network, Llc | Interconnection of peripheral devices on different electronic devices |
US9135123B1 (en) | 2011-12-28 | 2015-09-15 | Emc Corporation | Managing global data caches for file system |
US9483187B2 (en) * | 2014-09-30 | 2016-11-01 | Nimble Storage, Inc. | Quality of service implementation in a networked storage system with hierarchical schedulers |
US9645932B1 (en) | 2014-12-19 | 2017-05-09 | EMC IP Holding Company LLC | Persistent metadata cache |
US9934163B1 (en) | 2016-09-30 | 2018-04-03 | EMC IP Holding Company LLC | Selectively delaying cache flushing to promote write efficiency |
-
2015
- 2015-12-29 CN CN201511020927.2A patent/CN106933491B/zh active Active
-
2016
- 2016-12-21 US US15/386,166 patent/US10552049B2/en active Active
-
2020
- 2020-02-03 US US16/780,315 patent/US11048414B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975655A (zh) * | 2005-11-29 | 2007-06-06 | 国际商业机器公司 | 用于管理对存储装置的访问的方法和设备 |
CN104714756A (zh) * | 2013-12-17 | 2015-06-17 | 国际商业机器公司 | 用于在双向同步镜像环境中进行本地锁定的方法和计算机系统 |
CN104932831A (zh) * | 2014-03-20 | 2015-09-23 | 华邦电子股份有限公司 | 串行与非式闪存存储器及其内建可变式坏区的管理方法 |
Also Published As
Publication number | Publication date |
---|---|
US11048414B2 (en) | 2021-06-29 |
US20170185318A1 (en) | 2017-06-29 |
US10552049B2 (en) | 2020-02-04 |
US20200174675A1 (en) | 2020-06-04 |
CN106933491A (zh) | 2017-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11048414B2 (en) | Method and apparatus for managing data access | |
US9858186B2 (en) | Conditional data caching transactional memory in a multiple processor system | |
US8880488B1 (en) | Efficient extent-based B-tree insertion | |
US8166255B2 (en) | Reservation required transactions | |
US10929201B2 (en) | Method and system for implementing generation locks | |
CN107704194B (zh) | 无锁io处理方法及其装置 | |
US10901914B2 (en) | Method for writing multiple copies into storage device, and storage device | |
US10719240B2 (en) | Method and device for managing a storage system having a multi-layer storage structure | |
Li et al. | Phast: Hierarchical concurrent log-free skip list for persistent memory | |
US11474938B2 (en) | Data storage system with multiple-size object allocator for disk cache | |
US11741056B2 (en) | Methods and systems for allocating free space in a sparse file system | |
WO2016106738A1 (zh) | 事务冲突检测方法、装置及计算机系统 | |
US10394717B1 (en) | Central processing unit cache friendly multithreaded allocation | |
JP6333371B2 (ja) | キャッシュ線中でビット配列を実装するための方法 | |
Feldman et al. | A lock-free concurrent hash table design for effective information storage and retrieval on large data sets | |
CN118069071B (zh) | 资源访问控制方法、装置、计算机设备和存储介质 | |
Pham et al. | ScaleCache: A Scalable Page Cache for Multiple Solid-State Drives | |
JP6333370B2 (ja) | キャッシュ線中で動的配列データ構造を実装するための方法 | |
KR101891264B1 (ko) | 비휘발성 메모리 상의 메모리 객체 처리 방법 및 메모리 객체 처리 장치 | |
US20210026541A1 (en) | Performance optimization for active-active locking using sticking affinity for storage objects | |
KR20240117845A (ko) | 메모리 그룹을 기반으로 메모리를 관리하는 방법 및 장치 | |
JP5228935B2 (ja) | 補助記憶装置 | |
Dechev et al. | A Lock-Free Concurrent Hash Table Design for Effective Information Storage and Retrieval on Large Data Sets. | |
TW200931251A (en) | A method for appointing the address range to distribute the physical memory in Linux system |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200413 Address after: Massachusetts, USA Applicant after: EMC IP Holding Company LLC Address before: Ma Sazhusaizhou Applicant before: EMC Corp. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |