CN111124250B - 用于管理存储空间的方法、设备和计算机程序产品 - Google Patents

用于管理存储空间的方法、设备和计算机程序产品 Download PDF

Info

Publication number
CN111124250B
CN111124250B CN201811279970.4A CN201811279970A CN111124250B CN 111124250 B CN111124250 B CN 111124250B CN 201811279970 A CN201811279970 A CN 201811279970A CN 111124250 B CN111124250 B CN 111124250B
Authority
CN
China
Prior art keywords
storage system
storage
slices
slice
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.)
Active
Application number
CN201811279970.4A
Other languages
English (en)
Other versions
CN111124250A (zh
Inventor
徐鑫磊
李雄成
杨利锋
韩耕
高健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Priority to CN201811279970.4A priority Critical patent/CN111124250B/zh
Priority to US16/579,981 priority patent/US11269770B2/en
Publication of CN111124250A publication Critical patent/CN111124250A/zh
Application granted granted Critical
Publication of CN111124250B publication Critical patent/CN111124250B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及一种用于管理存储空间的方法、设备和计算机程序产品。提供了一种用于管理存储空间的方法。在该方法中,响应于接收到分配存储空间的分配请求,获取分配请求指定的存储空间的大小以及存储空间中的切片的大小。从多个存储***中分别选择第一存储***和第二存储***,第一存储***和第二存储***分别包括第一组存储设备和第二组存储设备,以及第一组存储设备和第二组存储设备之间不存在重叠。基于存储空间的大小以及切片的大小,分别从第一存储***和第二存储***中获取第一组切片和第二组切片。至少基于第一组切片和第二组切片来建立用户存储***以响应于分配请求。进一步,提供了一种用于管理存储空间的设备和计算机程序产品。

Description

用于管理存储空间的方法、设备和计算机程序产品
技术领域
本公开的各实现涉及存储管理,更具体地,涉及用于提供数据存储的方法、设备和计算机程序产品。
背景技术
随着数据存储技术的发展,各种数据存储设备已经能够向用户提供越来越高的数据存储能力,并且数据访问速度也有了很大程度的提高。在存储***中,目前已经提出了存储资源池的概念,在存储***的存储资源池中可以包括多个存储设备,并且多个存储设备中的每个存储设备可以包括多个区块(extent)。此时,可以按照用户所请求的大小来向用户分配相应的存储空间。
可以向多个用户分配存储***中的存储空间。然而,由于存储***中的存储空间的容量以及存储***对于用户请求的响应速度的限制,当存储***的工作负载达到较高的水平时,则对于用户的响应速度将会变慢。此时,如何以更为有效的方式来管理存储空间,成为一个研究热点。
发明内容
因而,期望能够开发并实现一种以更为有效的方式来管理存储空间的技术方案。期望该技术方案能够与现有的存储***相兼容,并且通过改造现有存储***的各种配置,来以更为有效的方式管理存储空间。
根据本公开的第一方面,提供了一种用于管理存储空间的方法。在该方法中,响应于接收到分配存储空间的分配请求,获取分配请求指定的存储空间的大小以及存储空间中的切片的大小。从多个存储***中分别选择第一存储***和第二存储***,第一存储***和第二存储***分别包括第一组存储设备和第二组存储设备,以及第一组存储设备和第二组存储设备之间不存在重叠。基于存储空间的大小以及切片的大小,分别从第一存储***和第二存储***中获取第一组切片和第二组切片。至少基于第一组切片和第二组切片来建立用户存储***以响应于分配请求。
根据本公开的第二方面,提供了一种用于管理存储空间的设备。该设备包括:至少一个处理器;易失性存储器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行动作。该动作包括:响应于接收到分配存储空间的分配请求,获取分配请求指定的存储空间的大小以及存储空间中的切片的大小;从多个存储***中分别选择第一存储***和第二存储***,第一存储***和第二存储***分别包括第一组存储设备和第二组存储设备,以及第一组存储设备和第二组存储设备之间不存在重叠;基于存储空间的大小以及切片的大小,分别从第一存储***和第二存储***中获取第一组切片和第二组切片;以及至少基于第一组切片和第二组切片来建立用户存储***以响应于分配请求。
根据本公开的第三方面,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的第一方面的方法。
附图说明
结合附图并参考以下详细说明,本公开各实现的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实现。在附图中:
图1示意性示出了一种用于管理存储空间的技术方案的框图;
图2A示意性示出了数据迁移之前的存储环境200A的框图;
图2B示意性示出了数据迁移之后的存储环境200B的框图;
图3示意性示出了根据本公开的一个实现的用于管理存储空间的框图;
图4示意性示出了根据本公开的一个实现的用于管理存储空间的方法的流程图;
图5示意性示出了根据本公开的一个实现的用于扩展存储空间的框图;
图6示意性示出了根据本公开的一个实现的用于访问用户存储***中的数据的候选路径的框图;
图7示意性示出了根据本公开的一个实现的用于访问用户存储***中的数据的方法的流程图;
图8A示意性示出了根据本公开的一个实现的存储***的示意图;
图8B示意性示出了根据本公开的一个实现的存储***的重建过程的示意图;
图9示意性示出了根据本公开的一个实现的存储资源池的框图;
图10示意性示出了图9中的存储资源池中的区块的框图;以及
图11示意性示出了根据本公开的示例性实现的用于管理存储空间的设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实现。虽然附图中显示了本公开的优选实现,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实现所限制。相反,提供这些实现是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实现”和“一个实现”表示“至少一个示例实现”。术语“另一实现”表示“至少一个另外的实现”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
图1示意性示出了一种用于管理存储空间的技术方案的框图100。如图1所示,在存储***110中可以包括存储资源池116。尽管图1中未示出,存储资源池116可以包括多个存储设备,并且多个存储设备可以包括多个区块。存储***中的多个区块可以向用户提供存储空间120,以便用于各个用户的服务器122、124等来进行访问。
将会理解,在此的服务器122、124可以是用于访问不同的用户存储***的服务器。例如,一个用户存储***A可以用于支持在线销售服务,并且服务器122可以用于访问该用户存储***A。又例如,另一用户存储***B可以用于支持在线音乐服务,并且服务器124可以用于访问该用户存储***B。尽管图1中仅示意性示出了两个服务器122和124,在其他应用环境中,存储空间120还可以为更多的用户存储***提供存储空间,并且还可以存在更多数量的服务器。
将会理解,在如图1所示的技术方案中,随着服务器数量的增加,存储***110的工作负载将变得越来越重。此时,存储***110可能会面临工作负载过重导致不能在可接受的时间内响应来自各个服务器的访问请求的情况,此时不得不进行数据迁移。在下文中,将参见图2A和图2B描述数据迁移的过程。
图2A示意性示出了数据迁移之前的存储环境200A的框图。如图2的右侧所示,示意性示出了另一存储***210,该存储***210可以包括存储资源池216。类似于存储***110,存储***210中的各个区块可以向外界提供存储空间220以供各个服务器访问。此时,服务器222可以访问存储空间220中的空间。随着存储***110的工作负载的加重,该存储***110可能不再能够为众多的服务器122、124等提供服务,此时不得不将存储***110提供的一部分服务迁移至工作负载较轻的存储***210中。
图2B示意性示出了数据迁移之后的存储环境200B的框图。在图2B中,如箭头250所示,可以首先将服务器124迁移至服务器224所示的位置。在此过程中,需要大量的数据拷贝操作,费时费力。进一步,在服务器124和存储空间120之间的连接252可以被断开,接着,可以在服务器224和存储空间220之间建立连接254。以此方式,与服务器224相关的全部服务将被迁移至是存储***210所提供的存储空间220。以此方式,可以缓解存储***110的过重的工作负载。在上述数据迁移过程中,需要涉及复杂的操作过程,并且需要大量数据拷贝操作才能实现两个存储***110和存储***210之间的负载平衡。
尽管数据迁移的技术方案可以在一定程度上缓解多个存储***之间的工作负载不平衡的问题,然而数据迁移期间服务器124不得不停机,这将会严重地影响用户体验。
为了解决上述缺陷,本公开的实现提供了一种用于管理存储空间的方法、设备和计算机程序产品。采用本公开的实现,可以以更为有效的方式来向用户提供存储空间。在下文中,将详细描述本公开的具体实现。根据本公开内容的一个实现,提供了一种用于管理存储空间的方法。在该方法中,在接收到分配存储空间的分配请求后,可以跨越多个存储***来向用户提供存储空间。此时,由于各个存储***中的多个存储设备之间不存在重叠,可以以更为有效的方式来平衡各个存储***中的工作负载。进一步,可以确保各个存储***中的存储设备都工作在适当的工作负载之下,以便确保可用向用户提供较快的服务。
在下文中,将参见图3详细描述本公开的实现的更多细节。图3示意性示出了根据本公开的一个实现的用于管理存储空间的框图300。在图3中,可以首先从分配存储空间的分配请求中获取分配请求指定的存储空间的大小以及存储空间中的切片的大小。例如,分配请求可用请求分配400M的存储空间,并且期望提供存储空间的每个切片的大小为100M。此时,可以确定需要从第一存储***110和第二存储***210中分配总计4个切片。
将会理解,尽管图3仅示意性示出了两个存储***110和存储***210,在整个存储环境中可以存在更多的存储***。如图3所示,可以从多个存储***中分别选择第一存储***110和第二存储***210。在此的第一存储***110和第二存储***210分别包括存储资源池116和存储资源池216,并且该存储资源池116和存储资源池216可以分别包括第一组存储设备和第二组存储设备。将会理解,根据本公开的示例性实现,并不限定每个存储***中的存储设备的数量,而是存储资源池116和216中可以包括相同或者不同数量的存储设备,并且第一组存储设备和第二组存储设备之间不存在重叠。
将会理解,根据本公开的示例性实现,并不限定存储***110和210内部的组织方式。存储***110和210可以采用相同或者不同的方式来组织。例如,存储***110可以是不存在冗余数据的普通存储***,或者还可以是例如基于独立磁盘冗余阵列(RAID)的具有更高可靠性的存储***。根据本公开的示例性实现,存储***110和存储***210可以是基于相同RAID等级的存储***,也可以是基于不同RAID等级的存储***。
如图3所示,可以基于存储空间的大小400M以及切片的大小100M,分别从第一存储***110和第二存储***210中获取第一组切片和第二组切片。例如,第一组切片可以包括来自第一存储***110中的1个切片322,而第二组切片可以包括来自第二存储***210中的3个切片324、326和328。以此方式,可以至少基于第一组切片和第二组切片来建立用户存储***320以响应于分配请求。
将会理解,尽管图3示出了分别从不同存储***中选择不同数量的切片的示例,根据本公开的示例性实现,还可以从不同存储***选择相同数量的切片。进一步,尽管图3仅示意性示出了分别从两个存储***中选择切片的情况,根据本公开的示例性实现,还可以从更多数量的存储***中选择切片。
利用上述示例性实现,可以跨越多个存储***来向用户提供存储空间。此时,可以基于各个存储***的工作负载,来从各个存储***中选择一定数量的切片用于分配。举例而言,当一个存储***的工作负载较重时,则可以仅从该存储***中选择较少的切片(甚至不从中选择切片);而当一个存储***的工作负载较轻时,则可以仅从该存储***中选择较多的切片。以此方式,可以平衡各个存储***中的工作负载,进而确保由此建立的用户存储***可以具有较高的响应速度。
上文已经参见图3概括描述了本公开的实现,在下文中,将参见图4详细描述如何管理存储空间的更多细节。图4示意性示出了根据本公开的一个实现的用于管理存储空间的方法400的流程图。在框410处,确定是否接收到分配存储空间的分配请求。如果确定接收到分配请求,则方法400前进至框420处。在框420处,获取分配请求指定的存储空间的大小以及存储空间中的切片的大小。备选地和/或附加地,分配请求还可以指定切片数量和切片大小。
在框430处,可以从多个存储***中分别选择第一存储***110和第二存储***210,第一存储***110和第二存储***210可以分别包括第一组存储设备和第二组存储设备。将会理解,在此的第一组存储设备和第二组存储设备之间不存在重叠。将会理解,可以基于多种方式来选择第一存储***110和第二存储***210。
例如,可以从多个存储***中选择空闲空间最多的两个存储***。备选地和/或附加地,还可以从多个存储***中选择访问压力最小的两个存储***。尽管在此图3仅示出了选择两个存储***的情况,根据本公开的示例性实现,还可以选择更多的存储***。例如,对于上文描述的示例,当需要分配4个切片时,还可以分别从3个或者4个存储***中选择4个切片。
在框440处,基于存储空间的大小以及切片的大小,分别从第一存储***110和第二存储***210中获取第一组切片和第二组切片。根据本公开的示例性实现,可以基于第一存储***110和第二存储***210的工作负载来确定分别从每个存储***中选择多少切片。具体地,可以分别获取第一存储***110和第二存储***210的第一工作负载和第二工作负载,并且基于第一工作负载和第二工作负载来选择第一组切片和第二组切片。
根据本公开的示例性实现,可以从工作负载较重的第一存储***中选择较小数量的切片,而从工作负载较轻的第二存储***中选择较大数量的切片。返回图3,假设以0-100范围内的整数来表示各个存储***的工作负载,并且第一工作负载和第二工作负载分别为75和25,则此时可以基于75和25的比例关系来确定从第一存储***110中选择1个切片,而从第二存储***210中选择3个切片。
在第一组切片和第二组切片被用于创建用户存储***后,随着用户对于用户存储***中的切片的访问,第一存储***110和第二存储***210的工作负载将会相应地有所增加。此时,由于工作负载较重的第一存储***110仅提供了较少数量的切片,因而这些切片被访问的概率也较小,进而并不会对原本工作负载已经较重的第一存储***110造成更多伤害。此外,由于第二存储***210提供了较多数量的切片,因而这些切片被访问的概率也较大,此时将会有较多的访问请求命中第二存储***210。此时,由于第二存储***210的工作负载原本比较轻,此时即使大量访问请求命中第二存储***210也不会造成第二存储***210的响应速度过于低下。
利用上述示例性实现,一方面避免了当第一存储***110的工作负载持续升高时需要从第一存储***110向其他工作负载较轻的存储***迁移数据的过程。另一方面,可以以简单并且有效的方式在多个存储***之间进行负载平衡。
根据本公开的示例性实现,第一工作负载可以包括第一存储***110的存储资源使用负载和访问负载中的至少任一项。将会理解,由于存储***中的可用存储***的容量是有限的,因而存储资源使用的负载是工作负载的一个重要方面。根据本公开的示例性实现,可以确定在第一存储***110中存在的第一空闲空间和第二存储***210中存在的第二空闲空间的大小,并且按照两个大小之间的比例关系,来确定分别从第一存储***110和第二存储***210中选择多少切片。
将会理解,存储***的控制节点对于来自用户的访问请求的处理能力也是有限的。因而,访问负载也会影响存储***的处理能力。访问负载可以包括多方面的因素。例如,如果控制节点在较短的时间段内接收到大量访问请求,此时有些访问请求不得不排队等待处理。又例如,如果控制节点接收到的访问请求指向较大的地址范围,则此时也需要较长的时间来处理这样的访问请求。根据本公开的示例性实现,可以分别确定第一存储***110和第二存储***210的访问负载,进而可以基于两个访问负载之间的比例关系,来确定分别从第一存储***110和第二存储***210中选择多少切片。
根据本公开的示例性实现,还可以结合空闲空间和访问负载两方面来确定分别从第一存储***110和第二存储***210中选择多少切片。例如,可以分别针对空闲空间和访问负载来设置权重,并且基于加权求和或者其他方式来确定存储***的工作负载。利用上述示例性实现,可以综合地考虑对于存储***产生影响的多方面因素,以便以更为有效的方式来从不同的存储***中选择相应数量的切片,进而提高各个存储***之间的负载平衡的水平。
返回图4,在框450处,至少基于第一组切片和第二组切片来建立用户存储***320以响应于分配请求。此时,用户可以经由服务器122来访问用户存储***320中的各个切片。
根据本公开的示例性实现,可以建立用户存储***的地址映射。在此的地址映射包括存储***中的各个切片和各个切片所在的各个存储***之间的映射关系。利用上述示例性实现,可以记录向用户分配的区块位于哪个存储***中的哪个地址。以此方式,可以在接收到针对用户存储***中的目标切片的访问请求时,可以方便地确定目标切片所在的存储***,进而将访问请求引导至相应的存储***。
进一步,可以以统一的地址格式来针对各个切片中的存储空间进行寻址。以此方式,可以便于在接收到针对用户存储***中的目标地址范围的访问请求时,可以确定与目标地址范围相对应的切片。进而,可以在切片所在存储***的内部的地址映射来找到与目标地址范围相对应的物理地址范围。
根据本公开的示例性实现,可以为用户存储***320设置唯一的标识符。此时,为用户存储***320提供切片的每个存储***可以使用相同的标识符,以表示各个存储***一起操作并且共同提供了用户存储***320。
在上文中已经介绍了如何从多个存储***中选择多个切片并且基于选择的切片来创建用户存储***320。根据本公开的示例性实现,在已经创建了用户存储***320之后,还可以根据用户请求来扩展用户存储***320的存储空间。如果接收到针对用户存储***320的进行扩展的扩展请求,可以解析该扩展请求并获取扩展请求指定的扩展空间的大小。在下文中,将参见图5描述有关扩展的更多细节。
图5示意性示出了根据本公开的一个实现的用于扩展存储空间的框图500。假设扩展请求指定期望向用户存储***320中再加入100M的存储空间(即,1个切片),则此时可以从多个存储***中选择第三存储***510。将会理解,在此的第三存储***510可以是不同于第一存储***110和第二存储***210的存储***,并且第三存储***510可以包括第三组存储设备516。可以基于扩展空间的大小(100M)以及切片的大小(100M),从第三存储***510中获取第三组切片。此时,第三组切片将包括1个切片,并且可以基于第三组切片来扩展用户存储***以响应于扩展请求。如图5所示,可以从存储***510中选择1个切片,并且利用切片512扩展原有的用户存储***320,以形成存储***520。
将会理解,此时用户可以经由服务器122来访问存储空间522中的经扩展的用户存储***520。以此方式,随着用户对于存储空间的需求的增加,可以不断地利用新的切片来扩展用户存储***520的大小。利用上述示例性实现,通过利用不同于用户存储***中的切片所在的存储***来扩展用户存储***的存储空间,可以使得用户存储***中的数据分布于更多的存储***。以此方式,可以尽量避免在一个存储***中出现故障或者影响用户访问速度的其他时造成的数据迁移需求。
将会理解,尽管在上文中描述了第三存储***510被示出为不同于第一存储***110和第二存储***210的情况,根据本公开的示例性实现,第三存储***510还可以是第一存储***110和第二存储***210中的任一项。根据本公开的示例性实现,当期望向原有的用户存储***320中加入较多的扩展空间时,还可以从多个存储***中选择两个或者多个存储***,并且基于选择的两个或者多个存储***中的空闲空间来扩展用户存储***。根据本公开的示例性实现,可以按照各个存储***的工作负载,来优先地从工作负载较低的存储***中选择切片。
将会理解,还可能会出现用户存储***320的大小需要被缩减的情况。根据本公开的示例性实现,可以首先确定用户存储***320中的各个切片所在的各个存储***的工作负载。继而,可以释放工作负载最重的存储***所提供的切片。根据本公开的示例性实现,在选择将被释放的切片时,还需要确保释放操作之后的用户存储***中的切片位于至少两个存储***中。
根据本公开的示例性实现,服务器122可以经由交换机来连接至第一存储***110和第二存储***210。此时,为了确保服务器122可以正确地访问第一存储***110和第二存储***210中的数据,可以设置多个连接路径。利用上述示例性实现,可以确保在某个或者某些连接路径出现故障时,服务器122仍然可以使用其他正常的路径来访问第一存储***110和第二存储***210中的数据。在下文中,将参见图6描述有关连接路径的更多细节。
图6示意性示出了根据本公开的一个实现的用于访问用户存储***中的数据的候选路径的框图600。将会理解,为了确保存储***的可靠性,存储***通常通过一个或者多个控制节点来向外界提供数据访问服务。在图2中,存储***110可以具有两个控制节点612和614。在存储***110的操作期间,两个控制节点612和614可以并行地向外界提供服务。如果其中一个节点出现故障,则另一个节点可以继续工作。类似地,存储***210可以具有两个控制节点616和618,以便用于以并行方式向外界提供服务。
在图6中,用于访问用户存储***的服务器122可以经由交换机620来分别连接两个存储***。为了确保数据连接的可靠性,服务器122可以分别经由端口632和634来连接交换机620的两个端口642和644。以此方式,可以在服务器122和交换机620之间提供两个路径。进一步,交换机620可以分别连接至第一存储***110和第二存储***210的多个控制节点612、614、616和618。如图6所示,交换机620的端口622、624、626和628可以分别连接至多个控制节点612、614、616和618。
利用上述示例性实现,可以在交换机和第一存储***110和第二存储***210之间提供多个候选路径。如箭头650示意性示出了在服务器122和第一存储***110之间的一个连接路径:服务器122-端口632-端口642-交换机620-端口622-控制节点612-第一存储***110。将会理解,箭头650仅仅示意性示出在服务器122和第一存储***110之间的一个候选路径,图6的拓扑结构中还包括其他候选路径。
例如,基于图6的示出可知,服务器122和各个存储***之间可以存在16个候选路径。例如,在服务器122和第一存储***110之间的另一候选路径可以是:服务器122-端口632-端口642-交换机620-端口622-控制节点614-第一存储***110。又例如,在服务器122和第二存储***210之间的一个候选路径可以是:服务器122-端口632-端口642-交换机620-端口622-控制节点616-第二存储***210。根据本公开的示例性实现,可以采用如下文表1所示的路径表的方式,存储服务器112和各个存储***之间的候选路径。
表1候选路径
根据本公开的示例性实现,如果接收到针对用户数据存储中的目标切片的访问请求,可以首先确定在服务器122和目标切片所在的存储***之间的多个候选路径。对于图6所示的拓扑结构而言,可以经由表1所示的多个候选路径中的一个候选路径来访问目标切片。
根据本公开的示例性实现,可以利用上文表1所示的候选路径,来确定针对用户存储***320中的每个切片的优选路径。在下文中,将仅以访问具体的目标切片为示例进行描述。返回图3,假设接收到针对用户存储***320中的第一个切片的访问请求,此时可以首先从多个候选路径中选择第一个候选路径,并且尝试该候选路径是否能够将访问请求路由至第一个切片所在的存储***。
从上文表1中可知,第一个候选路径为“服务器122-端口632-端口642-交换机620-端口622-控制节点612-第一存储***110”。从图3可知,用户存储***320中的第一个切片322位于第一存储***110。由于所选择的候选路径可以将访问请求路由至正确的目的地即第一存储***110,则此时可以将选择的上述候选路径标记为用于访问第一个切片322的推荐路径。在已经获得了推荐路径的情况下,当在后续接收到针对切片322的访问请求时,可以直接经由推荐路径来将访问请求路由至切片322所在的第一存储***110。
在用户存储***320的后续操作过程中,假设接收到了针对用户存储***320中的第二个切片324的访问请求,此时可以从如表1所示的多个候选路径中选择一个候选路径。图3可知,用户存储***320中的第二个切片324位于第二存储***210。假设此时选择了第一个路径,从图6可知,选择的路径并没有将访问请求引导至切片324所在目的地(第二存储***210),而是将访问请求引导至第一存储***110,则此时可以从第一存储***110向正确的目的地即第二存储***210转发访问请求,以使得由第二存储***210响应于访问请求。
根据本公开的示例性实现,可以利用特定的消息(例如通过SCSI感测关键字)来指示:所选择的候选路径并没有将访问请求引导至正确的目的地。在后续操作期间,如果服务器122接收到针对第二个切片324的访问请求,则可以从多个候选路径中的未被选择的路径中执行选择。继而,利用所选择的路径来路由访问请求,如果选择的路径将访问请求路由至第二存储***210,则将选择的路径标识为推荐路径。如果选择的路径没有将访问请求路由至第二存储***210,则执行转发操作,并且利用特定的消息来报告:所选择的候选路径并没有将访问请求引导至正确的目的地。可以按照上文描述的方法执行重复操作,直到找到能够将访问请求路由至正确的目的地的候选路径(例如,上文表1示出的路径3)为止。
采用上文描述的方法,可以逐一获取用于访问用户存储***320中的每个切片的推荐路径。根据本公开的示例性实现,可以建立推荐路径表,来分别针对用户存储***320中的各个切片记录推荐路径。根据本公开的示例性实现,可以采用下文表2所示的方式来记录推荐路径。
表2切片的推荐路径
序号 切片标识符 推荐路径
1 切片1 候选路径1
2 切片2 候选路径3
在表2中,第一列表示序号,第二列表示切片的标识符,而第三列“推荐路径”表示针对第二列中所示的切片的推荐路径。将会理解,在此的候选路径1即为表1所示的候选路径1,有关路径中的各个节点,可以参见表1。将会理解,在用户存储***320的运行过程中,可以不断地基于上文描述的方法,来确定针对每个切片的推荐路径。
在用户存储***320的运行过程中,在端口之间的连接中、在交换机620的端口中以及在存储***的控制节点中可能会存在故障。此时,单纯依靠表2所示的推荐路径可能并不能将针对某个切片的访问请求路由至相应的目的地。此时,还可以预先确定各个切片的备选路径(standby path)。
根据本公开的示例性实现,可以从候选路径中选择其他的路径来作为备选路径。例如,可以将上述过程中的不能将访问请求路由至正确的目的地的路径设置为备选路径。尽管利用该备选路径路由访问请求的时间可能会高于利用推荐路径的时间,然而该备选路径可以在推荐路径不能正常工作时提供支援。备选地和/或附加地,还可以随机地或者按顺序从多个候选路径中选择备选路径。备选地和/或附加地,可以从多个候选路径中的能够将访问请求路由至正确的目的地的候选路径标识为备选路径。
根据本公开的示例性实现,可以单独设置数据结构来存储各个切片的备选路径。备选地和/或附加地,还可以在表2中加入各个切片的备选路径。利用上述示例性实现,即使在服务器122与第一存储***110和第二存储***210之间的连接中出现了故障,通过备选路径可以方便地实现将访问请求路由至相应的目的地。
在下文中,将参见图7描述在访问用户存储***320中的切片时可能出现的各种情况。图7示意性示出了根据本公开的一个实现的用于访问用户存储***中的数据的方法700的流程图。在框710处,判断是否接收到针对用户存储***320中的目标切片的访问请求。如果判断结果为“是”,则方法700前进至框720处。在框720处,从多个候选路径中选择一个候选路径。
继而,在框730处,采用选择的候选路径来路由访问请求。如果选择的候选路径可以将访问请求路由至目标切片所在的目标存储***,则此时方法700前进至框740,以便将选择的候选路径标识为推荐路径。如果选择的候选路径没有将访问请求路由至目标切片所在的目标存储***,则此时方法700前进至框750。此时,接收到访问请求的存储***可以将访问请求转发至目标切片所在的目标存储***。
在框760处,可以接收针对目标切片的另一访问请求。在框770处,可以判断目标切片是否已经具有推荐路径。如果判断结果为“是”,则方法700前进至框780处,以便基于推荐路径来处理新接收到的访问请求。如果判断结果为“否”,则方法700返回框720处。此时,可以在框720中从多个候选路径中选择未被选择的下一候选路径。将会理解,上文仅参见图7示出了针对用户存储***320中的一个切片的处理。针对其他切片的处理过程也是类似的,在此并不赘述。
根据本公开的示例性实现,第一存储***110和第二存储***210可以是基于RAID的存储***。将会理解,基于RAID的存储***可以将多个存储设备组合起来,成为一个磁盘阵列。通过提供冗余的存储设备,可以使得整个磁盘组的可靠性大大超过单一的存储设备。RAID可以提供优于单一的存储设备的各种优势,例如,增强数据整合度,增强容错功能,增加吞吐量或容量,等等。RAID存在多个标准,例如RAID-1,RAID-2,RAID-3,RAID-4,RAID-5,RAID-6,RAID-10,RAID-50等等。关于RAID级别的更多细节,本领域技术人员例如可以参见https://en.wikipedia.org/wiki/Standard_RAID_levels、以及https://en.wikipedia.org/wiki/Nested_RAID_levels等。
图8A示意性示出了根据本公开的一个实现的存储***800的示意图。在图8A所示的存储***中,以包括五个独立存储设备(810、812、814、816以及818)的RAID-5(4D+1P,其中4D表示存储***中包括四个存储设备来用于存储数据,1P表示存储***中包括一个存储设备来用于存储P校验)阵列为示例,来说明RAID的工作原理。应当注意,尽管图8A中示意性示出了五个存储设备,在其他的实现中,根据RAID的等级不同,还可以包括更多或者更少的存储设备。存储***800可以包括多个条带,尽管图8A中示出了条带820、822、824、…、826,在其他的示例中,RAID***还可以包括不同数量的条带。
在RAID中,条带跨越多个物理存储设备(例如,条带820跨越存储设备810、812、814、816以及818)。可以简单地将条带理解为多个存储设备中的满足一定地址范围的存储区域。在条带820中存储的数据包括多个部分:存储在存储设备810上的数据块D00、存储在存储设备812上的数据块D01、存储在存储设备814上的数据块D02、存储在存储设备816上的数据块D03、以及存储在存储设备818上的数据块P0。在此示例中,数据块D00、D01、D02、以及D03是被存储的数据,而数据块P0是被存储数据的P校验。
在其他条带822和824中存储数据的方式也类似于条带820,不同之处在于,有关其他数据块的校验可以存储在不同于存储设备818的存储设备上。以此方式,当多个存储设备810、812、814、816以及818中的一个存储设备出现故障时,可以从其他的正常的存储设备中恢复出故障设备中的数据。
图8B示意性示出了根据本公开的一个实现的存储***的重建过程的示意图800B。如图8B所示,当一个存储设备(例如,以阴影示出的存储设备816)出现故障时,可以从其余的正常操作的多个存储设备810、812、814、818中恢复数据。此时,可以向RAID中加入新的后备存储设备818B来替代存储设备818,以此方式,可以将恢复的数据写入818B并实现***的重建。
应当注意,尽管在上文中参见图8A和图8B描述了包括5个存储设备(其中4个存储设备用于存储数据,1个存储设备用于存储校验)的RAID-5的存储***,根据其他RAID等级的定义,还可以存在包括其他数量的存储设备的存储***。例如,基于RAID-6的定义,可以利用两个存储设备来分别存储校验P和Q。又例如,基于三重校验RAID的定义,可以利用三个存储设备来分别存储校验P、Q和R。
随着分布式存储技术的发展,图8A和8B所示的存储***中的各个存储设备810、812、814、816以及818可以不再局限于物理存储设备,而是可以是虚拟存储设备。例如,存储设备810上的各个区块可以分别来自于资源池中的各个的物理存储设备(在下文中将简称为存储设备)。图9示意性示出了根据本公开的一个实现的存储资源池116的框图。如图9所示,存储资源池116可以包括多个物理存储设备910、920、930、940、950、…、960。
图10示意性示出了图9中的存储资源池116中的区块的框图。存储资源池116可以包括多个存储设备910、920、930、940、950、…、960。每个存储设备可以包括多个区块,其中空白区块(如图例1060所示)表示空闲的区块,以条纹示出的区块(如图例1062所示)表示用于图8中的存储***800A的第一条带的区块,而以阴影示出的区块(如图例1064所示)表示用于图8中的存储***800A的第二条带的区块。此时,用于第一条带的区块1012、1022、1032、1042、1052分别用于存储第一条带的数据块D00、D01、D02、D03和校验P0。用于第二条带的区块1024、1034、1044、1054和1014分别用于存储第二条带的数据块D10、D11、D12、D13和校验P1。
如图10所示,在各个存储设备中还可以存在预留的空闲部分1070,以便用于在资源池中的一个存储设备出现故障时,可以选择各个存储设备中的空闲部分1070中的区块,来重建故障存储设备中的各个区块。
应当注意,图10仅以4D+1P的RAID-5存储***为示例示出了各个条带中的区块如何分布在资源池的多个存储***中。当采用基于其他RAID等级时,本领域技术人员可以基于上文的原理来实现具体细节。例如,在6D+1P+1Q的RAID-6存储***中,每个条带中的8个区块可以分布在多个存储设备上,进而保证多个存储设备的负载均衡。
上文参见图8A至图10示出了第一存储***110和第二存储***210可以采用的具体实现方式,将会理解,第一存储***110和第二存储***210可以采用相同或者不同的组织方式。只要可以向外界暴露期望数量的切片,并且可以正确地响应于针对目标切片的访问请求而针对该目标切片执行相应的操作即可。
在上文中已经参见图3至图10详细描述了根据本公开的方法的示例,在下文中将描述相应的设备的实现。根据本公开的示例性实现,提供了用于管理存储空间的设备,该存储***中的区块来自与存储***相关联的资源池中的多个存储设备。该设备包括:获取模块,配置用于响应于接收到分配存储空间的分配请求,获取分配请求指定的存储空间的大小以及存储空间中的切片的大小;选择模块,配置用于从多个存储***中分别选择第一存储***和第二存储***,第一存储***和第二存储***分别包括第一组存储设备和第二组存储设备,以及第一组存储设备和第二组存储设备之间不存在重叠;切片获取模块,配置用于基于存储空间的大小以及切片的大小,分别从第一存储***和第二存储***中获取第一组切片和第二组切片;以及建立模块,配置用于至少基于第一组切片和第二组切片来建立用户存储***以响应于分配请求。
图11示意性示出了根据本公开的示例性实现的用于管理存储空间的设备1100的框图。如图所示,设备1100包括中央处理单元(CPU)1101,其可以根据存储在只读存储器(ROM)1102中的计算机程序指令或者从存储单元1108加载到随机访问存储器(RAM)1103中的计算机程序指令,来执行各种适当的动作和处理。在RAM 1103中,还可存储设备1100操作所需的各种程序和数据。CPU 1101、ROM1102以及RAM 1103通过总线1104彼此相连。输入/输出(I/O)接口1105也连接至总线1104。
设备1100中的多个部件连接至I/O接口1105,包括:输入单元1106,例如键盘、鼠标等;输出单元1107,例如各种类型的显示器、扬声器等;存储单元1108,例如磁盘、光盘等;以及通信单元1109,例如网卡、调制解调器、无线通信收发机等。通信单元1109允许设备1100通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法400和700,可由处理单元1101执行。例如,在一些实现中,方法400和700可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1108。在一些实现中,计算机程序的部分或者全部可以经由ROM 1102和/或通信单元1109而被载入和/或安装到设备1100上。当计算机程序被加载到RAM 1103并由CPU 1101执行时,可以执行上文描述的方法400和700的一个或多个步骤。备选地,在其他实现中,CPU 1101也可以以其他任何适当的方式被配置以实现上述过程/方法。
根据本公开的示例性实现,提供了一种用于管理存储空间的设备,该设备包括:至少一个处理器;易失性存储器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行动作。该动作包括:响应于接收到分配存储空间的分配请求,获取分配请求指定的存储空间的大小以及存储空间中的切片的大小;从多个存储***中分别选择第一存储***和第二存储***,第一存储***和第二存储***分别包括第一组存储设备和第二组存储设备,以及第一组存储设备和第二组存储设备之间不存在重叠;基于存储空间的大小以及切片的大小,分别从第一存储***和第二存储***中获取第一组切片和第二组切片;以及至少基于第一组切片和第二组切片来建立用户存储***以响应于分配请求。
根据本公开的示例性实现,至少基于第一组切片和第二组切片来建立用户存储***包括:建立用户存储***的地址映射,地址映射包括存储***中的各个切片和各个切片所在的各个存储***之间的映射关系。
根据本公开的示例性实现,分别从第一存储***和第二存储***中获取第一组切片和第二组切片包括:分别获取第一存储***和第二存储***的第一工作负载和第二工作负载;以及基于第一工作负载和第二工作负载来选择第一组切片和第二组切片。
根据本公开的示例性实现,第一工作负载包括第一存储***的存储资源使用负载和访问负载中的至少任一项。
根据本公开的示例性实现,动作进一步包括:响应于接收到针对用户存储***的进行扩展的扩展请求,获取扩展请求指定的扩展空间的大小;从多个存储***中选择第三存储***,第三存储***包括第三组存储设备;基于扩展空间的大小以及切片的大小,从第三存储***中获取第三组切片;以及至少基于第三组切片来扩展用户存储***以响应于扩展请求。
根据本公开的示例性实现,动作进一步包括:针对用户存储***中的切片,获取用于访问切片的多个候选路径,其中用户存储***的访问服务器分别经由一组端口连接至第一存储***的多个控制节点中的一个控制节点,多个控制节点分别用于访问第一存储***中的数据,多个候选路径中的候选路径包括一组端口中的端口以及多个控制节点中的控制节点。
根据本公开的示例性实现,动作进一步包括:响应于接收到针对用户数据存储中的目标切片的访问请求,确定用于访问目标切片的多个候选路径;以及经由多个候选路径中的一个候选路径来访问目标切片。
根据本公开的示例性实现,经由多个候选路径中的一个候选路径来访问目标切片包括:响应于确定候选路径将访问请求引导至目标切片所在的目标存储***,将候选路径标识为推荐路径。
根据本公开的示例性实现,经由多个候选路径中的一个候选路径来访问目标切片包括:响应于确定候选路径没有将访问请求引导至目标切片所在的目标存储***,向目标存储***转发访问请求,以使得由目标存储***响应于访问请求。
根据本公开的示例性实现,动作进一步包括:响应于接收到针对目标切片的另一访问请求,获取多个候选路径中的另一候选路径;以及经由另一候选路径来访问目标切片。
根据本公开的示例性实现,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的方法。
根据本公开的示例性实现,提供了一种计算机可读介质。计算机可读介质上存储有机器可执行指令,当机器可执行指令在被至少一个处理器执行时,使得至少一个处理器实现根据本公开方法。
本公开可以是方法、设备、***和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实现中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实现的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实现的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各实现。

Claims (21)

1.一种用于管理存储空间的方法,所述方法包括:
响应于接收到分配存储空间的分配请求,获取所述分配请求指定的存储空间的大小以及所述存储空间中的切片的大小;
从多个存储***中分别选择第一存储***和第二存储***,所述存储空间跨所述多个存储***被提供,所述第一存储***和所述第二存储***分别包括第一组存储设备和第二组存储设备,以及所述第一组存储设备和所述第二组存储设备之间不存在重叠,所述第一存储***和所述第二存储***中的每个存储***包括两个或更多个相应的控制节点,所述两个或更多个相应的控制节点提供对相应存储***的相应的一组存储设备的并行访问;
基于所述存储空间的大小以及所述切片的大小,分别从所述第一存储***和所述第二存储***中获取第一组切片和第二组切片;
至少基于所述第一组切片和所述第二组切片来建立用户存储***以响应于所述分配请求;
保持每切片的推荐路径表,所述每切片的推荐路径表具有多个条目,每个条目将相应的个体切片与到对应存储***的对应推荐路径相关联,所述个体切片驻留在所述对应存储***上;以及
响应于针对驻留在对应目标存储***上的目标切片的访问请求,确定所述每切片的推荐路径表是否包括针对所述目标切片的推荐路径,如果是,则使用所述推荐路径来将所述访问请求路由到所述目标切片,否则标识和使用替代路径来将所述访问请求路由到所述目标切片。
2.根据权利要求1所述的方法,其中至少基于所述第一组切片和所述第二组切片来建立用户存储***包括:
建立所述用户存储***的地址映射,所述地址映射包括所述存储***中的各个切片和所述各个切片所在的各个存储***之间的映射关系。
3.根据权利要求1所述的方法,其中分别从所述第一存储***和所述第二存储***中获取第一组切片和第二组切片包括:
分别获取所述第一存储***和所述第二存储***的第一工作负载和第二工作负载;以及
基于所述第一工作负载和所述第二工作负载来选择所述第一组切片和所述第二组切片。
4.根据权利要求3所述的方法,其中所述第一工作负载包括所述第一存储***的存储资源使用负载和访问负载中的至少任一项。
5.根据权利要求1所述的方法,进一步包括:响应于接收到针对所述用户存储***的进行扩展的扩展请求,
获取所述扩展请求指定的扩展空间的大小;
从所述多个存储***中选择第三存储***,所述第三存储***包括第三组存储设备;
基于所述扩展空间的大小以及所述切片的大小,从所述第三存储***中获取第三组切片;以及
至少基于所述第三组切片来扩展所述用户存储***以响应于所述扩展请求。
6.根据权利要求1所述的方法,其中每个推荐路径从对应的一组候选路径被确定,并且其中保持所述每切片的推荐路径表包括:
针对所述用户存储***中的切片,获取用于访问所述切片的多个候选路径,
其中所述用户存储***的访问服务器分别经由一组端口连接至所述第一存储***的所述控制节点中的一个控制节点,所述控制节点分别用于访问所述第一存储***中的数据,所述多个候选路径中的候选路径包括所述一组端口中的端口以及所述控制节点中的控制节点。
7.根据权利要求6所述的方法,其中标识和使用替代路径包括:
经由所述多个候选路径中的一个候选路径来访问所述目标切片。
8.根据权利要求6所述的方法,其中所述推荐路径通过以下而从所述一组候选路径被确定:
响应于确定候选路径将所述访问请求引导至所述目标切片所在的所述目标存储***,将所述候选路径标识为所述推荐路径。
9.根据权利要求8所述的方法,其中经由所述多个候选路径中的一个候选路径来访问所述目标切片包括:
响应于确定所述候选路径没有将所述访问请求引导至所述目标切片所在的目标存储***,向所述目标存储***转发所述访问请求,以使得由所述目标存储***响应于所述访问请求。
10.根据权利要求9所述的方法,进一步包括:响应于接收到针对所述目标切片的另一访问请求,
获取所述多个候选路径中的另一候选路径;以及
经由所述另一候选路径来访问所述目标切片。
11.一种用于管理存储空间的设备,所述设备包括:
至少一个处理器;
易失性存储器;以及
与所述至少一个处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被所述至少一个处理器执行时使得所述设备执行动作,所述动作包括:
响应于接收到分配存储空间的分配请求,获取所述分配请求指定的存储空间的大小以及所述存储空间中的切片的大小;
从多个存储***中分别选择第一存储***和第二存储***,所述存储空间跨所述多个存储***被提供,所述第一存储***和所述第二存储***分别包括第一组存储设备和第二组存储设备,以及所述第一组存储设备和所述第二组存储设备之间不存在重叠,所述第一存储***和所述第二存储***中的每个存储***包括两个或更多个相应的控制节点,所述两个或更多个相应的控制节点提供对相应存储***的相应的一组存储设备的并行访问;
基于所述存储空间的大小以及所述切片的大小,分别从所述第一存储***和所述第二存储***中获取第一组切片和第二组切片;
至少基于所述第一组切片和所述第二组切片来建立用户存储***以响应于所述分配请求;
保持每切片的推荐路径表,所述每切片的推荐路径表具有多个条目,每个条目将相应的个体切片与到对应存储***的对应推荐路径相关联,所述个体切片驻留在所述对应存储***上;以及
响应于针对驻留在对应目标存储***上的目标切片的访问请求,确定所述每切片的推荐路径表是否包括针对所述目标切片的推荐路径,如果是,则使用所述推荐路径来将所述访问请求路由到所述目标切片,否则标识和使用替代路径来将所述访问请求路由到所述目标切片。
12.根据权利要求11所述的设备,其中至少基于所述第一组切片和所述第二组切片来建立用户存储***包括:
建立所述用户存储***的地址映射,所述地址映射包括所述存储***中的各个切片和所述各个切片所在的各个存储***之间的映射关系。
13.根据权利要求11所述的设备,其中分别从所述第一存储***和所述第二存储***中获取第一组切片和第二组切片包括:
分别获取所述第一存储***和所述第二存储***的第一工作负载和第二工作负载;以及
基于所述第一工作负载和所述第二工作负载来选择所述第一组切片和所述第二组切片。
14.根据权利要求13所述的设备,其中所述第一工作负载包括所述第一存储***的存储资源使用负载和访问负载中的至少任一项。
15.根据权利要求11所述的设备,其中所述动作进一步包括:响应于接收到针对所述用户存储***的进行扩展的扩展请求,
获取所述扩展请求指定的扩展空间的大小;
从所述多个存储***中选择第三存储***,所述第三存储***包括第三组存储设备;
基于所述扩展空间的大小以及所述切片的大小,从所述第三存储***中获取第三组切片;以及
至少基于所述第三组切片来扩展所述用户存储***以响应于所述扩展请求。
16.根据权利要求11所述的设备,其中每个推荐路径从对应的一组候选路径被确定,并且其中保持所述每切片的推荐路径表包括:针对所述用户存储***中的切片,获取用于访问所述切片的多个候选路径,
其中所述用户存储***的访问服务器分别经由一组端口连接至所述第一存储***的所述控制节点中的一个控制节点,所述控制节点分别用于访问所述第一存储***中的数据,所述多个候选路径中的候选路径包括所述一组端口中的端口以及所述控制节点中的控制节点。
17.根据权利要求16所述的设备,其中标识和使用替代路径包括:
经由所述多个候选路径中的一个候选路径来访问所述目标切片。
18.根据权利要求16所述的设备,其中所述推荐路径通过以下而从所述一组候选路径被确定:
响应于确定候选路径将所述访问请求引导至所述目标切片所在的所述目标存储***,将所述候选路径标识为所述推荐路径。
19.根据权利要求18所述的设备,其中经由所述多个候选路径中的一个候选路径来访问所述目标切片包括:
响应于确定所述候选路径没有将所述访问请求引导至所述目标切片所在的目标存储***,向所述目标存储***转发所述访问请求,以使得由所述目标存储***响应于所述访问请求。
20.根据权利要求19所述的设备,其中所述动作进一步包括:响应于接收到针对所述目标切片的另一访问请求,
获取所述多个候选路径中的另一候选路径;以及
经由所述另一候选路径来访问所述目标切片。
21.一种非瞬态计算机可读介质,具有存储在其上的机器可执行指令,所述机器可执行指令用于执行根据权利要求1-10中的任一项所述的方法。
CN201811279970.4A 2018-10-30 2018-10-30 用于管理存储空间的方法、设备和计算机程序产品 Active CN111124250B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811279970.4A CN111124250B (zh) 2018-10-30 2018-10-30 用于管理存储空间的方法、设备和计算机程序产品
US16/579,981 US11269770B2 (en) 2018-10-30 2019-09-24 Method, apparatus, and computer program product for managing storage space provided across multiple storage systems

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811279970.4A CN111124250B (zh) 2018-10-30 2018-10-30 用于管理存储空间的方法、设备和计算机程序产品

Publications (2)

Publication Number Publication Date
CN111124250A CN111124250A (zh) 2020-05-08
CN111124250B true CN111124250B (zh) 2023-11-21

Family

ID=70327166

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811279970.4A Active CN111124250B (zh) 2018-10-30 2018-10-30 用于管理存储空间的方法、设备和计算机程序产品

Country Status (2)

Country Link
US (1) US11269770B2 (zh)
CN (1) CN111124250B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110737397B (zh) * 2018-07-20 2023-08-11 伊姆西Ip控股有限责任公司 用于管理存储***的方法、设备和计算机程序产品
CN112748862A (zh) 2019-10-31 2021-05-04 伊姆西Ip控股有限责任公司 用于管理盘的方法、电子设备和计算机程序产品
CN113535066A (zh) * 2020-04-14 2021-10-22 伊姆西Ip控股有限责任公司 在存储***中管理条带的方法、设备和计算机程序产品
CN112199052A (zh) * 2020-11-04 2021-01-08 江苏特思达电子科技股份有限公司 一种文件下载方法、装置及计算机设备
CN112486411B (zh) * 2020-11-25 2022-08-02 湖南麒麟信安科技股份有限公司 超融合环境下分布式文件***磁盘分配方法、装置及介质
CN116029891A (zh) * 2022-05-19 2023-04-28 北京百度网讯科技有限公司 图数据存储、访问、处理方法、训练方法、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8443163B1 (en) * 2010-06-28 2013-05-14 Emc Corporation Methods, systems, and computer readable medium for tier-based data storage resource allocation and data relocation in a data storage array
CN106909310A (zh) * 2015-12-22 2017-06-30 伊姆西公司 用于存储***的路径选择的方法和装置
CN107870832A (zh) * 2016-09-23 2018-04-03 伊姆西Ip控股有限责任公司 基于多维度健康诊断方法的多路径存储设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7958303B2 (en) 2007-04-27 2011-06-07 Gary Stephen Shuster Flexible data storage system
EP2211263A3 (en) 2009-01-23 2013-01-23 Infortrend Technology, Inc. Method for performing storage virtualization in a storage system architecture
US9830238B2 (en) * 2014-08-29 2017-11-28 Netapp, Inc. Techniques for maintaining communications sessions among nodes in a storage cluster system
JP6814764B2 (ja) * 2018-04-06 2021-01-20 株式会社日立製作所 情報処理システム及びパス管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8443163B1 (en) * 2010-06-28 2013-05-14 Emc Corporation Methods, systems, and computer readable medium for tier-based data storage resource allocation and data relocation in a data storage array
CN106909310A (zh) * 2015-12-22 2017-06-30 伊姆西公司 用于存储***的路径选择的方法和装置
CN107870832A (zh) * 2016-09-23 2018-04-03 伊姆西Ip控股有限责任公司 基于多维度健康诊断方法的多路径存储设备

Also Published As

Publication number Publication date
US11269770B2 (en) 2022-03-08
CN111124250A (zh) 2020-05-08
US20200133848A1 (en) 2020-04-30

Similar Documents

Publication Publication Date Title
CN111124250B (zh) 用于管理存储空间的方法、设备和计算机程序产品
CN110413201B (zh) 用于管理存储***的方法、设备和计算机程序产品
CN111857541B (zh) 用于管理存储***的方法、设备和计算机程序产品
CN110413208B (zh) 用于管理存储***的方法、设备和计算机程序产品
CN110737391B (zh) 用于管理存储***的方法、设备和计算机程序产品
US11341049B2 (en) Method, apparatus, and computer program product for managing storage system
CN109690494B (zh) ***存储装置中的分层容错
CN109725830B (zh) 管理独立磁盘冗余阵列的方法、设备和存储介质
US11232005B2 (en) Method, device, and computer program product for managing storage system
JP2022525919A (ja) コンピューティング・ストレージ環境におけるリビルド時間を減少させること
CN112732168B (zh) 用于管理存储***的方法、设备和计算机程序产品
CN111124945B (zh) 用于提供高速缓存服务的方法、设备和计算机可读介质
CN112948279A (zh) 管理存储***中的访问请求的方法、设备和程序产品
CN113552998B (zh) 用于管理存储***中的条带的方法、设备和程序产品
CN113590019B (zh) 用于存储管理的方法、电子设备和计算机程序产品
US20190220378A1 (en) Method and apparatus for managing storage system
CN109840051B (zh) 一种存储***的数据存储方法及装置
US20140289489A1 (en) Information processing apparatus, information processing method, storage system and non-transitory computer readable storage media
US10474395B2 (en) Abstracting namespace mapping in a dispersed storage network through multiple hierarchies
US11269745B2 (en) Two-node high availability storage system
CN107526538B (zh) 用于在存储***中传递消息的方法和***
US10268376B2 (en) Automated deployment and assignment of access devices in a dispersed storage network
CN113535065B (zh) 在存储***中管理条带的方法、设备和计算机程序产品
CN112732167B (zh) 用于管理存储***的方法、设备
CN113391758B (zh) 在存储***中管理条带的方法、设备和计算机程序产品

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
GR01 Patent grant
GR01 Patent grant