CN114579047A - 具有控制器的数据存储系统架构及其数据访问方法 - Google Patents

具有控制器的数据存储系统架构及其数据访问方法 Download PDF

Info

Publication number
CN114579047A
CN114579047A CN202210104870.8A CN202210104870A CN114579047A CN 114579047 A CN114579047 A CN 114579047A CN 202210104870 A CN202210104870 A CN 202210104870A CN 114579047 A CN114579047 A CN 114579047A
Authority
CN
China
Prior art keywords
data
virtualization controller
storage virtualization
storage
controller
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.)
Granted
Application number
CN202210104870.8A
Other languages
English (en)
Other versions
CN114579047B (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.)
Infortrend Technology Inc
Original Assignee
Infortrend Technology Inc
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 Infortrend Technology Inc filed Critical Infortrend Technology Inc
Publication of CN114579047A publication Critical patent/CN114579047A/zh
Application granted granted Critical
Publication of CN114579047B publication Critical patent/CN114579047B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2038Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2046Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • 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/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system

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)
  • Computer Networks & Wireless Communication (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了在具有双存储虚拟化控制器且以主动‑主动模式(active‑active mode)运作的存储系统架构中,事先设置好两存储虚拟化控制器的缓存缓冲单元(buffer)的存储地址的对应关系。当不具有管理权限的存储虚拟化控制器(non‑owner)接收到主机的输出入要求时,会向另一具有管理权限的存储虚拟化控制器(owner)询问相关地址讯息,再根据所述地址信息,由不具有管理权限的存储虚拟化控制器(non‑owner)完成所述主机的输出入要求。如此,可以快速完成双存储虚拟化控制器互为备援所需的数据同步作业,亦可以让主机可以对任一存储虚拟化控制器发出数据访问要求,因而提升系统的效能。

Description

具有控制器的数据存储系统架构及其数据访问方法
技术领域
本发明是有关于一种数据存储系统架构及其数据访问的方法,尤指一种具有双存储虚拟化控制器的数据存储系统架构及其数据访问方法。
背景技术
存储虚拟化(storage virtualization)技术是为一种将物理存储空间虚拟化的技术,亦即,存储虚拟化技术能将物理存储装置(Physical Storage Device,PSD)中的不同区段予以结合,使的成为可供主机使用的「逻辑盘」(logical disk,LD),亦称作为「逻辑介质单元」(logical media unit,LMU)。此存储虚拟化技术主要应用于磁盘阵列(RAID)的存储虚拟化,可将较小物理存储装置结合成为容量较大、可容错、高效能的逻辑盘或逻辑介质单元。
存储虚拟化控制器(storage virtualization controller,SVC)的主要功用即是为达成上述的效能,其在上述主机与逻辑盘间建立一映像关系,使逻辑盘可为主机所用。此时,逻辑盘是归属存储虚拟化控制器所管辖,亦即,存储虚拟化控制器对逻辑盘具有「管理权限」(ownership)。当存储虚拟化控制器接收到来自于主机的一输出入请求(I/Orequest)后,存储虚拟化控制器会先剖析及解译所述输出入请求所携带的讯息(例如:目标为访问某一逻辑盘的某一段数据),并将相关的操作及数据转译成与物理存储装置(PSD)相对应的输出入请求。
为了能增加数据存储系统的可靠性(reliability),常会见到利用冗余(redundandent)的架构,将两个存储虚拟化控制器(例如:第一存储虚拟化控制器与第二存储虚拟化控制器)配置成一冗余对(redundandent pair),称为「存储虚拟化控制器对」(SVCpair),以因应当一存储虚拟化控制器(例如:第一存储虚拟化控制器)发生故障或无法运作时,另一存储虚拟化控制器(例如:第二存储虚拟化控制器)可以接管(take over)故障的存储虚拟化控制器所负责的工作(例如:接管故障的存储虚拟化控制器原先管理的逻辑盘),如此使得主机依然可以连续不中断地对所有逻辑盘继续执行数据访问工作。
在冗余存储虚拟化系统的装置端,存储虚拟化控制器对(SVC pair)中的两个存储虚拟化控制器(SVC),必须皆有可以对所有物理存储装置(PSD)进行访问的连接,无论此物理存储装置(PSD)原本是否被指定由其管理。在主机端,则必须使存储虚拟化控制器对(SVCpair)中每一存储虚拟化控制器(SVC),在它的同伴SVC(mate SVC)处于原本就没在线或在线后又因故脱机(例如:故障、失效、或维护操作等所造成的脱机)的情形下,具有将所有可供访问的资源呈现于主机且使所述等资源可被主机所利用的能力;这些可访问的资源也包括原来就指定由另一个存储虚拟化控制器(SVC)所管理的资源。
冗余存储虚拟化系统中的另外一个基本要件就是,每个存储虚拟化控制器需能监视另一个存储虚拟化控制器的状态。此可利用一介于此二存储虚拟化控制器间的「控制器间通信通道(inter-controller communications channel,ICC)」来实现,利用此通道来交换二存储虚拟化控制器的操作状态。此通道可以是专用的,其唯一的作用就是供二存储虚拟化控制器交换与此冗余存储虚拟化子系统的操作相关的参数与数据。或者此通道是通过一或多个主机端或装置端的输出入装置连接(I/O device interconnect)来实现,经由此种连结,这些操作上的参数、数据交换可连同在这些连接上的主机-存储虚拟化控制器输出入请求或装置-存储虚拟化控制器输出入请求所关联的数据一起被多任务传输。
当一主机向一冗余对中的一存储虚拟化控制器(例如:第二存储虚拟化控制器)发出一访问要求,而接收主机访问要求的存储虚拟化控制器(例如:第二存储虚拟化控制器)发现,事实上主机是要访问另一存储虚拟化控制器(例如:第一存储虚拟化控制器)所管辖的逻辑盘(logical disk,LD)上的数据时,习知处理方式是,第二存储虚拟化控制器会拒绝主机的访问要求,致使主机须重新向另一存储虚拟化控制器(例如:第一存储虚拟化控制器)发出访问要求,因而使得主机的访问效能不佳。
此外,当一主机向一冗余对中的一存储虚拟化控制器(例如:第一存储虚拟化控制器)发出一写入要求,用以将写入数据写入至第一存储虚拟化控制器所管辖的一逻辑盘中。第一存储虚拟化控制器在接收到写入数据并先暂存在其存储器的缓冲区(buffer)后,即以一确认信号(例如:ACK信号)通知主机:所述主机写入要求已经成功执行完成。然而,此种习知处理方法存在着风险,例如:当第一存储虚拟化控制器接收到主机的写入数据并以一确认信号(例如:ACK信号)通知主机「写入完成」后,在还来不及将写入数据复制至冗余对中的另一存储虚拟化控制器(例如:第二存储虚拟化控制器)时,第一存储虚拟化控制器却发生故障或毁损,因此造成从主机接收的写入数据遗失。如此一来,即使第二存储虚拟化控制器在第一存储虚拟化控制器发生故障或毁损的后,马上接收(takeover)了第一存储虚拟化控制器的身份且管理其原本管理的逻辑盘(logical disk,LD),这仍然无法挽回数据存储系统已经遗失主机的写入数据的事实,如此对数据存储系统的可靠性(reliability)造成伤害。为了增加数据存储系统保存主机的写入数据的可靠性,一习知作法是:当冗余对中的一存储虚拟化控制器(例如:第一存储虚拟化控制器)从主机接收写入数据后,第一存储虚拟化控制器会先将所接收到的写入数据复制至冗余对中的另一存储虚拟化控制器(例如:第二存储虚拟化控制器),然后第一存储虚拟化控制器才会以一确认信号(例如:ACK信号)通知主机「写入完成」。然而,这样的处理方式依然存在着风险,例如:万一当第一存储虚拟化控制器正在从主机接收写入数据时、或已从主机接收写入数据完毕且正要/正在将所接收到的写入数据复制至第二存储虚拟化控制器时,第一存储虚拟化控制器却突然发生故障,一样会使得第二存储虚拟化控制器无法从第一存储虚拟化控制器取得写入数据,造成写入数据遗失。对此,习知处理方式采用的因应方式为:主机在一定时间内没收到来自于第一存储虚拟化控制器的确认信号(例如:ACK信号),主机会传送一定次数(例如:二次)的询问信号给第一存储虚拟化控制器,以探知第一存储虚拟化控制器的目前状态。而若主机一直未接收到第一存储虚拟化控制器的回复信号,主机即了解第一存储虚拟化控制器无法提供服务且其先前发出的主机写入要求并未完成。如此,主机会转而向第二存储虚拟化控制器再次发出原先的主机写入要求。通过以上繁复的过程,虽然提升了可靠性,但是却付出访问效能低落的代价。综上可知,如何提供具有高可靠性及高效能的数据存储系统架构及其数据访问方法,是存储业界亟待解决的问题。
发明内容
本发明的一目的是提供一种于一数据存储系统架构(1)下访问数据的方法,其中所述数据存储系统架构(1)包括一第一存储虚拟化控制器(SVC1)(10)、一第二存储虚拟化控制器(SVC2)(20)及一存储池(storage pool)(4),其中,所述第一存储虚拟化控制器(SVC1)(10)包括一第一中央处理电路(CPC1)(105)、与一第一存储器(memory 1)(107),所述第二存储虚拟化控制器(SVC2)(20)包括一第二中央处理电路(CPC2)(205)、与一第二存储器(memory 2)(207),所述第一中央处理电路(CPC1)(105)经由一传输接口连接至所述第二中央处理电路(CPC2)(205),所述第一存储器(memory 1)(107)包括复数个第一存储空间,所述第二存储器(memory 2)(207)包括复数个第二存储空间,其中所述方法包括:所述第一存储虚拟化控制器(SVC1)(10)管理所述一存储池(storage pool)(4)中一第一逻辑盘(LD1)(12);所述第二存储虚拟化控制器(SVC2)(20)接收来自一主机(15)的一写入要求(write request),其中所述写入要求(write request)是要求写入数据至所述第一逻辑盘(LD1)(12);所述第二存储虚拟化控制器(SVC2)(20)经由所述传输接口询问所述第一存储虚拟化控制器(SVC1)(10)有关一地址讯息;所述第一存储虚拟化控制器(SVC1)(10)经由所述传输接口回复所述地址讯息给所述第二存储虚拟化控制器(SVC2)(20),其中所述地址讯息包括所述第一存储器(memory 1)(107)的一或多个第一数据存储地址(ADDR1),其位于所述复数个第一存储空间中,用以存储所述写入要求(write request)的写入数据;所述第二存储虚拟化控制器(SVC2)(20)依据接收到的所述地址讯息安排对应于所述一或多个第一数据存储地址(ADDR1)的所述第二存储器(memory2)(207)中的一或多个第二数据存储地址(ADDR2);所述第二存储虚拟化控制器(SVC2)(20)传送一讯息给所述主机(15),以通知所述主机(15)传送所述写入要求(write request)的一写入数据;所述第二存储虚拟化控制器(SVC2)(20)接收来自所述主机(15)的所述写入要求(write request)的所述写入数据;所述第二存储虚拟化控制器(SVC2)(20)将所述写入数据存储于所述第二存储器(memory2)(207)的所述一或多个第二数据存储地址(ADDR2)处;所述第二存储虚拟化控制器(SVC2)(20)经由所述传输接口将所述写入数据存储于所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处;以及所述第二存储虚拟化控制器(SVC2)(20)通知所述主机(15),所述写入要求(write request)已执行完成。
依据本发明的另一实施例,其中所述传输接口是经由一冗余控制器通信(RCC)连接控制器(9)所建立的一控制器间通信通道(ICC)而达成。
依据本发明的另一实施例,其中所述地址讯息还包括所述第二存储器(memory 2)(207)的所述一或多个第二数据存储地址(ADDR2)。
依据本发明的另一实施例,其中于一数据存储系统架构(1)下访问数据的所述方法还包括以下步骤:所述第二存储虚拟化控制器(SVC2)(20)附加所述一或多个第二数据存储地址(ADDR2)于所述写入数据,当所述第二存储虚拟化控制器(SVC2)(20)接收到来自所述主机(15)的所述写入数据后。
依据本发明的另一实施例,其中接收来自所述主机(15)的所述写入数据的步骤与附加所述一或多个第二数据存储地址(ADDR2)于所述写入数据的步骤,是由所述第二存储虚拟化控制器(SVC2)(20)中的一第二主机端输出入控制器(201)所执行。
依据本发明的另一实施例,其中所述第一存储虚拟化控制器(SVC1)(10)是通过一第一交换器(switch 1)(103)与所述传输接口连接,所述第二存储虚拟化控制器(SVC2)(20)是通过一第二交换器(switch 2)(203)与所述传输接口连接。
依据本发明的另一实施例,其中所述第一交换器(switch 1)(103)与所述第二交换器(switch 2)(203)还具有一非透明桥接功能(Non-transparent bridge,NTB)(1033、2033)。
依据本发明的另一实施例,其中所述第二存储虚拟化控制器(SVC2)(20)是通过所述第二交换器(switch 2)(203)将所述写入数据存储于所述第二存储器(memory 2)(207)的所述一或多个第二数据存储地址(ADDR2)处、以及所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处。
依据本发明的另一实施例,其中于一数据存储系统架构(1)下访问数据的所述方法还包括以下步骤:所述第二存储虚拟化控制器(SVC2)20通知所述第一存储虚拟化控制器(SVC1)10,所述写入数据已经成功存储至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处、与所述第二存储器(memory 2)(207)的所述一或多个第二数据存储地址(ADDR2)处;以及所述第一存储虚拟化控制器(SVC1)10发出一确认讯息给所述第二存储虚拟化控制器(SVC2)20,以通知所述第二存储虚拟化控制器(SVC2)20:确认所述写入数据已经成功存储至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处。
依据本发明的另一实施例,其中所述第二存储虚拟化控制器(SVC2)(20)还具有一第二群播表(MT2)(2031),所述第二群播表(MT2)(2031)纪录有一或多个虚拟群播地址(virtual multicast ADDR),所述一或多个虚拟群播地址(virtual multicast ADDR)对应于所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)、与所述第二存储器(memory 2)(207)的所述一或多个第二数据存储地址(ADDR2)。
依据本发明的另一实施例,其中于一数据存储系统架构(1)下访问数据的所述方法还包括以下步骤:所述第二存储虚拟化控制器(SVC2)(20)中的一第二主机端输出入控制器(201)附加所述一或多个虚拟群播地址(virtual multicast ADDR)于所述写入数据,当所述第二存储虚拟化控制器(SVC2)(20)接收到来自所述主机(15)的所述写入数据后。
依据本发明的另一实施例,其中所述第二存储虚拟化控制器(SVC2)(20)中的一第二交换器(switch 2)(203)根据所述一或多个虚拟群播地址(virtual multicast ADDR),将所述写入数据同时存储至所述第二存储器(memory 2)(207)的所述一或多个第二数据存储地址(ADDR2)处、以及同时传送至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处。
依据本发明的另一实施例,其中所述第二群播表(MT2)(2031)是存放于所述第二存储虚拟化控制器(SVC2)(20)中一第二交换器(switch 2)(203)。
依据本发明的另一实施例,其中所述一或多个保留的第二存储空间是位于所述第二存储器(memory 2)(207)的一第二缓存缓冲单元(2071)的中。
依据本发明的另一实施例,其中于一数据存储系统架构(1)下访问数据的所述方法还包括以下步骤:所述第二存储虚拟化控制器(SVC2)(20)通知所述第一存储虚拟化控制器(SVC1)(10),所述写入数据已经存储至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处;其中所述一或多个第一数据存储地址(ADDR1)是位于所述第一存储器(memory 1)(107)的一第一缓存缓冲单元(1071)的中,而所述一或多个第二数据存储地址(ADDR2)是位于所述第二存储器(memory 2)(207)的一第二缓存缓冲单元(2071)的中。
依据本发明的另一实施例,其中于一数据存储系统架构(1)下访问数据的所述方法还包括以下步骤:所述第一存储虚拟化控制器(SVC1)(10)将存储于所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处的所述写入数据存储至所述第一逻辑盘(LD1)(12)的中。
依据本发明的另一实施例,其中于一数据存储系统架构(1)下访问数据的所述方法还包括以下步骤:当第一存储虚拟化控制器(SVC1)(10)将存储于所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处的所述写入数据存储至所述第一逻辑盘(LD1)(12)后,所述第一存储虚拟化控制器(SVC1)(10)通知所述第二存储虚拟化控制器(SVC2)(20)所述写入要求(write request)已执行完成。
依据本发明的另一实施例,其中于一数据存储系统架构(1)下访问数据的所述方法还包括以下步骤:所述第一存储虚拟化控制器(SVC1)(10)发出一确认讯息给所述第二存储虚拟化控制器(SVC2)20,以通知所述第二存储虚拟化控制器(SVC2)20:确认所述写入数据已经成功存储至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处。
依据本发明的另一实施例,其中所述第二群播表(MT2)(2031)包括复数个字段,包括:一第一字段用以记录所述一或多个虚拟群播地址(virtual multicast ADDR)、一第二字段用以记录所述一或多个第一数据存储地址(ADDR1)、及一第三字段用以记录所述一或多个第二数据存储地址(ADDR2)。
依据本发明的另一实施例,其中所述第一存储虚拟化控制器(SVC1)(10)还具有一第一群播表(MT1)(1031),所述第一群播表(MT1)(1031)包括复数个字段,包括:一第一字段用以记录所述一或多个虚拟群播地址(virtual multicast ADDR)、一第二字段用以记录所述一或多个第一数据存储地址(ADDR1)、及一第三字段用以记录所述一或多个第二数据存储地址(ADDR2)。
本发明的另一目的是提供一种于一数据存储系统架构(1)下访问数据的方法,所述数据存储系统架构(1)包括一第一存储虚拟化控制器(SVC1)(10)、一第二存储虚拟化控制器(SVC2)(20)及一存储池(storage pool)(4),其中,所述第一存储虚拟化控制器(SVC1)(10)包括一第一中央处理电路(CPC1)(105)、与一第一存储器(memory 1)(107),所述第二存储虚拟化控制器(SVC2)(20)包括一第二中央处理电路(CPC2)(205)、与一第二存储器(memory 2)(207),所述第一中央处理电路(CPC1)(105)经由一传输接口连接至所述第二中央处理电路(CPC2)(205),所述第一存储器(memory 1)(107)包括复数个第一存储空间,所述第二存储器(memory 2)(207)包括复数个第二存储空间,其中所述方法包括:所述第一存储虚拟化控制器(SVC1)(10)管理所述存储池(storage pool)(4)中一第一逻辑盘(LD1)(12);所述第二存储虚拟化控制器(SVC2)(20)接收来自一主机(15)的一读取要求(readrequest),其中所述读取要求(read request)是要求读取所述第一逻辑盘(LD1)(12)上存储的一读取数据;所述第二存储虚拟化控制器(SVC2)(20)经由所述传输接口询问所述第一存储虚拟化控制器(SVC1)(10)有关一地址讯息;所述第一存储虚拟化控制器(SVC1)(10)经由所述传输接口回复所述地址讯息给所述第二存储虚拟化控制器(SVC2)(20),其中所述地址讯息包括所述第一存储器(memory 1)(107)的一或多个第一数据存储地址(ADDR1),其位于所述复数个第一存储空间中,用以存储所述读取要求(read request)所欲读取的所述读取数据;所述第二存储虚拟化控制器(SVC2)(20)接收并存储所述地址讯息;所述第二存储虚拟化控制器(SVC2)(20)传送一讯息给所述主机(15),以通知所述主机(15)可以接收所述读取要求(read request)的所述读取数据;所述第二存储虚拟化控制器(SVC2)(20)根据所述地址讯息,经由所述传输接口至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处读取所述读取数据;以及所述第二存储虚拟化控制器(SVC2)(20)通知所述主机(15),所述读取要求(read request)已执行完成。
依据申请专利范围第21项所述的方法,其中所述传输接口是经由一冗余控制器通信(RCC)连接控制器(9)所建立的一控制器间通信通道(ICC)而达成。
依据本发明的另一实施例,其中于一数据存储系统架构(1)下访问数据的所述方法还包括:所述第一存储虚拟化控制器(SVC1)10先确认所述第一存储器107(memory 1)(107)中是否有所述读取要求(read request)所欲读取的所述读取数据。
依据本发明的另一实施例,其中于一数据存储系统架构(1)下访问数据的所述方法还包括:所述第一存储虚拟化控制器(SVC1)10从所述第一逻辑盘(LD1)(12)读取并暂存所述读取数据(DATA-H’)在所述第一存储器(memory1)(107)的所述一或多个第一数据存储地址(ADDR1)处。
依据本发明的另一实施例,其中至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处读取所述读取数据,是由所述第二存储虚拟化控制器(SVC2)(20)中的一第二主机端输出入控制器(201)所执行。
依据本发明的另一实施例,其中所述第一存储虚拟化控制器(SVC1)(10)是通过一第一交换器(switch 1)(103)与所述传输接口连接,所述第二存储虚拟化控制器(SVC2)(20)是通过一第二交换器(switch 2)(203)与所述传输接口连接。
依据本发明的另一实施例,其中所述第一交换器(switch 1)(103)与所述第二交换器(switch 2)(203)还具有一非透明桥接功能(Non-transparent bridge,NTB)(1033、2033)。
依据本发明的另一实施例,其中于一数据存储系统架构(1)下访问数据的所述方法还包括:所述第二存储虚拟化控制器(SVC2)20通知所述第一存储虚拟化控制器(SVC1)10,所述读取数据已经传送给所述主机(15)。
本发明的另一目的是提供一种一种数据存储系统架构(1),包括:一存储池(storage pool)(4),包括一第一逻辑盘(LD1)(12),其中所述第一逻辑盘(LD1)(12)是由一或多个物理存储装置(PSD)映像而成;一第一存储虚拟化控制器(SVC1)(10),包括一第一中央处理电路(CPC1)(105)、与一第一存储器(memory 1)(107),其中所述第一中央处理电路(CPC1)(105)用以管理所述第一逻辑盘(LD1)(12)并呈现给一主机(15),所述第一存储器(memory 1)(107)包括复数个第一存储空间;以及一第二存储虚拟化控制器(SVC2)(20),包括一第二中央处理电路(CPC2)(205)、与一第二存储器(memory 2)(207),其中所述第二中央处理电路(CPC2)(205)经由一传输接口连接至所述第一中央处理电路(CPC1)(105),所述第二存储器(memory 2)(207)包括复数个第二存储空间;其中,当所述第二存储虚拟化控制器(SVC2)(20)从所述主机(15)接收到欲访问所述第一逻辑盘(LD1)(12)的一输出入要求(I/O request)时,所述第二存储虚拟化控制器(SVC2)(20)中的所述第二中央处理电路(CPC2)(205)经由所述传输接口询问所述第一存储虚拟化控制器(SVC1)(10)有关一地址讯息;其中,所述第一存储虚拟化控制器(SVC1)(10)经由所述传输接口回复所述地址讯息给所述第二存储虚拟化控制器(SVC2)(20),所述地址讯息包括所述第一存储器(memory 1)(107)中一或多个第一数据存储地址(ADDR1);以及其中,所述第二存储虚拟化控制器(SVC2)(20)根据所述一或多个第一数据存储地址(ADDR1)完成所述输出入要求(I/Orequest)。
依据本发明的另一实施例,其中所述第一存储器(memory 1)(107)还包括一第一缓存缓冲单元(1071),提供对应于所述一或多个第一数据存储地址(ADDR1)的一或多个保留的第一存储空间;其中所述第二存储器(memory2)(207)还包括一第二缓存缓冲单元(2071),提供对应于所述一或多个第二数据存储地址(ADDR2)的一或多个保留的第二存储空间。
依据本发明的另一实施例,其中所述第一存储虚拟化控制器(SVC1)(10)还包括一第一主机端输出入控制器(host-side I/O controller 1)(101),做为所述第一存储虚拟化控制器(SVC1)(10)与所述主机(15)之间的传输接口;其中所述第二存储虚拟化控制器(SVC2)(20)还包括一第二主机端输出入控制器(host-side I/O controller 2)(201),做为所述第二存储虚拟化控制器(SVC2)(20)与所述主机(15)之间的传输接口。
依据本发明的另一实施例,其中所述第一存储虚拟化控制器(SVC1)(10)还包括一第一交换器(switch 1)(103),其具有非透明桥接功能(Non-transparent bridge,NTB)(1033),对内连接至所述第一中央处理电路(CPC1)(105)与所述第一主机端输出入连接控制器(host-side I/O controller 1)(101),对外则通过所述传输接口连接至所述第二存储虚拟化控制器(SVC2)(20);其中所述第二存储虚拟化控制器(SVC2)(20)还包括一第二交换器(switch 2)(203),其具有非透明桥接功能(Non-transparent bridge,NTB)(2033),对内连接至所述第二中央处理电路(CPC2)(205)与所述第二主机端输出入连接控制器(host-side I/O controller2)(201),对外则通过所述传输接口连接至所述第一存储虚拟化控制器(SVC1)(10)。
依据本发明的另一实施例,其中所述第一中央处理电路(CPC1)(105)与所述第一交换器(switch 1)(103)是整合在同一芯片上、或是各自独立的电路模块;其中所述第二中央处理电路(CPC2)(205)与所述第二交换器(switch 2)(203)是整合在同一芯片上、或是各自独立的电路模块。
依据本发明的另一实施例,其中所述第一主机端输出入控制器(host-side I/Ocontroller 1)(101)与所述第一交换器(switch 1)(103)是整合在同一芯片上、或是各自独立的电路模块;其中所述第二主机端输出入控制器(host-side I/Ocontroller 2)(201)与所述第二交换器(switch 2)(203)是整合在同一芯片上、或是各自独立的电路模块。
依据本发明的另一实施例,其中所述第一主机端输出入控制器(host-side I/Ocontroller 1)(101)与所述第一中央处理电路(CPC1)(105)是整合在同一芯片上、或是各自独立的电路模块;其中所述第二主机端输出入控制器(host-side I/O controller 2)(201)与所述第二中央处理电路(CPC2)(205)是整合在同一芯片上、或是各自独立的电路模块。
依据本发明的另一实施例,其中所述传输接口是经由一冗余控制器通信(RCC)连接控制器(9)所建立的一控制器间通信通道(ICC)而达成。
依据本发明的另一实施例,其中当所述输出入要求(I/O request)为一写入要求(write request)时,所述第二存储虚拟化控制器(SVC2)(20)依据接收到的所述地址讯息安排对应于所述一或多个第一数据存储地址(ADDR1)的所述第二存储器(memory 2)(207)中的一或多个第二数据存储地址(ADDR2),或是参考一第二群播表(MT2)(2031)以得知与所述一或多个第一数据存储地址(ADDR1)相对应的一或多个虚拟群播地址(virtualmulticast ADDR)。
依据本发明的另一实施例,其中所述第二存储虚拟化控制器(SVC2)(20)还具有一第二主机端输出入控制器(host-side I/O controller 2)(201)与一第二交换器(switch2)(203),所述第二主机端输出入控制器(host-side I/O controller2)(201)用以接收来自所述主机(15)的所述写入要求(write request)的一写入数据、以及附加所述一或多个第二数据存储地址(ADDR2)、或所述一或多个虚拟群播地址(virtual multicast ADDR)在所述写入数据,然后传送已附加所述一或多个第二数据存储地址(ADDR2)、或所述一或多个虚拟群播地址(virtual multicast ADDR)的所述写入数据至所述第二交换器(switch 2)(203)。
依据本发明的另一实施例,其中当所述第二交换器(switch 2)(203)接收到所述写入数据后,将所述写入数据存储于所述第二存储器(memory 2)(207)的所述一或多个第二数据存储地址(ADDR2)处,且所述第二交换器(switch2)(203)经由所述传输接口将所述写入数据存储于所述第一存储器(memory1)(107)的所述一或多个第一数据存储地址(ADDR1)处。
依据本发明的另一实施例,其中所述第二交换器(switch 2)(203)接收到所述写入数据后,根据所述写入数据中附加的所述一或多个虚拟群播地址(virtual multicastADDR),查找一第二群播表(MT2)(2031)以得到相对应的所述一或多个虚拟群播地址(virtual multicast ADDR)的所述一或多个第一数据存储地址(ADDR1)与所述一或多个第二数据存储地址(ADDR2),进而执行一群播(multicast)操作,将所述写入数据同时存储至所述第二存储器(memory2)(207)的所述一或多个第二数据存储地址(ADDR2)处、以及同时传送至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处。
依据本发明的另一实施例,其中当所述输出入要求(I/O request)为一读取要求(read request)时,所述第二存储虚拟化控制器(SVC2)(20)根据所述地址讯息,经由所述传输接口至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处读取所述读取数据。
附图说明
图1是为本发明的一实施例的一数据存储系统架构1的方块示意图。
图2A是为本发明的一数据存储系统架构1,在直写模式(write through mode)下,执行数据访问方法的第一实施例的第一部分流程图。
图2B是为本发明的一数据存储系统架构1,在直写模式(write through mode)下,执行数据访问方法的第一实施例的第二部分流程图。
图2C是为本发明的一数据存储系统架构1,在直写模式(write through mode)下,执行数据访问方法的第一实施例的第三部分流程图。
图3A是为本发明的一存储系统架构1实现图2A的步骤2001至步骤2013的信号传递示意图。
图3B是为本发明的一数据存储系统架构1实现图2B的信号传递示意图。
图3C是为本发明的一数据存储系统架构1实现图2A的步骤2001至步骤2003与步骤2017至步骤2023的信号传递示意图。
图3D是为本发明的一数据存储系统架构1实现图2C的信号传递示意图。
图4A是为本发明的一数据存储系统架构1,在回写模式(write back mode)下,执行数据访问方法的第二实施例的第一部分流程图。
图4B是为本发明的一数据存储系统架构1,在回写模式(write back mode)下,执行数据访问方法的第二实施例的第二部分流程图。
图4C是为本发明的一数据存储系统架构1,在回写模式(write back mode)下,执行数据访问方法的第二实施例的第三部分流程图。
图5A是为本发明的一数据存储系统架构1实现图4A的步骤4001至步骤4013的信号传递示意图。
图5B是为本发明的一数据存储系统架构1实现图4B的信号传递示意图。
图5C是为本发明的一数据存储系统架构1实现图4A的步骤4001至步骤4003与步骤4017至步骤4023的信号传递示意图。
图5D是为本发明的一数据存储系统架构1实现图4C的信号传递示意图。
图6是为本发明的一数据存储系统架构1中,群播表(multicast table)的一实施例的数据结构示意图。
图7是为本发明的一实施例的另一数据存储系统架构1a的方块示意图。
图8A是为本发明的数据存储系统架构1、1a,在回写模式(write back mode)下,执行数据访问方法的第三实施例的第一部分流程图。
图8B是为本发明的数据存储系统架构1、1a,在回写模式(write back mode)下,执行数据访问方法的第三实施例的第二部分流程图。
图8C是为本发明的数据存储系统架构1、1a,在回写模式(write back mode)下,执行数据访问方法的第三实施例的第三部分流程图。
图9A是为本发明的数据存储系统架构1、1a,执行数据访问方法的第四实施例的第一部分流程图。
图9B是为本发明的数据存储系统架构1、1a,执行数据访问方法的第四实施例的第二部分流程图。
其中,附图标记说明如下:
数据存储系统架构-1,1a;独立冗余磁盘阵列子系统-3,3a;存储池-4;主机端输出入装置连结-5;装置端输出入装置连接-7;第一存储虚拟化控制器(SVC1)-10;第一逻辑盘(LD1)-12;主机(host)-15;第二存储虚拟化控制器(SVC2)-20;第二逻辑盘(LD2)-22;第一主机端输出入控制器(host-side I/O controller 1)-101;第一交换器(switch 1)-103;第一中央处理电路(CPC1)-105;第一存储器(memory 1)-107;第一装置端输出入控制器(device-side I/O controller 1)-109;第二主机端输出入控制器(host-side I/Ocontroller 2)-201;第二交换器(switch 2)-203;第二中央处理电路(CPC2)-205;第二存储器(memory 2)-207;第二装置端输出入控制器(device-side I/O controller 2)-209;第一群播表(MT1)-1031;非透明桥接功能(NTB)-1033;第一中央处理单元(CPU1)-1051;第一缓存缓冲单元(buffer 1)-1071;第二群播表(MT2)-2031;非透明桥接功能(NTB)-2033;第二中央处理单元(CPU2)-2051;第二缓存缓冲单元(buffer 2)-2071;本发明的一数据存储系统架构1,在直写模式下执行数据访问方法的方法的第一实施例的第一部分流程图的步骤-2001-2025;本发明的一数据存储系统架构1,在直写模式下执行数据访问方法的方法的第一实施例的第二部分流程图的步骤-2027-2043;本发明的一数据存储系统架构1,在直写模式下执行数据访问方法的方法的第一实施例的第三部分流程图的步骤-2045-2061;本发明的一数据存储系统架构1,在直写模式下执行数据访问方法的方法的第二实施例的第一部分流程图的步骤-4001-4025;本发明的一数据存储系统架构1,在直写模式下执行数据访问方法的方法的第二实施例的第二部分流程图的步骤-4027-4043;本发明的一数据存储系统架构1,在直写模式下执行数据访问方法的方法的第二实施例的第三部分流程图的步骤-4045-4061;本发明的存储系统架构1、1a中,在回写模式(write back mode)下执行数据访问方法的第三实施例的第一部分流程图的步骤-8001-8015,8039-8041;本发明的存储系统架构1、1a中,在回写模式(write back mode)下执行数据访问方法的第三实施例的第二部分流程图的步骤-8017-8037;本发明的存储系统架构1、1a中,在回写模式(write backmode)下执行数据访问方法的第三实施例的第三部分流程图的步骤-8045-8059;本发明的存储系统架构1、1a中,执行数据访问方法的第四实施例的第一部分流程图的步骤-9001-9033;本发明的存储系统架构1、1a中,执行数据访问方法的第四实施例的第二部分流程图的步骤-9035-9047。
具体实施方式
请参阅图1,其是为依据本发明的一实施例的一数据存储系统架构1(后称「存储系统架构」)的方块示意图。存储系统架构1是由一主机(host)15与一独立冗余磁盘阵列子系统(redundant array of independent disks subsystem,RAID subsystem)3所组成;所述独立冗余磁盘阵列子系统3于后文中简称为「RAID子系统」3。所述RAID子系统3是通过一主机端输出入装置连接(host-side I/O device interconnect)5与所述主机(host)15相连接。RAID子系统3还包括一存储虚拟化控制器对(SVC pair)(又称「冗余对」(redundandentpair))、与一存储池(storage pool)4。其中,存储虚拟化控制器对(SVC pair)是由一第一存储虚拟化控制器(SVC1)10与一第二存储虚拟化控制器(SVC2)20所组成;存储池(storagepool)4是由一至多个物理存储装置(physical storage device,PSD)所组成,经虚拟化后形成一至多个逻辑盘(logical disk,LD)。于本发明的一实施例中,所述一至多个逻辑盘还包括一第一逻辑盘(LD1)12及一第二逻辑盘(LD2)22。两存储虚拟化控制器间10、20是通过一装置端输出入装置连接(device-side I/O device interconnect)7与存储池(storagepool)4相连接。虽然图1绘示的存储系统架构1是由一主机(host)15与一RAID子系统3所组成,但于本发明其它实施例中,可能是一或复数个主机15通过主机端输出入装置连接(host-side I/O device interconnect)5与一或复数个RAID子系统3相连接。此外,本发明的RAID子系统3所包括的逻辑盘数目不以图中的两个为限,可能包括两个以上的逻辑盘,且可能将复数个逻辑盘区分为两组,每一组各自包括至少一逻辑盘且为两存储虚拟化控制器10、20中的一所管辖。
本发明中的逻辑盘12、22是由存储虚拟化控制器10、20映像(map)一或多个物理存储装置(PSD)中的各区段所结合而成。在一实施例中,于此独立冗余磁盘阵列子系统3中的一或多个物理存储装置(PSD)可组合形成一物理存储装置数组(PSD array)。此处所称的物理存储装置(PSD),于本发明的一实施例中,可以是各种传输接口的硬盘(Hard DiskDrive)、固态硬盘(Solid State Drive)、或是任何可以用于存储数据的物理存储装置(physical storage device)。以上所称的传输接口,于本发明的一实施例中,可以是先进技术接取接口(Advanced Technology Attachment,ATA,或称为IDE)、序列先进技术接取接口(serial ATA,SATA)、小型计算机标准接口(Small Computer System Interface,SCSI)、序列连接小型计算机标准接口(Serial-Attached SCSI,SAS)、或光纤通道(FiberChannel,FC)…等用于传输数据的接口。第一存储虚拟化控制器(SVC1)10与第二存储虚拟化控制器(SVC2)20之间具有一冗余控制器通信(redundant controller communicating,RCC)连结控制器9。第一存储虚拟化控制器(SVC1)10与第二存储虚拟化控制器(SVC2)20可通过冗余控制器通信(RCC)连接控制器9建立彼此间的控制器间通信通道(inter-controller communicaions channel,ICC),以互相传送讯息或数据。在实作控制器间通信通道(ICC)的常见实施方式是为采用光纤通道仲裁循环(Fiber Channel-ArbitratedLoop,FC-AL)、操作于目标模式的并行小型计算机系统接口(parallel small computersystem interface,parallel SCSI)、采用远程存储器直接访问接口(remote directmemory access,RDMA)、采用快速周边组件互连接口(PCI Express,PCI-E)或操作于目标模式的序列先进技术接取接口(serial advanced technology attachment,SATA)等通信连接来实现,但不以此为限。
于本发明的一实施例中,第一存储虚拟化控制器(SVC1)10包括一第一主机端输出入装置连接控制器(host-side I/O device interconnect controller 1,或简称为「第一主机端输出入控制器(host-side I/O controller 1)」)101、具有非透明桥接功能(Non-transparent bridge,NTB)1033的一第一交换器(switch1)103、一第一中央处理电路(central process circuit 1,CPC1)105、一第一存储器(memory 1)107以及一第一装置端输出入装置连接控制器(device-side I/O device interconnect controller 1,或简称为「第一装置端输出入控制器(device-side I/O controller 1)」)109。其中,第一交换器(switch 1)103还包括一第一群播表(multicast table 1,MT1)1031,第一中央处理电路(CPC1)105还包括一第一中央处理单元(central process unit 1,CPU1)1051,第一存储器(memory 1)107还包括一第一缓存缓冲单元(cache buffer 1,buffer 1)1071。
于本发明的一实施例中,第二存储虚拟化控制器(SVC2)20包括一第二主机端输出入装置连接控制器(host-side I/O device interconnect controller 2,或简称为「第二主机端输出入控制器(host-side I/O controller 2)」)201、一第二中央处理电路(CPC2)205、具有非透明桥接功能(Non-transparent bridge,NTB)2033的一第二交换器(switch2)203、一第二存储器(memory 2)207以及一第二装置端输出入装置连接控制器(device-side I/O device interconnect controller 2,或简称为「第二装置端输出入控制器(device-side I/O controller 2)」)209;其中,第二交换器(switch 2)203还包括一第二群播表(multicast table 2,MT2)2031,第二中央处理电路(CPC2)205还包括一第二中央处理单元(CPU2)2051,第二存储器(memory 2)207还包括一第二缓存缓冲单元(cache buffer2,buffer 2)2071。
于本发明的另一实施例,第一存储虚拟化控制器(SVC1)10及/或第二存储虚拟化控制器(SVC2)20亦可采用不具有非透明桥接功能(Non-transparent bridge,NTB)的第一交换器(switch 1)103及/或第二交换器(switch 2)203。此时,第一交换器(switch 1)103及/或第二交换器(switch 2)203可以通过外接一具有非透明桥接功能(Non-transparentbridge,NTB)的端口(port)来达到相同的功效。于本发明的一实施例,此一具有非透明桥接功能(Non-transparent bridge,NTB)的端口是采用快速周边组件互连接口(PCI Express,PCI-E)。
第一主机端输出入控制器(host-side I/O controller 1)101经由主机端输出入装置连接(host-side I/O device interconnect)5连接于主机15,其是用以作为第一存储虚拟化控制器(SVC1)10与主机15之间的接口及缓冲,且可接收由主机15传来的输出入请求和相关数据,并且将其转换及/或映像给第一中央处理电路(CPC1)105。此外,第一主机端输出入控制器(host-side I/O controller 1)101可以包括用来耦接于主机15的一或多个第一主机端端口(host-side port)(图中没有绘示),所述些第一主机端端口的接口可以为:光纤通道支持构造(fibre channel supporting fabric)、点对点连结、公用回路连结及/或专用回路连接于目标模式,操作于目标模式的并行小型计算机系统接口(parallelsmall computer system interface,parallel SCSI)、支持因特网SCSI(internet SCSI,iSCSI)协议且操作于目标模式的以太网络、操作于目标模式的序列连接SCSI(serial-attached SCSI,SAS),以及操作于目标模式的序列先进技术接取接口(serial advancedtechnology attachment,SATA),但不以此为限。
同样地,第二主机端输出入控制器(host-side I/O controller 2)201经由主机端输出入装置连接(host-side I/O device interconnect)5连接于主机15,其是用以作为第二存储虚拟化控制器(SVC2)20与主机15之间的接口及缓冲,且可接收由主机15传来的输出入请求和相关数据,并且将其转换及/或映像给第二中央处理电路(CPC2)205。此外,第二主机端输出入控制器(host-side I/O controller 2)201可以包括用来耦接于主机15的一或多个第二主机端端口(host-side port)(图中没有绘示),所述些第二主机端端口的接口可以为:光纤通道支持构造(fibre channel supporting fabric)、点对点连结、公用回路连结及/或专用回路连接于目标模式,操作于目标模式的并行小型计算机系统接口(parallel small computer system interface,parallel SCSI)、支持因特网SCSI(internet SCSI,iSCSI)协议且操作于目标模式的以太网络、操作于目标模式的序列连接SCSI(serial-attached SCSI,SAS),以及操作于目标模式的序列先进技术接取接口(serial advanced technology attachment,SATA),但不以此为限。
第一装置端输出入控制器(device-side I/O controller 1)109连接第一中央处理电路(CPC1)105与装置端的逻辑盘(LD1、LD2)12、22,其是用以作为映像成逻辑盘(LD1、LD2)12、22的物理存储装置(PSD)与第一中央处理电路(CPC1)105之间的接口及缓冲,接收由第一中央处理电路(CPC1)105传来的输出入请求和相关数据,并且将来自第一中央处理电路(CPC1)105传来的输出入请求和相关数据转换及/或映像给逻辑盘(LD1、LD2)12、22。此外,第一装置端输出入控制器(device-side I/O controller 1)109可以包括一或多个第一装置端端口(device-side port)(图中没有绘示),用来耦接于映像成逻辑盘(LD1、LD2)12、22的一或多个物理存储装置(PSD),这些第一装置端端口的接口可以为:光纤通道仲裁循环(Fiber Channel-Arbitrated Loop,FC-AL)、小型计算机标准接口(Small ComputerSystem Interface,SCSI)、序列连接SCSI(Serial-Attached SCSI,SAS)、或是序列先进技术接取接口(SATA)…等,但不以此为限。
同样地,第二装置端输出入控制器(device-side I/O controller 2)209连接第二中央处理电路(CPC2)205与装置端的逻辑盘(LD1、LD2)12、22,其是用以作为映像成逻辑盘(LD1、LD2)12、22的物理存储装置(PSD)与第二中央处理电路(CPC2)205之间的接口及缓冲,接收由第二中央处理电路(CPC2)205传来的输出入请求和相关数据,并且将来自第二中央处理电路(CPC2)205传来的输出入请求和相关数据转换及/或映像给逻辑盘(LD1、LD2)12、22。此外,第二装置端输出入控制器(device-side I/O controller 2)209可以包括一或多个第二装置端端口(device-side port)(图中没有绘示),用来耦接于映像成逻辑盘(LD1、LD2)12、22的一或多个物理存储装置(PSD),这些第二装置端端口的接口可以为:光纤通道仲裁循环(Fiber Channel-Arbitrated Loop,FC-AL)、小型计算机标准接口(SmallComputer System Interface,SCSI)、序列连接SCSI(Serial-Attached SCSI,SAS)、或是序列先进技术接取接口(SATA)…等,但不以此为限。
在RAID子系统3中,若两存储虚拟化控制器(SVC1、SVC2)10、20的运作组态为主动-主动模式(active-active mode)且两存储虚拟化控制器10、20皆正常运作的情形下,两存储虚拟化控制器(SVC1、SVC2)10、20对呈现于此RAID子系统3的各个逻辑盘(LD1、LD2)12、22(或各个逻辑介质单元(LMU1、LMU2))的输出入请求各自进行呈现、管理及处理。在主动-主动模式中,上述二存储虚拟化控制器(SVC1、SVC2)10、20一直都准备在另一个存储虚拟化控制器(SVC1)10或(SVC2)20因故障(malfunction)而导致发生障碍或失能的情况下接管(take over)对方。于本发明的一实施例中,第一中央处理电路105(CPC1)是用以处理及/或监控来自于主机15的输出入要求(I/O request)、以及根据主机15的输出入要求(I/Orequest)对第一逻辑盘(LD1)12(亦即第一逻辑介质单元(LMU1))做虚拟与物理之间的输出入操作的转换/映像。换言的,第一中央处理电路(CPC1)105所属的第一存储虚拟化控制器(SVC1)10对于第一逻辑盘(LD1)12具有管理权限(ownership)。同样地,第二中央处理电路(CPC2)205是用以处理及/或监控来自于主机15的输出入要求(I/O request)、以及跟据主机15的输出入要求(I/O request)对第二逻辑盘(LD2)22(亦即第二逻辑介质单元(LMU2))做虚拟与物理之间的输出入操作的转换/映像。换言的,第二中央处理电路(CPC2)205所属的第二存储虚拟化控制器(SVC2)20对于第二逻辑盘(LD2)22具有管理权限(ownership)。
第一存储虚拟化控制器(SVC1)10的第一交换器(switch 1)103对内分别连接第一主机端输出入控制器(host-side I/O controller 1)101、第一中央处理电路(CPC1)105,对外则通过冗余控制器通信(RCC)连接控制器9连接至第二存储虚拟化控制器(SVC2)20的第二交换器(switch 2)203。第一交换器(switch 1)103不仅用以作为与其相连的各电路区块间的一双向传输接口(例如:第一交换器(switch 1)103与第二交换器(switch 2)203彼此间建立用以互相传送讯息及/或数据的控制器间通信通道(ICC)),也负责将来自主机15的写入数据传送至同样位于第一存储虚拟化控制器(SVC1)10中的第一存储器(memory 1)107的第一缓存缓冲单元(buffer 1)1071,或同时群播(multicast)至同样位于第一存储虚拟化控制器(SVC1)10中的第一存储器(memory 1)107的第一缓存缓冲单元(buffer 1)1071与第二存储虚拟化控制器(SVC2)20中的第二存储器(memory 2)207的第二缓存缓冲单元(buffer 2)2071。
同样地,第二存储虚拟化控制器(SVC2)20的第二交换器(switch 2)203对内分别连接第二主机端输出入控制器(host-side I/O controller 2)201、第二中央处理电路(CPC2)205,对外则通过冗余控制器通信(RCC)连接控制器9连接至第一存储虚拟化控制器(SVC1)10的第一交换器(switch 1)103。第二交换器(switch 2)203不仅用以作为与其相连的各电路区块间的一双向传输接口(例如:第二交换器(switch 2)203与第一交换器(switch 1)103彼此间建立用以互相传送讯息及/或数据的控制器间通信通道(ICC)),也负责将来自主机15的写入数据传送至同样位于第二存储虚拟化控制器(SVC2)20中的第二存储器(memory 2)207的第二缓存缓冲单元(buffer 2)2071,或同时群播(multicast)至同样位于第二存储虚拟化控制器(SVC2)20中的第二存储器(memory 2)207的第二缓存缓冲单元(buffer 2)2071与第一存储虚拟化控制器(SVC1)10中的第一存储器(memory 1)107的第一缓存缓冲单元(buffer 1)1071。此外,第一交换器(switch 1)103管理一第一群播表(MT1)1031,第二交换器(switch 2)203管理一第二群播表(MT2)2031,在本发明技术的一实施例中,所述两群播表(MT1、MT2)1031、2031是用于各别记录第一缓存缓冲单元(buffer 1)1071与第二缓存缓冲单元(buffer 2)2071各自暂时存储来自主机15的写入数据的数据存储地址与彼此间的对应关是、以及对应所述些存储地址的虚拟群播地址(multicast address)。于本发明的一实施例,所述两群播表(MT1、MT2)1031、2031的示意图如图6所示,其详细内容将于后文说明。
第一存储虚拟化控制器(SVC1)10的第一存储器(memory 1)107连接于第一中央处理电路(CPC1)105,其是用以作为一缓冲器,用来缓冲传送于主机(host)15及第一逻辑盘(LD1)12之间通过第一中央处理电路(CPC1)105的数据。同样地,第二存储虚拟化控制器(SVC2)20的第二存储器(memory 2)207连接于第二中央处理电路(CPC2)205,其是用以作为一缓冲器,用来缓冲传送于主机(host)15及第二逻辑盘(LD2)22之间通过第二中央处理电路(CPC2)205的数据。在实作时,第一存储器(memory 1)107与第二存储器(memory 2)207可以以动态随机访问存储器(DRAM)或同步动态随机访问存储器(SDRAM)来加以实现。此外,第一存储器(memory 1)107中的第一缓存缓冲单元(buffer1)1071与第二存储器(memory 2)207中的第二缓存缓冲单元(buffer 2)2071是用以暂时存储主机(host)15要写入第一逻辑盘(LD1)12及/或第二逻辑盘(LD2)22的写入数据(例如:写入数据(DATA-H))。
本发明于实际应用时的一实施例中,第一存储虚拟化控制器(SVC1)10所包括的第一主机端输出入控制器(host-side I/O controller 1)101、第一交换器(switch 1)103、第一中央处理电路(CPC1)105、第一存储器(memory 1)107以及第一装置端输出入控制器(device-side I/O controller 1)109可以视需求而全部整合在单一芯片上或分别配置在一或多个芯片上。于本发明一实施例,第一主机端输出入控制器(host-side I/Ocontroller 1)101与第一交换器(switch 1)103可以整合在同一芯片上、或是各自独立的电路模块。
同样地,第二存储虚拟化控制器(SVC2)20所包括的第二主机端输出入控制器(host-side I/O controller 2)201、第二交换器(switch 2)203、第二中央处理电路(CPC2)205、第二存储器(memory 2)207以及第二装置端输出入控制器(device-side I/Ocontroller 2)209可以视需求而全部整合在单一芯片上或分别配置在一或多个芯片上。于本发明一实施例,第二主机端输出入控制器(host-side I/O controller 2)201与第二交换器(switch 2)203可以整合在同一芯片上、或是各自独立的电路模块。
请参阅图2A-图2C与图3A-图3D。图2A是为依据本发明的存储系统架构1,在直写模式(write through mode)下,执行数据访问方法的第一实施例的第一部分流程图。图2B是为依据本发明的存储系统架构1,在直写模式(write through mode)下,执行数据访问方法的第一实施例的第二部分流程图。图2C是为依据本发明的存储系统架构,在直写模式(write through mode)下,执行数据访问方法的第一实施例的第三部分流程图。图3A-图3B是为本发明的一存储系统架构1实现图2A与图2B所示的实施例的数据访问方法的信号传递示意图。图3C与图3D是为本发明的一存储系统架构1实现图2A与图2C所示的实施例的数据访问方法的信号传递示意图。
请同时参阅图2A与图3A。图2A以存储系统架构1为例说明本发明技术的第一实施例的第一部分流程图,图3A绘示存储系统架构1实现图2A的步骤2001至步骤2013的信号传递示意图。举例来说,当主机15要将一写入数据(DATA-H)写入至RAID子系统3的第一逻辑盘12时,主机15会向RAID子系统3发出一输出入要求(I/O request),在此亦可称为主机写入要求(write request),且此主机写入要求(write request)可能会发送给RAID子系统3中的任一存储虚拟化控制器。在此例子中,假设第一逻辑盘12的管理者(owner)是第一存储虚拟化控制器10。当RAID子系统3的一存储虚拟化控制器(例如:第一存储虚拟化控制器(SVC1)10或第二存储虚拟化控制器(SVC2)20)收到所述主机写入要求时(步骤2001),接收到所述主机写入要求的存储虚拟化控制器(例如:第一存储虚拟化控制器(SVC1)10或第二存储虚拟化控制器(SVC2)20)会从所述主机写入要求所携带的信息判断:主机15是要将写入数据(DATA-H)写入到哪一个逻辑盘(在此例子中是:第一逻辑盘12),并因此知道自己对于所述主机写入要求所要写入的逻辑盘(即:第一逻辑盘12)是否具有的管理权限(ownership)(步骤2003)。
若以上步骤2003的判断结果是:所述主机写入要求是由非管理者(non-owner)的存储虚拟化控制器(在此例子中是:第二存储虚拟化控制器(SVC2)20)所接收到;也就是说,第二存储虚拟化控制器(SVC2)20接收到一个主机写入要求,要求将写入数据(DATA-H)写入至第一逻辑盘12中(步骤2003),而第一逻辑盘12是由其它存储虚拟化控制器(在此例子中是:第一存储虚拟化控制器(SVC1)10)所管辖。在此情况下,由于接收到主机写入要求的第二存储虚拟化控制器(SVC2)20不是第一逻辑盘12的管理者(owner),因此,第二存储虚拟化控制器(SVC2)20需要向第一逻辑盘12的管理者(owner)(即:第一存储虚拟化控制器(SVC1)10)询问一地址讯息,包括「将写入数据(DATA-H)写入到第一逻辑盘12的相关信息」(步骤2005)。此一询问的具体内容,在一实施例中可以是:第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205经由冗余控制器通信(RCC)连接控制器9所建立的控制器间通信通道(ICC)传送一询问指令(CMD-SC2 command)给第一存储虚拟化控制器(SVC1)10,询问第一存储虚拟化控制器(SVC1)10:预计将所述主机写入要求所关联的写入数据(DATA-H)存储在其第一存储器107的第一缓存缓冲单元1071的哪一(或哪些)数据存储地址所代表的存储空间(步骤2005)。当第一存储虚拟化控制器(SVC1)10接收到询问指令(CMD-SC2command)后,先在第一缓存缓冲单元1071中指定与一(或多个)数据存储地址(例如:ADDR1)对应的存储空间,用来暂存所述主机写入要求的写入数据(DATA-H),然后将所述一(或多个)数据存储地址(例如:ADDR1)回复给第二存储虚拟化控制器(SVC2)20(步骤2007)。第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205依据所述一(或多个)数据存储地址(例如:ADDR1),查找位于第二交换器203中的第二群播表(MT2)2031来找到与所述一(或多个)数据存储地址(例如:ADDR1)相对应的一(或多个)虚拟群播地址(virtual multicastADDR)(步骤2009)。接着,第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205先传送所述一(或多个)虚拟群播地址(virtual multicast ADDR)给第二存储虚拟化控制器(SVC2)20的第二主机端输出入控制器201(步骤2011),以供其在收到来自于主机15的写入数据(DATA-H)后,可以在所述写入数据(DATA-H)上附加所述一(或多个)虚拟群播地址(virtual multicast ADDR),用以供后续接收到写入数据的第二交换器203知道:附加有所述一(或多个)虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)需要同步写入至第一缓存缓冲单元1071与第二缓存缓冲单元2071的指定位置的中;的后,第二中央处理电路(CPC2)205传送一讯息给主机15,用以通知主机15已可以传送写入数据(DATA-H)至第二存储虚拟化控制器(SVC2)20(步骤2013)。接着,流程进入节点A(步骤2015),后续步骤由图2B绘示。
请同时参阅图2B与图3B。承续上述的步骤2013,经由节点A(步骤2015)来到图2B中的步骤2027~步骤2043,以执行图2B所示的第一实施例的第二部分流程,而图3B绘示其相关的信号传递示意图。当主机15被告知已可以传送写入数据(DATA-H)时,主机15就将写入数据(DATA-H)传送给第二存储虚拟化控制器(SVC2)20,由其中的第二主机端输出入控制器201接收(步骤2027)。当第二存储虚拟化控制器(SVC2)20接收到写入数据(DATA-H),第二存储虚拟化控制器(SVC2)20中的第二主机端输出入控制器201会把先前从第二中央处理电路(CPC2)205收到的所述一(或多个)虚拟群播地址(virtual multicast ADDR)附加于写入数据(DATA-H)而形成「附带有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)」,然后将「附带有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)」传送给第二存储虚拟化控制器(SVC2)20中的第二交换器203(步骤2029)。第二交换器203接收到「附带有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)」后,辨识出所述一(或多个)虚拟群播地址(virtual multicast ADDR),且依据所述一(或多个)虚拟群播地址(virtual multicast ADDR)查找第二群播表2031,以确定「附带有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)」将要写入的目的地,然后同时群播(multicast)写入数据(DATA-H)至第一存储虚拟化控制器(SVC1)10中的第一缓存缓冲单元1071的数据存储地址(ADDR1)处、与第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处(步骤2031)。在进行群播(multicast)的过程中,第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205持续判断写入数据(DATA-H)是否已经完全写入至第一存储虚拟化控制器(SVC1)10中的第一缓存缓冲单元1071的数据存储地址(ADDR1)处、与第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处(步骤2033),直到判断确定:所有写入数据(DATA-H)皆已经写入至两存储虚拟化控制器(SVC1、SVC2)10、20中的两缓存缓冲单元1071、2071,则进入下一步骤。
当步骤2033确认:所有写入数据(DATA-H)皆已写入至两缓存缓冲单元1071、2071,接收主机数据(DATA-H)的第二存储虚拟化控制器(SVC2)20必须要跟其组成同一存储虚拟化控制器对(SVC pair)的另一存储虚拟化控制器(即:第一存储虚拟化控制器(SVC1)10)传递必要的操作状态信息。此一传递信息的动作是通过冗余控制器通信(RCC)连接控制器9建立于两存储虚拟化控制器(SVC1、SVC2)10、20间的控制器间通信通道(ICC)来实现,传递信息的动作包括:第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205通知第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105:写入数据(DATA-H)已经写入至第一存储虚拟化控制器(SVC1)10中的第一缓存缓冲单元1071的数据存储地址(ADDR1)处、与第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处(步骤2035)。如此,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105方能得知:写入数据(DATA-H)已经写入至第一缓存缓冲单元1071中的预定数据存储地址(ADDR1)处。的后,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105可以着手进行后续处理,例如:将写入数据(DATA-H)写入至第一逻辑盘12。此外,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105可以经由第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205的通知,知道第二存储虚拟化控制器(SVC2)20中存有相同于所述写入数据(DATA-H)的一后备数据。
当第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105得知:第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205已经将写入数据(DATA-H)写入至第一缓存缓冲单元1071中的数据存储地址(ADDR1)处的后(亦即,步骤2035的后),第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105便可以着手将第一缓存缓冲单元1071中存储的写入数据(DATA-H)实际写入至第一逻辑盘12中(步骤2037),并在此写入的过程中,判断写入数据(DATA-H)是否已经完全写入至第一逻辑盘12(步骤2039)。
当确认写入数据(DATA-H)已经完全写入至第一逻辑盘12时,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105会通知第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205:写入数据(DATA-H)已经写入至第一逻辑盘12(步骤2041)。在第二存储虚拟化控制器(SVC2)20中第二中央处理电路(CPC2)205收到第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105的写入完成通知后,第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205便通知主机15:其先前所发出的主机写入要求已经执行完成(步骤2043)。
请同时参阅图2A与图3C。图2A以存储系统架构1为例说明本发明技术的第一实施例的第一部分流程图,图3C绘示存储系统架构1实现图2A的步骤2001至步骤2003与步骤2017至步骤2023的信号传递示意图。举例来说,当主机15要将一写入数据(DATA-H)写入至第一逻辑盘12时,主机15会向RAID子系统3发出一主机写入要求,且此主机写入要求可能会发送给RAID子系统3中的任一存储虚拟化控制器。在此例子中,假设第一逻辑盘12的管理者(owner)是第一存储虚拟化控制器10。当RAID子系统3的一存储虚拟化控制器(例如:第一存储虚拟化控制器(SVC1)10或第二存储虚拟化控制器(SVC2)20)收到所述主机写入要求时(步骤2001),接收到所述主机写入要求的存储虚拟化控制器(例如:第一存储虚拟化控制器(SVC1)10或第二存储虚拟化控制器(SVC2)20)会从所述主机写入要求所携带的信息判断:主机15是要将写入数据(DATA-H)写入到哪一个逻辑盘(在此例子中是:第一逻辑盘12),并因此知道自己对于所述主机写入要求所要写入的逻辑盘(即:第一逻辑盘12)是否具有的管理权限(ownership)(步骤2003)。
若以上步骤2003的判断结果是:所述主机写入要求是由管理者(owner)的存储虚拟化控制器(在此例子中是:第一存储虚拟化控制器(SVC1)10)所接收到;也就是说,第一存储虚拟化控制器(SVC1)10接收到一个主机写入要求,要求将写入数据(DATA-H)写入至其自身所管辖的第一逻辑盘12中(步骤2003)。在此情况下,由于接收到主机写入要求的第一存储虚拟化控制器(SVC1)10就是第一逻辑盘12的管理者(owner),因此,第一存储虚拟化控制器(SVC1)10可以径自决定要使用第一缓存缓冲单元1071的哪一(或哪些)数据存储地址所代表的存储空间,用以暂时存储所述主机写入要求所关联的写入数据(DATA-H)(步骤2017)。第一存储虚拟化控制器(SVC1)10中的第一中央处理电路105(CPC1)依据所述一(或多个)数据存储地址(ADDR1),查找位于第一交换器103中的第一群播表(MT1)1031来找到与所述一(或多个)数据存储地址(ADDR1)相对应的一(或多个)虚拟群播地址(virtualmulticast ADDR)(步骤2019)。接着,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105先传送所述一(或多个)虚拟群播地址(virtual multicast ADDR)给第一存储虚拟化控制器(SVC1)10的第一主机端输出入控制器101(步骤2021),以供其在收到来自于主机的写入数据(DATA-H)后,可以在所述写入数据(DATA-H)上附加所述一(或多个)虚拟群播地址(virtual multicast ADDR),如此供后续接收到写入数据的第一交换器103知道:附加有所述一(或多个)虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)需要同步写入至第一缓存缓冲单元1071与第二缓存缓冲单元2071的指定位置的中;的后,第一中央处理电路(CPC1)105再传送一讯息给主机15,用以通知主机15已可以传送写入数据(DATA-H)(步骤2023)。接着,流程进入节点B(步骤2025),后续步骤由图2C绘示。
请同时参阅图2C与图3D。承续上述的步骤2023,经由节点B(步骤2025)来到图2C中的步骤2045~步骤2061,以执行图2C中所示的第一实施例的第三部分流程,而图3D绘示其相关的信号传递示意图。当主机15被告知已可以传送写入数据(DATA-H)时,主机15就将写入数据(DATA-H)传送给第一存储虚拟化控制器(SVC1)10,由其中的第一主机端输出入控制器101接收(步骤2045)。当第一存储虚拟化控制器(SVC1)10接收到写入数据(DATA-H),第一存储虚拟化控制器(SVC1)10中的第一主机端输出入控制器101会把先前从第一中央处理电路(CPC1)105收到的所述一(或多个)虚拟群播地址(virtual multicast ADDR)附加于写入数据(DATA-H)而形成「附带有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)」,然后将「附带有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)」传送给第一存储虚拟化控制器(SVC1)10中的第一交换器103(步骤2047)。第一交换器103接收到「附带有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)」后,辨识出所述一(或多个)虚拟群播地址(virtual multicast ADDR),依据所述一(或多个)虚拟群播地址(virtual multicast ADDR)查找第一群播表1031,以确定「附带有虚拟群播地址(virtualmulticast ADDR)的写入数据(DATA-H)」将要写入的目的地,然后同时群播(multicast)写入数据(DATA-H)至第一存储虚拟化控制器(SVC1)10中的第一缓存缓冲单元1071的数据存储地址(ADDR1)处、与第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处(步骤2049)。在进行群播(multicast)的过程中,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105持续判断写入数据(DATA-H)是否已经完全写入至第一存储虚拟化控制器(SVC1)10中的第一缓存缓冲单元1071的数据存储地址(ADDR1)处、与第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处(步骤2051),直到判断确定:所有写入数据(DATA-H)皆已经写入至两存储虚拟化控制器(SVC1、SVC2)10、20中的两缓存缓冲单元1071、2071,则进入下一步骤。
当步骤2051确认:所有写入数据(DATA-H)皆已写入至两缓存缓冲单元1071、2071,接收主机数据(DATA-H)的第一存储虚拟化控制器(SVC1)10必须要跟其组成同一存储虚拟化控制器对(SVC pair)的另一存储虚拟化控制器(即:第二存储虚拟化控制器(SVC2)20)传递必要的操作状态信息。此一传递信息的动作是通过冗余控制器通信(RCC)连接控制器9建立于两存储虚拟化控制器(SVC1、SVC2)10、20间的控制器间通信通道(ICC)来实现,传递信息的动作包括:第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105通知第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205,写入数据(DATA-H)已经写入至第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处(步骤2053)。如此,第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205方能得知:有一笔写入数据(DATA-H)已经写入至第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处,以便再次确认及进行后续的处理。当第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205确认:写入数据(DATA-H)已经写入至第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处,第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205通过冗余控制器通信(RCC)连接控制器9所建立的控制器间通信通道(ICC),发送一确认讯息(写入完成通知)给第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105,用以让第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105确知写入数据(DATA-H)已经写入至第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071中的数据存储地址(ADDR2)处(步骤2055)。
当第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105收到来自第二存储虚拟化控制器(SVC2)20的确认讯息时,则可以确知:写入数据(DATA-H)已经写入至第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处。的后,第一中央处理电路(CPC1)105便可以着手将第一缓存缓冲单元1071中存储的写入数据(DATA-H)实际写入至第一逻辑盘12中(步骤2057),并在此写入的过程中,判断写入数据(DATA-H)是否已经完全写入至第一逻辑盘12(步骤2059)。
当确认写入数据(DATA-H)已经完全写入至第一逻辑盘12时,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105会通知主机15:其先前所发出的主机写入要求已经执行完成(步骤2061)。
请参阅图4A-图4C与图5A-图5D。图4A是为依据本发明的一存储系统架构1中,在回写模式(write back mode)下,执行数据访问方法的第二实施例的第一部分流程图。图4B是为依据本发明的存储系统架构1,在回写模式(write back mode)下,执行数据访问方法的第二实施例的第二部分流程图。图4C是为依据本发明的存储系统架构1,在回写模式(writeback mode)下,执行数据访问方法的第二实施例的第三部分流程图。图5A-图5B是为本发明的一存储系统架构1实现图4A与图4B所示的实施例的数据访问方法的信号传递示意图。图5C与图5D是为本发明的一存储系统架构1实现图4A与图4C所示的实施例的数据访问方法的信号传递示意图。
请同时参阅图4A与图5A。图4A以存储系统架构1为例说明本发明技术的第二实施例的第一部分流程图,而图5A绘示存储系统架构1实现图4A的步骤4001至步骤4013的信号传递示意图。举例来说,当主机15要将一写入数据(DATA-H)写入至RAID子系统3的第一逻辑盘12时,主机15会向RAID子系统3发出一主机写入要求,且此主机写入要求可能会发送给RAID子系统3中的任一存储虚拟化控制器。在此例子中,假设第一逻辑盘12的管理者(owner)是第一存储虚拟化控制器10。当RAID子系统3的一存储虚拟化控制器(例如:第一存储虚拟化控制器(SVC1)10或第二存储虚拟化控制器(SVC2)20)收到所述主机写入要求时(步骤4001),接收到所述主机写入要求的存储虚拟化控制器(例如:第一存储虚拟化控制器(SVC1)10或第二存储虚拟化控制器(SVC2)20)会从所述主机写入要求所携带的信息判断:主机15是要将写入数据(DATA-H)写入到哪一个逻辑盘(在此例子中是:第一逻辑盘12),并因此知道自己对于所述主机写入要求所要写入的逻辑盘(即:第一逻辑盘12)是否具有的管理权限(ownership)(步骤4003)。
若以上步骤4003的判断结果是:所述主机写入要求是由非管理者(non-owner)的存储虚拟化控制器(在此例子中是:第二存储虚拟化控制器(SVC2)20)所接收到;也就是说,第二存储虚拟化控制器(SVC2)20接收到一个主机写入要求,要求将写入数据(DATA-H)写入至第一逻辑盘12中(步骤4003),而第一逻辑盘12是由其它存储虚拟化控制器(在此例子中是:第一存储虚拟化控制器(SVC1)10)所管辖。在此情况下,由于接收到主机写入要求的第二存储虚拟化控制器(SVC2)20不是第一逻辑盘12的管理者(owner),因此,第二存储虚拟化控制器(SVC2)20需要向第一逻辑盘12的管理者(owner)(即:第一存储虚拟化控制器(SVC1)10)告知有所述主机写入要求并询问一地址讯息,包括「将写入数据(DATA-H)写入到第一逻辑盘12的相关信息」(步骤4005)。此一询问的具体内容,在一实施例中可以是:第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205经由冗余控制器通信(RCC)连接控制器9所建立的控制器间通信通道(ICC)传送一询问指令(CMD-SC2 command)给第一存储虚拟化控制器(SVC1)10,询问第一存储虚拟化控制器(SVC1)10:预计将所述主机写入要求所关联的写入数据(DATA-H)存储在其第一存储器107的第一缓存缓冲单元1071的哪一(或哪些)数据存储地址所代表的存储空间(步骤4005)。当第一存储虚拟化控制器(SVC1)10接收到询问指令(CMD-SC2 command)后,先在第一缓存缓冲单元1071中指定与一(或多个)数据存储地址(例如:ADDR1)对应的存储空间,用来暂存所述主机写入要求的写入数据(DATA-H),然后将所述一(或多个)数据存储地址(例如:ADDR1)回复给第二存储虚拟化控制器(SVC2)20(步骤4007)。第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205依据所述一(或多个)数据存储地址(例如:ADDR1),查找位于第二交换器203中的第二群播表(MT2)2031来找到与所述一(或多个)数据存储地址(例如:ADDR1)相对应的一(或多个)虚拟群播地址(virtual multicast ADDR)(步骤4009)。接着,第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205先传送所述一(或多个)虚拟群播地址(virtual multicastADDR)给第二存储虚拟化控制器(SVC2)20的第二主机端输出入控制器201(步骤2011),以供其在收到来自于主机15的写入数据(DATA-H)后,可以在所述写入数据(DATA-H)上附加所述一(或多个)虚拟群播地址(virtual multicast ADDR),用以供后续接收到写入数据的第二交换器203知道:附加有所述一(或多个)虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)需要同步写入至第一缓存缓冲单元1071与第二缓存缓冲单元2071的指定位置的中;的后,第二中央处理电路(CPC2)205再传送一讯息给主机15,用以通知主机15已可以传送写入数据(DATA-H)至第二存储虚拟化控制器(SVC2)20(步骤4013)。接着,流程进入节点C(步骤4015),后续步骤由图4B绘示。
请同时参阅图4B与图5B。承续上述的步骤4013,经由节点C(步骤4015)来到图4B中的步骤4027~步骤4043,以执行图4B所示的第二实施例的第二部分流程,而图5B绘示其相关的信号传递示意图。当主机15被告知已可以传送写入数据(DATA-H)时,主机15就将写入数据(DATA-H)传送给第二存储虚拟化控制器(SVC2)20,由其中的第二主机端输出入控制器201接收(步骤4027)。当第二存储虚拟化控制器(SVC2)20接收到写入数据(DATA-H),第二存储虚拟化控制器(SVC2)20中的第二主机端输出入控制器201会把先前从第二中央处理电路(CPC2)205收到的所述一(或多个)虚拟群播地址(virtual multicast ADDR)附加于写入数据(DATA-H)而形成「附带有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)」,然后将「附带有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)」传送给第二存储虚拟化控制器(SVC2)20中的第二交换器203(步骤4029)。第二交换器203接收到「附带有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)」后,辨识出所述一(或多个)虚拟群播地址(virtual multicast ADDR),且依据所述一(或多个)虚拟群播地址(virtual multicast ADDR)查找第二群播表2031,以确定「附带有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)」将要写入的目的地,然后同时群播(multicast)写入数据(DATA-H)至第一存储虚拟化控制器(SVC1)10中的第一缓存缓冲单元1071的数据存储地址(ADDR1)处、与第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处(步骤4031)。在进行群播(multicast)的过程中,第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205持续判断写入数据(DATA-H)是否已经完全写入至第一存储虚拟化控制器(SVC1)10中的第一缓存缓冲单元1071的数据存储地址(ADDR1)处、与第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处(步骤4033),直到判断确定:所有写入数据(DATA-H)皆已经写入至两存储虚拟化控制器(SVC1、SVC2)10、20中的两缓存缓冲单元1071、2071,则进入下一步骤。
当步骤4033确认:所有写入数据(DATA-H)皆已写入至两缓存缓冲单元1071、2071,接收主机数据(DATA-H)的第二存储虚拟化控制器(SVC2)20必须要跟其组成同一存储虚拟化控制器对(SVC pair)的另一存储虚拟化控制器(即:第一存储虚拟化控制器(SVC1)10)传递必要的操作状态信息。此一传递信息的动作是通过冗余控制器通信(RCC)连接控制器9建立于两存储虚拟化控制器(SVC1、SVC2)10、20间的控制器间通信通道(ICC)来实现,传递信息的动作包括:第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205通知第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105:写入数据(DATA-H)已经写入至第一存储虚拟化控制器(SVC1)10中的第一缓存缓冲单元1071的数据存储地址(ADDR1)处、与第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处(步骤4035)。如此,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105方能知道:写入数据(DATA-H)已经写入至第一缓存缓冲单元1071中的预定数据存储地址(ADDR1)处。的后,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105可以着手进行后续处理,例如:将写入数据(DATA-H)写入至第一逻辑盘12。此外,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105可以经由第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205的通知,知道第二存储虚拟化控制器(SVC2)20中存有相同于所述写入数据(DATA-H)的一后备数据。
当第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105知道:写入数据(DATA-H)已经写入至第一缓存缓冲单元1071中的数据存储地址(ADDR1)处后,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105,通过冗余控制器通信(RCC)连接控制器9所建立的控制器间通信通道(ICC),发出一确认讯息(写入完成通知)给第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205,用以让第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205确知写入数据(DATA-H)已经写入至第一存储虚拟化控制器(SVC1)10中的第一缓存缓冲单元1071的数据存储地址(ADDR1)处(步骤4037)。
然后,在第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205收到来自第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105的写入完成通知后(亦即,在执行步骤4037的后),第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205便通知主机15:其先前所发出的主机写入要求已经执行完成(步骤4039)。
另一方面,当写入数据(DATA-H)已经写入至第一缓存缓冲单元1071中的数据存储地址(ADDR1)后,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105随时可以着手将第一缓存缓冲单元1071中的数据存储地址(ADDR1)处所存储的写入数据(DATA-H)实际写入至第一逻辑盘12中(步骤4041)。此一写入过程可能是一背景处理过程,此外,第一存储虚拟化控制器(SVC1)10会持续判断写入数据(DATA-H)是否已经完全写入至第一逻辑盘12中,直到确定所有写入数据(DATA-H)皆已写入完成为止(步骤4043)。
请同时参阅图4A与图5C。图4A以存储系统架构1为例说明本发明技术的第二实施例的第一部分流程图,而图5C绘示存储系统架构1实现图4A的步骤4001至步骤4003与步骤4017至步骤4023的信号传递示意图。举例来说,当主机15要将一写入数据(DATA-H)写入至第一逻辑盘12时,主机15会向RAID子系统3发出一主机写入要求,且此主机写入要求可能会发送给RAID子系统3中的任一存储虚拟化控制器。在此例子中,假设第一逻辑盘12的管理者(owner)是第一存储虚拟化控制器10。当RAID子系统3的一存储虚拟化控制器(例如:第一存储虚拟化控制器(SVC1)10或第二存储虚拟化控制器(SVC2)20)收到所述主机写入要求时(步骤4001),接收到所述主机写入要求的存储虚拟化控制器(例如:第一存储虚拟化控制器(SVC1)10或第二存储虚拟化控制器(SVC2)20)会从所述主机写入要求所携带的信息判断:主机15是要将写入数据(DATA-H)写入到哪一个逻辑盘(在此例子中是:第一逻辑盘12),并因此知道自己对于写入要求所要写入的逻辑盘(即:第一逻辑盘12)是否具有的管理权限(ownership)(步骤4003)。
若以上步骤4003的判断结果是:所述主机写入要求是由管理者(owner)的存储虚拟化控制器(在此例子中是:第一存储虚拟化控制器(SVC1)10)所接收到;也就是说,第一存储虚拟化控制器10(SVC1)接收到一个主机写入要求,要求将写入数据(DATA-H)写入至其自身所管辖的第一逻辑盘12中(步骤4003)。在此情况下,由于接收到主机写入要求的第一存储虚拟化控制器(SVC1)10就是第一逻辑盘12的管理者(owner),因此,第一存储虚拟化控制器(SVC1)10可以径自决定要使用第一缓存缓冲单元1071的哪一(或哪些)数据存储地址所代表的存储空间,用以暂时存储所述主机写入要求所关联的写入数据(DATA-H)(步骤4017)。第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105依据所述一(或多个)数据存储地址(ADDR1),查找位于第一交换器103中的第一群播表(MT1)1031来找到与所述一(或多个)数据存储地址(ADDR1)相对应的一(或多个)虚拟群播地址(virtualmulticast ADDR)(步骤4019)。接着,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105先传送所述一(或多个)虚拟群播地址(virtual multicast ADDR)给第一存储虚拟化控制器(SVC1)10的第一主机端输出入控制器101(步骤4021),以供其在收到来自于主机的写入数据(DATA-H)后,可以在所述写入数据(DATA-H)上附加所述一(或多个)虚拟群播地址(virtual multicast ADDR),如此供后续接收到写入数据的第一交换器103知道:附加有所述一(或多个)虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)需要同步写入至第一缓存缓冲单元1071与第二缓存缓冲单元2071的指定位置的中;的后,第一中央处理电路(CPC1)105再传送一讯息给主机15,用以通知主机15已可以传送写入数据(DATA-H)(步骤4023)。接着,流程进入节点D(步骤4025),后续步骤由图4C绘示。
请同时参阅图4C与图5D。承续上述的步骤4023,经由节点D(步骤4025)来到图4C中的步骤4045~步骤4061,以执行图4C中所示的第二实施例的第三部分流程,而图5D绘示其相关的信号传递示意图。当主机15被告知已可以传送写入数据(DATA-H)时,主机15就将写入数据(DATA-H)传送给第一存储虚拟化控制器(SVC1)10,由其中的第一主机端输出入控制器101接收(步骤4045)。当第一存储虚拟化控制器(SVC1)10接收到写入数据(DATA-H),第一存储虚拟化控制器(SVC1)10中的第一主机端输出入控制器101会把先前从第一中央处理电路(CPC1)105收到的所述一(或多个)虚拟群播地址(virtual multicast ADDR)附加于写入数据(DATA-H)而形成「附带有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)」,然后将「附带有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)」传送给第一存储虚拟化控制器(SVC1)10中的第一交换器103(步骤4047)。第一交换器103接收到「附带有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)」后,辨识出所述一(或多个)虚拟群播地址(virtual multicast ADDR),依据所述一(或多个)虚拟群播地址(virtual multicast ADDR)查找第一群播表1031,以确定「附带有虚拟群播地址(virtualmulticast ADDR)的写入数据(DATA-H)」将要写入的目的地,然后同时群播(multicast)写入数据(DATA-H)至第一存储虚拟化控制器(SVC1)10中的第一缓存缓冲单元1071的数据存储地址(ADDR1)处、与第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处(步骤4049)。在进行群播(multicast)的过程中,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105持续判断写入数据(DATA-H)是否已经完全写入至第一存储虚拟化控制器(SVC1)10中的第一缓存缓冲单元1071的数据存储地址(ADDR1)处、与第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处(步骤4051),直到判断确定:所有写入数据(DATA-H)皆已经写入至两存储虚拟化控制器(SVC1、SVC2)10、20中的两缓存缓冲单元1071、2071,则进入下一步骤。
当步骤4051确认:所有写入数据(DATA-H)皆已写入至两缓存缓冲单元1071、2071,接收主机数据(DATA-H)的第一存储虚拟化控制器(SVC1)10必须要跟其组成同一存储虚拟化控制器对(SVC pair)的另一存储虚拟化控制器(即:第二存储虚拟化控制器(SVC2)20)传递必要的操作状态信息。此一传递信息的动作是通过冗余控制器通信(RCC)连接控制器9所建立的控制器间通信通道(ICC)来实现,传递信息的动作包括:第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105通知第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205,写入数据(DATA-H)已经写入至第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处(步骤4053)。如此,第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205方能得知:有一笔写入数据(DATA-H)已经写入至第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处,以便再次确认及进行后续的处理。当第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205确认:写入数据(DATA-H)已经写入至第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071的数据存储地址(ADDR2)处,第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205通过冗余控制器通信(RCC)连接控制器9所建立的控制器间通信通道(ICC),发送一确认讯息(写入完成通知)给第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105,用以让第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105确知写入数据(DATA-H)已经写入至第二存储虚拟化控制器(SVC2)20中的第二缓存缓冲单元2071中的数据存储地址(ADDR2)处(步骤4055)。
然后,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105收到来自第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205的写入完成通知后(亦即,在执行步骤4055的后),第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105便通知主机15:其先前所发出的主机写入要求已经执行完成(步骤4057)。
另一方面,当写入数据(DATA-H)已经写入至第一缓存缓冲单元1071中的数据存储地址(ADDR1)后,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105随时可以着手将第一缓存缓冲单元1071中的数据存储地址(ADDR1)处所存储的写入数据(DATA-H)实际写入至第一逻辑盘12中(步骤4059)。此一写入过程可能是一背景处理过程,此外,第一存储虚拟化控制器(SVC1)10会持续判断写入数据(DATA-H)是否已经完全写入至第一逻辑盘12中,直到确定所有写入数据(DATA-H)皆已写入完成为止(步骤4061)。
请参阅图6。图6是为本发明的存储系统架构1中,用以实现图2A-图2C及图4A-图4C所示的数据访问方法中所使用的群播表(multicast table,MT)(例如:第一群播表1031与第二群播表2031)的一实施例的数据结构示意图。基本上,第一群播表1031与第二群播表2031的结构相同,于本发明一实施例中皆包括三个字段,分别是:虚拟群播地址(virtualmulticast ADDR)、第一缓存缓冲单元1071的数据存储地址(ADDR1)、及第二缓存缓冲单元2071的数据存储地址(ADDR2);其中,每一项目(entry)的虚拟群播地址(virtualmulticast ADDR)皆对应到一关联的第一缓存缓冲单元1071的数据存储地址(ADDR1)、与一关联的第二缓存缓冲单元2071的数据存储地址(ADDR2)。虚拟群播地址(virtualmulticast ADDR)是存储系统架构1所保留、以一种独特方式表示的一组(群)虚拟数据地址,其并不会对应到物理的存储器地址,而只是用于供存储虚拟化控制器(SVC1、SVC2)10、20辨识是否要对一写入要求的写入数据(DATA-H)执行群播(multicasting)的功能。除此之外,每一虚拟群播地址(virtual multicast ADDR)还具有一重要任务:赋予第一缓存缓冲单元1071的一数据存储地址(ADDR1)与第二缓存缓冲单元2071的一数据存储地址(ADDR2)之间具有关联的对应关是。因此,当存储虚拟化控制器(SVC1、SVC2)10、20从所接收的写入数据(DATA-H)中辨识到虚拟群播地址(virtual multicast ADDR)时,便可以知道所述笔写入数据(DATA-H)要进行群播(multicasting),且群播(multicasting)的目标地址为相关联的第一缓存缓冲单元1071的数据存储地址(ADDR1)与相关联的第二缓存缓冲单元2071的数据存储地址(ADDR2)。根据图6的实施例,图中例示在第一缓存缓冲单元1071中保留地址000000~00FFFF做为执行群播(multicasting)功能时的数据存储地址(ADDR1);而在第二缓存缓冲单元2071中亦保留地址000000~00FFFF做为执行群播(multicasting)功能时的数据存储地址(ADDR2)。图6亦例示,以第一项目(entry)为例,虚拟群播地址(virtualmulticast ADDR)为"FF0000"是关联到第一缓存缓冲单元1071的保留地址"000000"处与第二缓存缓冲单元2071的保留地址"000000"处。
请参阅图2A-图2B、图4A-图4B、及图6。于本发明的一实施例中,当非管理者(non-owner)的存储虚拟化控制器(SVC)(如图中例示的:第二存储虚拟化控制器(SVC2)20)接收到来自主机15的一写入要求时,非管理者(non-owner)的第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205会先询问身为管理者(owner)的第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105(步骤2005)而取得一(或多个)相关连的数据存储地址(ADDR1)(步骤2007)。非管理者(non-owner)的第二存储虚拟化控制器(SVC2)20取得所述一(或多个)相关连的数据存储地址(ADDR1)后,进而依据所述一(或多个)相关连的数据存储地址(ADDR1)查找本身的第二群播表2031,以确知与所述一(或多个)数据存储地址(ADDR1)相对应的一(或多个)虚拟群播地址(virtual multicast ADDR)(步骤2009)。然后,非管理者(non-owner)的第二存储虚拟化控制器(SVC2)20将所述一(或多个)虚拟群播地址(virtual multicast ADDR)附加到所述主机写入要求的写入数据(DATA-H),并在收到所述附有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)时判断:执行群播(multicast)时,要将写入数据(DATA-H)存储到与所述虚拟群播地址(virtual multicastADDR)关联的两数据存储地址(ADDR1、ADDR2)处。
请参阅图2A与图2C、图4A-图4C、及图6。于本发明的另一实施例中,当管理者(owner)的存储虚拟化控制器(SVC)(如图中例示的:第一存储虚拟化控制器(SVC1)10)接收到来自主机15的一写入要求时,因为第一存储虚拟化控制器(SVC1)10本身就是目标逻辑盘(如图中例示的:第一逻辑盘12)的管理者(owner),因此其会直接指定一(或多个)相关连的数据存储地址(ADDR1)(步骤2017)做为写入数据(DATA-H)的暂存地址。接着,做为管理者(owner)的第一存储虚拟化控制器(SVC1)10依据所述一(或多个)相关连的数据存储地址(ADDR1)查找本身的第一群播表1031,以确知与所述一(或多个)相关连的数据存储地址(ADDR1)相对应的一(或多个)虚拟群播地址(virtual multicast ADDR)(步骤2019)。然后,做为管理者(owner)的第一存储虚拟化控制器(SVC1)10将所述一(或多个)虚拟群播地址(virtual multicast ADDR)附加到所述主机写入要求的写入数据(DATA-H),并在收到所述附有虚拟群播地址(virtual multicast ADDR)的写入数据(DATA-H)时判断:执行群播(multicast)时,要将写入数据(DATA-H)存储到与所述虚拟群播地址(virtual multicastADDR)关联的两数据存储地址(ADDR1、ADDR2)处。
综上所述,本发明的数据访问方法的群播(multicast)机制,提供具有冗余存储虚拟化控制器对(redundant SVC pair)的数据存储系统架构更有效率地处理写入要求的功能。尤其是,当主机将写入要求发送到非具有管理权限(ownseship)的存储虚拟化控制器(SVC)时,可以通过群播(multicast)机制,快速地完成双存储虚拟化控制器之间的数据同步工作。而这除了可以防止因冗余存储虚拟化控制器对(redundant SVC pair)中的其一存储虚拟化控制器(SVC)在执行写入时发生故障而导致暂存于所述存储虚拟化控制器(SVC)内的数据遗失,亦可以避免因非管理者(non-owner)的存储虚拟化控制器(SVC)接收到写入要求而被拒绝访问所衍生的负担,更可以缩短将写入数据(DATA-H)后备于冗余存储虚拟化控制器对(redundant SVC pair)中的另一存储虚拟化控制器(SVC)的所需额外时间。因此,本发明的数据访问方法的群播(multicast)机制不仅可以解决前述的问题外,还能够提供一可靠且快速的数据访问方法。
请参阅图7,其是为依据本发明的另一实施例的一数据存储系统架构1a(后称「存储系统架构」)的方块示意图。存储系统架构1a由一主机(host)15与一独立冗余磁盘阵列子系统(redundant array of independent disks subsystem,RAID subsystem)3a(后称「RAID子系统」)所组成。图7所绘示的存储系统架构1a与图1所绘示的存储系统架构1相较,第一交换器(switch 1)103与第二交换器(switch 2)203是各自整合于第一中央处理电路(CPC1)105与第二中央处理电路(CPC2)205的中,两者形成一单一组件/电路系统/装置。此外,图7中亦绘示了第一交换器(switch 1)103与第二交换器(switch 2)203通过各自具有非透明桥接功能(NTB)1033、2033的端口与冗余控制器通信(RCC)连接控制器9做连接。如此,通过第一交换器(switch 1)103、第二交换器(switch2)203、与冗余控制器通信(RCC)连接控制器9所形成的通道,可让第一存储虚拟化控制器(SVC1)10与第二存储虚拟化控制器(SVC2)20互相传送讯息或数据。如前所述,非透明桥接功能(NTB)1033、2033除了可以整合于第一交换器(switch 1)103与第二交换器(switch 2)203的中,亦可以以一独立模块建构在所系属的交换器之外(例如,第一交换器(switch 1)103与第一非透明桥接功能模块1033,以及第二交换器(switch 2)203与第二非透明桥接功能模块2033)。除此之外,存储系统架构1a中的各部件皆与图1的存储系统架构1的各部件的功能与角色相同,因此不再赘述。
请参阅图8A-图8C。图8A是为依据本发明的一存储系统架构1a中,在回写模式(write back mode)下,执行数据访问方法的第三实施例的第一部分流程图。图8B是为依据本发明的存储系统架构1a,在回写模式(write back mode)下,执行数据访问方法的第三实施例的第二部分流程图。图8C是为依据本发明的存储系统架构1a,在回写模式(write backmode)下,执行数据访问方法的第三实施例的第三部分流程图。
请参阅图8A。当主机15要将一写入数据(DATA-H)写入至RAID子系统3a的第一逻辑盘12时,主机15会向RAID子系统3a发出一主机写入要求,且此主机写入要求可能会发送给RAID子系统3a中的任一存储虚拟化控制器。在此例子中,假设第一逻辑盘12的管理者(owner)是第一存储虚拟化控制器10。当RAID子系统3a的一存储虚拟化控制器(例如:第一存储虚拟化控制器(SVC1)10或第二存储虚拟化控制器(SVC2)20)收到所述主机写入要求时(步骤8001),接收到所述主机写入要求的存储虚拟化控制器(例如:第一存储虚拟化控制器(SVC1)10或第二存储虚拟化控制器(SVC2)20)会从所述主机写入要求所携带的信息判断:主机15是要将写入数据(DATA-H)写入到哪一个逻辑盘(在此例子中是:第一逻辑盘12),并因此知道自己对于所述主机写入要求所要写入的逻辑盘(即:第一逻辑盘12)是否具有的管理权限(ownership)(步骤8003)。
若以上步骤8003的判断结果是:所述主机写入要求是由非管理者(non-owner)的存储虚拟化控制器(在此例子中是:第二存储虚拟化控制器(SVC2)20)所接收到;也就是说,第二存储虚拟化控制器(SVC2)20接收到一个主机写入要求,要求将写入数据(DATA-H)写入至第一逻辑盘12中(步骤8003),而第一逻辑盘12是由其它存储虚拟化控制器(在此例子中是:第一存储虚拟化控制器(SVC1)10)所管辖。在此情况下,由于接收到主机写入要求的第二存储虚拟化控制器(SVC2)20不是第一逻辑盘12的管理者(owner),因此,第二存储虚拟化控制器(SVC2)20需要向第一逻辑盘12的管理者(owner)(即:第一存储虚拟化控制器(SVC1)10)告知有所述主机写入要求并询问一地址讯息,包括「将写入数据(DATA-H)写入到第一逻辑盘12的相关信息」(步骤8005)。此一询问的具体内容,在一实施例中可以是:第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205经由冗余控制器通信(RCC)连接控制器9所建立的控制器间通信通道(ICC)传送一询问指令(CMD-SC2command)给第一存储虚拟化控制器(SVC1)10,询问第一存储虚拟化控制器(SVC1)10:预计将所述主机写入要求所关联的写入数据(DATA-H)存储在其第一存储器107的第一缓存缓冲单元1071的哪一(或哪些)数据存储地址所代表的存储空间(步骤8005)。当第一存储虚拟化控制器(SVC1)10接收到询问指令(CMD-SC2 command)后,先在第一缓存缓冲单元1071中指定与一(或多个)数据存储地址(例如:ADDR1)对应的存储空间,用来暂存所述主机写入要求的写入数据(DATA-H),然后将所述一(或多个)数据存储地址(例如:ADDR1)回复给第二存储虚拟化控制器(SVC2)20(步骤8007)。第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205存储第一存储虚拟化控制器(SVC1)10所回复的所述一(或多个)数据存储地址(例如:ADDR1),并据的确定与所述一(或多个)第一数据存储地址(例如:ADDR1)相对应的第二存储器207的第二缓存缓冲单元2071的一(或多个)数据存储地址(例如:ADDR2)(步骤8009)。接着,第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205先传送所述一(或多个)数据存储地址(例如:ADDR2)给第二存储虚拟化控制器(SVC2)20的第二主机端输出入控制器201(步骤8011),以供其在收到来自于主机15的写入数据(DATA-H)后,可以据的把所述写入数据(DATA-H)存储在所述一(或多个)数据存储地址(例如:ADDR2);的后,第二中央处理电路(CPC2)205通知主机15已可以传送写入数据(DATA-H)至第二存储虚拟化控制器(SVC2)20(步骤8013)。接着,流程进入节点E(步骤8015),后续步骤由图8B绘示。
请参阅图8B。承续上述的步骤8013,经由节点E(步骤8015)来到图8B中的步骤8017~步骤8037,以执行图8B所示的第三实施例的第二部分流程。当主机15被告知已可以传送写入数据(DATA-H)时,主机15就将写入数据(DATA-H)传送给第二存储虚拟化控制器(SVC2)20,由其第二主机端输出入控制器201接收(步骤8017)。当第二主机端输出入控制器201接收到写入数据(DATA-H)后,会把所述一(或多个)数据存储地址(例如:ADDR2)附加于写入数据(DATA-H),然后再传送给第二交换器203(步骤8019)。第二交换器203接收到「附带有数据存储地址(例如:ADDR2)的写入数据(DATA-H)」后,依据所述一(或多个)数据存储地址(例如:ADDR2)将写入数据(DATA-H)写入至第二缓存缓冲单元2071的所述一(或多个)数据存储地址(例如:ADDR2)处(步骤8021)。在进行写入的过程中,第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205持续判断写入数据(DATA-H)是否已经完全写入至第二存储虚拟化控制器(SVC2)20的第二缓存缓冲单元2071的数据存储地址(例如:ADDR2)处(步骤8023),直到判断确定:所有写入数据(DATA-H)已经写入至第二存储虚拟化控制器(SVC2)20的第二缓存缓冲单元2071的数据存储地址(例如:ADDR2)处,则进入下一步骤。
当步骤8023确认:所有写入数据(DATA-H)已写入至第二缓存缓冲单元2071的数据存储地址(例如:ADDR2)处,接收主机数据(DATA-H)的第二存储虚拟化控制器(SVC2)20会依据先前所收到的第一缓存缓冲单元1071的所述一(或多个)数据存储地址(例如:ADDR1),将写入数据(DATA-H)写入至第一存储虚拟化控制器(SVC1)10的第一缓存缓冲单元1071的数据存储地址(例如:ADDR1)处(步骤8025)。此一写入的动作是经由第二交换器203、冗余控制器通信(RCC)连接控制器9、与第一交换器103共同建立于两存储虚拟化控制器(SVC1、SVC2)10、20间的控制器间通信通道(ICC)来实现。在进行写入的过程中,第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205持续判断写入数据(DATA-H)是否已经完全写入至第一存储虚拟化控制器(SVC1)10的第一缓存缓冲单元1071的数据存储地址(例如:ADDR1)处(步骤8027),直到判断确定:所有写入数据(DATA-H)已经写入至第一存储虚拟化控制器(SVC1)10的第二缓存缓冲单元1071的数据存储地址(例如:ADDR1)处。接着,第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205通知第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105:写入数据(DATA-H)已经成功写入至第一存储虚拟化控制器(SVC1)10的第一缓存缓冲单元1071的数据存储地址(例如:ADDR1)处、与第二存储虚拟化控制器(SVC2)20的第二缓存缓冲单元2071的数据存储地址(例如:ADDR2)处(步骤8029)。如此,第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105方能确定:写入数据(DATA-H)已经成功写入至第一缓存缓冲单元1071中的预定数据存储地址(例如:ADDR1)处。的后,第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105便可以着手进行后续处理,例如:将写入数据(DATA-H)写入至第一逻辑盘12。
当第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105收到第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205发送的成功写入通知后,第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105,通过冗余控制器通信(RCC)连接控制器9所建立的控制器间通信通道(ICC),发出一确认讯息(确认收到写入数据)给第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205,让第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205确知写入数据(DATA-H)已经写入至第一存储虚拟化控制器(SVC1)10的第一缓存缓冲单元1071的数据存储地址(例如:ADDR1)处(步骤8031)。
然后,在第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205收到来自第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105的确认讯息后(亦即,在执行步骤8031的后),第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205便通知主机15:其先前所发出的主机写入要求已经执行完成(步骤8033)。
另一方面,当写入数据(DATA-H)已经写入至第一缓存缓冲单元1071中的数据存储地址(例如:ADDR1)后,第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105随时可以着手将存储于第一缓存缓冲单元1071中的写入数据(DATA-H)写入至第一逻辑盘12中(步骤8035)。此一写入过程可能是一背景处理过程。在此一写入过程中,第一存储虚拟化控制器(SVC1)10会持续判断写入数据(DATA-H)是否已经完全写入至第一逻辑盘12中,直到确定所有写入数据(DATA-H)皆已写入完成为止(步骤8037)。
请再次参阅图8A,其中,以存储系统架构1a为例说明本发明技术的第三实施例的第一部分流程图中的步骤8001至步骤8003与步骤8039至步骤8043的运作细节。根据本发明的一实施例,当主机15要将一写入数据(DATA-H)写入至第一逻辑盘12时,主机15会向RAID子系统3发出一主机写入要求,且此主机写入要求可能会发送给RAID子系统3中的任一存储虚拟化控制器。在此例子中,假设第一逻辑盘12的管理者(owner)是第一存储虚拟化控制器10。当RAID子系统3的一存储虚拟化控制器(例如:第一存储虚拟化控制器(SVC1)10或第二存储虚拟化控制器(SVC2)20)收到所述主机写入要求时(步骤8001),接收到所述主机写入要求的存储虚拟化控制器(例如:第一存储虚拟化控制器(SVC1)10或第二存储虚拟化控制器(SVC2)20)会从所述主机写入要求所携带的信息判断:主机15是要将写入数据(DATA-H)写入到哪一个逻辑盘(在此例子中是:第一逻辑盘12),并因此知道自己对于写入要求所要写入的逻辑盘(即:第一逻辑盘12)是否具有的管理权限(ownership)(步骤8003)。
若以上步骤8003的判断结果是:所述主机写入要求是由管理者(owner)的存储虚拟化控制器(在此例子中是:第一存储虚拟化控制器(SVC1)10)所接收到;也就是说,第一存储虚拟化控制器(SVC1)10接收到一个主机写入要求,要求将写入数据(DATA-H)写入至其自身所管辖的第一逻辑盘12中(步骤8003)。在此情况下,由于接收到主机写入要求的第一存储虚拟化控制器(SVC1)10就是第一逻辑盘12的管理者(owner),因此,第一存储虚拟化控制器(SVC1)10可以径自决定要使用第一缓存缓冲单元1071的哪一(或哪些)数据存储地址(例如:ADDR1)所代表的存储空间,用以暂时存储所述主机写入要求所关联的写入数据(DATA-H)(步骤8039)。的后,传送一讯息给主机15,用以通知主机15可以传送写入数据(DATA-H)(步骤8041)。接着,流程进入节点F(步骤8043),后续步骤由图8C绘示。
请参阅图8C。承续上述的步骤8041,经由节点F(步骤8043)来到图8C中的步骤8043至步骤8065,以执行图8C中所示的第三实施例的第三部分流程。当主机15被告知可以传送写入数据(DATA-H)时,主机15就将写入数据(DATA-H)传送给第一存储虚拟化控制器(SVC1)10,由其中的第一主机端输出入控制器101接收(步骤8045)。当第一存储虚拟化控制器(SVC1)10接收到写入数据(DATA-H)时,会根据所述一(或多个)数据存储地址(例如:ADDR1)将写入数据(DATA-H)写入至第一缓存缓冲单元1071的数据存储地址(例如:ADDR1)处(步骤8047)。此一写入操作是经由第一主机端输出入控制器101与第一交换器103而达成。在进行写入的过程中,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105持续判断写入数据(DATA-H)是否已经完全写入至第一存储虚拟化控制器(SVC1)10的第一缓存缓冲单元1071的数据存储地址(例如:ADDR1)处(步骤8049),直到判断确定:所有写入数据(DATA-H)已经写入至存储虚拟化控制器(SVC1)10的第一缓存缓冲单元1071的数据存储地址(ADDR1)处,则进入下一步骤。
当步骤8049判断结果为是,则接收写入数据(DATA-H)的第一存储虚拟化控制器(SVC1)10必须要跟其组成同一存储虚拟化控制器对(SVC pair)的另一存储虚拟化控制器(即:第二存储虚拟化控制器(SVC2)20)传递必要的操作状态信息。此一传递信息的动作是通过冗余控制器通信(RCC)连接控制器9所建立的控制器间通信通道(ICC)来实现。此一传递信息的动作主要是:将写入数据(DATA-H)后备至第二存储虚拟化控制器(SVC2)20的第二缓存缓冲单元2071的对应数据存储地址(ADDR2)处,并且让第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205得知,有写入数据(DATA-H)须要或已经后备至第二缓存缓冲单元2071的对应数据存储地址(ADDR2)处(步骤8051)。
以上步骤8051中,将写入数据(DATA-H)后备至第二存储虚拟化控制器(SVC2)20的第二缓存缓冲单元2071的方式,可能有两种。第一种实施方式为,第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105接收写入数据(DATA-H)并成功存储在第一缓存缓冲单元1071的数据存储地址(例如:ADDR1)处后,第一中央处理电路(CPC1)105根据事先设置的对应关是,将相同的写入数据(DATA-H)传送到第二存储虚拟化控制器(SVC2)20的第二缓存缓冲单元2071的对应存储地址(ADDR2)处。然后第一中央处理电路(CPC1)105通知第二中央处理电路(CPC2)205,有写入数据(DATA-H)传送至其第二缓存缓冲单元2071的对应存储地址(ADDR2)处。
步骤8051的第二种实施方式为,第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105接收写入数据(DATA-H)并成功存储在第一缓存缓冲单元1071的数据存储地址(例如:ADDR1)处后,第一中央处理电路(CPC1)105通知第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205,有写入数据(DATA-H)须要后备且写入数据(DATA-H)是位于第一存储虚拟化控制器(SVC1)10的第一缓存缓冲单元1071的数据存储地址(ADDR1)处。如此,第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205,安排第二缓存缓冲单元2071的数据存储地址(例如:ADDR2)处来存储写入数据(DATA-H)。然后,第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205从第一存储虚拟化控制器(SVC1)10的第一缓存缓冲单元1071的数据存储地址(ADDR1)处撷取写入数据(DATA-H),并写入至本身的第二缓存缓冲单元2071的对应数据存储地址(例如:ADDR2)处。
当第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205确认:写入数据(DATA-H)已经写入至第二缓存缓冲单元2071的数据存储地址(例如:ADDR2)处,第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205,通过冗余控制器通信(RCC)连接控制器9所建立的控制器间通信通道(ICC),发送一确认讯息(写入完成通知)给第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105,用以让第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105确知写入数据(DATA-H)已经后备至第二存储虚拟化控制器(SVC2)20的第二缓存缓冲单元2071的中(步骤8053)。
然后,在第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105收到来自第二存储虚拟化控制器(SVC2)20的确认讯息后(亦即,在执行步骤8053的后),第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105便通知主机15:其先前所发出的主机写入要求已经执行完成(步骤8055)。
这种将数据存入控制器的存储器后,即回复主机(host)其写入要求已经完成的做法,称为回写模式(write back mode)。运作在回写模式(write back mode)之下,当写入数据(DATA-H)已经写入至第一缓存缓冲单元1071中的数据存储地址(例如:ADDR1)后,亦即在步骤8049判断为是的后,第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105随时可以着手将存储于第一缓存缓冲单元1071中的写入数据(DATA-H)写入至第一逻辑盘12中(步骤8057)。此一写入过程可能是一背景处理过程。在此一写入过程中,第一存储虚拟化控制器(SVC1)10会持续判断写入数据(DATA-H)是否已经完全写入至第一逻辑盘12中,直到确定所有写入数据(DATA-H)皆已写入完成为止(步骤8059)。
于本发明的另一实施例,亦可设置写入数据(DATA-H)必须成功写入至逻辑盘(LD)后,才回复主机(host)其写入要求已经完成,这样的做法称为直写模式(write throughmode)。若是图8A-图8C改为运作在直写模式(write through mode)之下,则图8B中的步骤8033与图8C中的步骤8055都必须移到最后。也就是要各自等图8B中的步骤8037与图8C中的步骤8059确认写入至逻辑盘(LD)完成后,再回复主机15其先前所发出的主机写入要求已经执行完成(步骤8033、步骤8055)。
请参阅图9A-图9B。图9A是为依据本发明的存储系统架构1或存储系统架构1a,执行数据访问方法的第四实施例的第一部分流程图。图9B是为依据本发明的存储系统架构1或存储系统架构1a,执行数据访问方法的第四实施例的第二部分流程图。
请参阅图9A。当主机15要RAID子系统3或3a的第一逻辑盘12读取一读取数据(DATA-H’)时,主机15会向RAID子系统3或3a发出一输出入要求(I/O request),在此亦可称为主机读取要求(read request)。根据本发明技术,此主机读取要求可能会发送给RAID子系统3或3a中的任一存储虚拟化控制器10、20。在以下所举的例子中,假设第一逻辑盘12的管理者(owner)是第一存储虚拟化控制器10。当RAID子系统3或3a的一存储虚拟化控制器10、20收到所述主机读取要求时(步骤9001),接收到所述主机读取要求的存储虚拟化控制器(例如:第一存储虚拟化控制器(SVC1)10或第二存储虚拟化控制器(SVC2)20)会从所述主机读取要求所携带的信息判断:主机15是要从哪一个逻辑盘(在此例子中是:第一逻辑盘12)读取相关读取数据(DATA-H’),并因此知道自己对于所述主机读取要求所要读取的逻辑盘(即:第一逻辑盘12)是否具有的管理权限(ownership)(步骤9003)。
若以上步骤9003的判断结果是:所述主机读取要求是由非管理者(non-owner)的存储虚拟化控制器(在此例子中是:第二存储虚拟化控制器(SVC2)20)所接收到;也就是说,第二存储虚拟化控制器(SVC2)20接收到一个主机读取要求,要求从第一逻辑盘12中读取相关读取数据(DATA-H’)(步骤9003),而第一逻辑盘12是由其它存储虚拟化控制器(在此例子中是:第一存储虚拟化控制器(SVC1)10)所管辖。在此情况下,由于接收到主机读取要求的第二存储虚拟化控制器(SVC2)20不是第一逻辑盘12的管理者(owner),因此,第二存储虚拟化控制器(SVC2)20需要向第一逻辑盘12的管理者(owner)(即:第一存储虚拟化控制器(SVC1)10)传送一通知指令告知有所述主机读取要求并询问「从第一逻辑盘12读取相关数据(DATA-H’)的相关信息」(步骤9005)。此一询问的具体内容,在一实施例中可以是:第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205,经由冗余控制器通信(RCC)连接控制器9所建立的控制器间通信通道(ICC),传送一询问指令给第一存储虚拟化控制器(SVC1)10。所述询问指令询问第一存储虚拟化控制器(SVC1)10:要从第一存储器107的哪一(或哪些)数据存储地址所代表的存储空间读取所述主机读取要求所关联的读取数据(DATA-H’)(步骤9005)。当第一存储虚拟化控制器(SVC1)10接收到询问指令后,先确认第一存储器107中是否有所述读取要求所欲读取的相关数据(DATA-H’)(步骤9007);若步骤9007的判断结果为是,流程进入节点G(步骤9009);若步骤9007的判断结果为否,第一存储虚拟化控制器(SVC1)10在第一缓存缓冲单元1071中指定一(或多个)数据存储地址(例如:ADDR1),用来暂存所述主机读取要求的读取数据(DATA-H’)的存储空间(步骤9011)。然后,第一存储虚拟化控制器(SVC1)10从第一逻辑盘12读取并暂存所需的读取数据(DATA-H’)在第一缓存缓冲单元1071中的数据存储地址(例如:ADDR1)处,再将数据存储地址(例如:ADDR1)回复给SVC2(步骤9013)。
当第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205收到第一存储虚拟化控制器(SVC1)10传送过来的第一缓存缓冲单元1071中的数据存储地址(例如:ADDR1)后,将此数据存储地址(例如:ADDR1)存储下来并告知第二主机端输出入控制器201去第一缓存缓冲单元1071中的所述数据存储地址(例如:ADDR1)处读取所述主机读取要求所需的读取数据(DATA-H’)(步骤9015)。的后,传送一讯息给主机15,以通知主机15可以接收读取数据(DATA-H’)(步骤9017)。接着,流程进入节点H(步骤9019),后续步骤由图9B绘示。
请参阅图9B。承续上述的步骤9017,经由节点H(步骤9019)来到图9B中的步骤9041~步骤9047,以执行图9B所示的第四实施例的第二部分流程。当第二存储虚拟化控制器(SVC2)20通知主机15可以接收读取数据(DATA-H’)时,第二主机端输出入控制器201经由第二交换器203、冗余控制器通信(RCC)连接控制器9所建立的控制器间通信通道(ICC)、与第一交换器103,从第一缓存缓冲单元1071的所述数据存储地址(例如:ADDR1)处读取相关读取数据(DATA-H’),并传送给主机15(步骤9041)。在进行读取的过程中,第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205持续判断读取数据(DATA-H’)是否已经完全被读取并传送至主机15(步骤9043),直到判断确定:所有读取数据(DATA-H’)皆已成功读取并传送至主机15,则进入下一步骤。
当步骤9043确认:所有读取数据(DATA-H’)已传送至主机15,第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205便通知主机15:其所发出的主机读取要求已经执行完成(步骤9045)。另一方面,第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205通知第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105:读取数据(DATA-H’)已经传送给主机15(步骤9047)。
另一种情况,当步骤9007判断结果为是,也就是第一存储器107中已存储有所述主机读取要求所需的读取数据(DATA-H’),则流程进入节点G(步骤9009)而来到图9B中所示的步骤9035~步骤9047。此时,第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105告知第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205,有关读取数据(DATA-H’)的存放位置(亦即,第一存储器107中存放所述读取数据(DATA-H’)的数据存储地址(例如:ADDR1))(步骤9035)。当第二存储虚拟化控制器(SVC2)20第二中央处理电路(CPC2)205收到通知且得知所述读取数据(DATA-H’)的数据存储地址(例如:ADDR1)时,会存储数据存储地址(例如:ADDR1),并指示第二主机端输出入控制器201去数据存储地址(例如:ADDR1)处读取所述读取数据(DATA-H’)(步骤9037);于此的时,第二存储虚拟化控制器(SVC2)20传送一讯息给主机15,以通知主机15可以接收读取数据(DATA-H’)(步骤9039)。
当第二存储虚拟化控制器(SVC2)20通知主机15可以接收读取数据(DATA-H’)时,第二主机端输出入控制器201经由第二交换器203、冗余控制器通信(RCC)连接控制器9所建立的控制器间通信通道(ICC)、与第一交换器103,从第一存储器107中存放所述读取数据(DATA-H’)的数据存储地址(例如:ADDR1)处读取相关读取数据(DATA-H’),并传送给主机15(步骤9041)。在进行读取的过程中,第二存储虚拟化控制器(SVC2)20中的第二中央处理电路(CPC2)205持续判断读取数据(DATA-H’)是否已经完全被读取并传送至主机15(步骤9043),直到判断确定:所有读取数据(DATA-H’)皆已成功读取并传送至主机15,则进入下一步骤。
当步骤9043确认:所有读取数据(DATA-H’)已传送至主机15,第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205便通知主机15:其所发出的主机读取要求已经执行完成(步骤9045)。另一方面,第二存储虚拟化控制器(SVC2)20的第二中央处理电路(CPC2)205通知第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105:读取数据(DATA-H’)已经传送给主机15(步骤9047)。
请参阅图9A,其中,以存储系统架构1或1a为例说明本发明技术的第四实施例的第一部分流程图中的步骤9001至步骤9003与步骤9021至步骤9033的运作细节。当主机15要从第一逻辑盘12读取一读取数据(DATA-H’)时,主机15会向RAID子系统3或3a发出一主机读取要求。根据本发明技术,此主机读取要求可能会发送给RAID子系统3或3a中的任一存储虚拟化控制器10、20。在以下所举的例子中,假设第一逻辑盘12的管理者(owner)是第一存储虚拟化控制器10。当RAID子系统3或3a的一存储虚拟化控制器10、20收到所述主机读取要求时(步骤9001),接收到所述主机读取要求的存储虚拟化控制器(例如:第一存储虚拟化控制器(SVC1)10或第二存储虚拟化控制器(SVC2)20)会从所述主机读取要求所携带的信息判断:主机15是要从哪一个逻辑盘(在此例子中是:第一逻辑盘12)读取相关读取数据(DATA-H’),并因此知道自己对于读取要求所要访问的逻辑盘(即:第一逻辑盘12)是否具有的管理权限(ownership)(步骤9003)。
若以上步骤9003的判断结果是:所述主机读取要求是由管理者(owner)的存储虚拟化控制器(在此例子中是:第一存储虚拟化控制器(SVC1)10)所接收到;也就是说,第一存储虚拟化控制器10(SVC1)接收到一个主机读取要求,要求从其自身所管辖的第一逻辑盘12中读取相关读取数据(DATA-H’)(步骤9003)。在此情况下,第一存储虚拟化控制器(SVC1)10先确认自身的第一存储器107中是否存储有所述主机读取要求所需的读取数据(DATA-H’)(步骤9021);若步骤9021的判断结果为否,第一存储虚拟化控制器(SVC1)10在第一缓存缓冲单元1071中指定一(或多个)数据存储地址(例如:ADDR1),用来暂存所述主机读取要求的读取数据(DATA-H’)的存储空间(步骤9023)。然后,第一存储虚拟化控制器(SVC1)10从第一逻辑盘12读取并暂存所需的读取数据(DATA-H’)在第一缓存缓冲单元1071中的数据存储地址(例如:ADDR1)(步骤9025)处,再传送一讯息给主机15,以通知主机15可以接收读取数据(DATA-H’)(步骤9027)。
当第一存储虚拟化控制器(SVC1)10通知主机15可以接收读取数据(DATA-H’)时,第一主机端输出入控制器101经由第一交换器103,从第一缓存缓冲单元1071的所述数据存储地址(例如:ADDR1)处读取相关读取数据(DATA-H’),并传送给主机15(步骤9029)。在进行读取的过程中,第一存储虚拟化控制器(SVC1)10中的第一中央处理电路(CPC1)105持续判断读取数据(DATA-H’)是否已经完全被读取并传送至主机15(步骤9031),直到判断确定:所有读取数据(DATA-H’)皆已成功读取并传送至主机15,则第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105通知主机15:其所发出的主机读取要求已经执行完成(步骤9033)。
另一方面,当步骤9021的判断结果为是,也就是第一存储器107中已存储有所述主机读取要求所需的读取数据(DATA-H’),则第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105传送一讯息给主机15,以通知主机15可以接收读取数据(DATA-H’)(步骤9027)。然后,第一存储虚拟化控制器(SVC1)10的第一主机端输出入控制器101从第一存储器107中读取相关读取数据(DATA-H’)并传送给主机15(步骤9029)。在进行读取的过程中,第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105持续判断读取数据(DATA-H’)是否已经完全被读取并传送至主机15(步骤9031),直到判断确定:所有读取数据(DATA-H’)皆已成功读取并传送至主机15,则第一存储虚拟化控制器(SVC1)10的第一中央处理电路(CPC1)105通知主机15:其所发出的主机读取要求已经执行完成(步骤9033)。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (41)

1.一种于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述数据存储系统架构(1)包括一第一存储虚拟化控制器(SVC1)(10)、一第二存储虚拟化控制器(SVC2)(20)及一存储池(storage pool)(4),其中,所述第一存储虚拟化控制器(SVC1)(10)包括一第一中央处理电路(CPC1)(105)、与一第一存储器(memory 1)(107),所述第二存储虚拟化控制器(SVC2)(20)包括一第二中央处理电路(CPC2)(205)、与一第二存储器(memory 2)(207),所述第一中央处理电路(CPC1)(105)经由一传输接口连接至所述第二中央处理电路(CPC2)(205),所述第一存储器(memory 1)(107)包括复数个第一存储空间,所述第二存储器(memory 2)(207)包括复数个第二存储空间,其中所述方法包括:
所述第一存储虚拟化控制器(SVC1)(10)管理所述一存储池(storage pool)(4)中一第一逻辑盘(LD1)(12);
所述第二存储虚拟化控制器(SVC2)(20)接收来自一主机(15)的一写入要求(writerequest),其中所述写入要求(write request)系要求写入数据至所述第一逻辑盘(LD1)(12);
所述第二存储虚拟化控制器(SVC2)(20)经由所述传输接口询问所述第一存储虚拟化控制器(SVC1)(10)有关一地址讯息;
所述第一存储虚拟化控制器(SVC1)(10)经由所述传输接口回复所述地址讯息给所述第二存储虚拟化控制器(SVC2)(20),其中所述地址讯息包括所述第一存储器(memory 1)(107)的一或多个第一数据存储地址(ADDR1),其位于所述复数个第一存储空间中,用以存储所述写入要求(write request)的写入数据;
所述第二存储虚拟化控制器(SVC2)(20)依据接收到的所述地址讯息安排对应于所述一或多个第一数据存储地址(ADDR1)的所述第二存储器(memory2)(207)中的一或多个第二数据存储地址(ADDR2);
所述第二存储虚拟化控制器(SVC2)(20)传送一讯息给所述主机(15),以通知所述主机(15)传送所述写入要求(write request)的一写入数据;
所述第二存储虚拟化控制器(SVC2)(20)接收来自所述主机(15)的所述写入要求(write request)的所述写入数据;
所述第二存储虚拟化控制器(SVC2)(20)将所述写入数据存储于所述第二存储器(memory 2)(207)的所述一或多个第二数据存储地址(ADDR2)处;
所述第二存储虚拟化控制器(SVC2)(20)经由所述传输接口将所述写入数据存储于所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处;以及
所述第二存储虚拟化控制器(SVC2)(20)通知所述主机(15),所述写入要求(writerequest)已执行完成。
2.根据权利要求1所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述传输接口是经由一冗余控制器通信(RCC)连接控制器(9)所建立的一控制器间通信通道(ICC)而达成。
3.根据权利要求1所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述地址讯息还包括所述第二存储器(memory 2)(207)的所述一或多个第二数据存储地址(ADDR2)。
4.根据权利要求1所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,还包括以下步骤:所述第二存储虚拟化控制器(SVC2)(20)附加所述一或多个第二数据存储地址(ADDR2)于所述写入数据,当所述第二存储虚拟化控制器(SVC2)(20)接收到来自所述主机(15)的所述写入数据后。
5.根据权利要求4所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,接收来自所述主机(15)的所述写入数据的步骤与附加所述一或多个第二数据存储地址(ADDR2)于所述写入数据的步骤,是由所述第二存储虚拟化控制器(SVC2)(20)中的一第二主机端输出入控制器(201)所执行。
6.根据权利要求1所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述第一存储虚拟化控制器(SVC1)(10)是通过一第一交换器(switch 1)(103)与所述传输接口连接,所述第二存储虚拟化控制器(SVC2)(20)是通过一第二交换器(switch 2)(203)与所述传输接口连接。
7.根据权利要求6所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述第一交换器(switch 1)(103)与所述第二交换器(switch 2)(203)还具有一非透明桥接功能(Non-transparent bridge,NTB)(1033、2033)。
8.根据权利要求6所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述第二存储虚拟化控制器(SVC2)(20)系通过所述第二交换器(switch 2)(203)将所述写入数据存储于所述第二存储器(memory 2)(207)的所述一或多个第二数据存储地址(ADDR2)处、以及所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处。
9.根据权利要求1所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,还包括以下步骤:
所述第二存储虚拟化控制器(SVC2)20通知所述第一存储虚拟化控制器(SVC1)10,所述写入数据已经成功存储至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处、与所述第二存储器(memory2)(207)的所述一或多个第二数据存储地址(ADDR2)处;以及
所述第一存储虚拟化控制器(SVC1)10发出一确认讯息给所述第二存储虚拟化控制器(SVC2)20,以通知所述第二存储虚拟化控制器(SVC2)20:确认所述写入数据已经成功存储至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处。
10.根据权利要求1所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述第二存储虚拟化控制器(SVC2)(20)还具有一第二群播表(MT2)(2031),所述第二群播表(MT2)(2031)纪录有一或多个虚拟群播地址(virtual multicast ADDR),所述一或多个虚拟群播地址(virtual multicast ADDR)对应于所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)、与所述第二存储器(memory 2)(207)的所述一或多个第二数据存储地址(ADDR2)。
11.根据权利要求10所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,还包括以下步骤:所述第二存储虚拟化控制器(SVC2)(20)中的一第二主机端输出入控制器(201)附加所述一或多个虚拟群播地址(virtual multicast ADDR)于所述写入数据,当所述第二存储虚拟化控制器(SVC2)(20)接收到来自所述主机(15)的所述写入数据后。
12.根据权利要求11所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述第二存储虚拟化控制器(SVC2)(20)中的一第二交换器(switch 2)(203)根据所述一或多个虚拟群播地址(virtual multicast ADDR),将所述写入数据同时存储至所述第二存储器(memory 2)(207)的所述一或多个第二数据存储地址(ADDR2)处、以及同时传送至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处。
13.根据权利要求10所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述第二群播表(MT2)(2031)系存放于所述第二存储虚拟化控制器(SVC2)(20)中一第二交换器(switch 2)(203)。
14.根据权利要求1所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述一或多个保留的第二存储空间是位于所述第二存储器(memory 2)(207)的一第二缓存缓冲单元(2071)的中。
15.根据权利要求1所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,还包括:
所述第二存储虚拟化控制器(SVC2)(20)通知所述第一存储虚拟化控制器(SVC1)(10),所述写入数据已经存储至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处;
其中所述一或多个第一数据存储地址(ADDR1)系位于所述第一存储器(memory 1)(107)的一第一缓存缓冲单元(1071)的中,而所述一或多个第二数据存储地址(ADDR2)系位于所述第二存储器(memory 2)(207)的一第二缓存缓冲单元(2071)的中。
16.根据权利要求1所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,还包括:
所述第一存储虚拟化控制器(SVC1)(10)将存储于所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处的所述写入数据存储至所述第一逻辑盘(LD1)(12)的中。
17.根据权利要求16所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,还包括:
当第一存储虚拟化控制器(SVC1)(10)将存储于所述第一存储器(memory1)(107)的所述一或多个第一数据存储地址(ADDR1)处的所述写入数据存储至所述第一逻辑盘(LD1)(12)后,所述第一存储虚拟化控制器(SVC1)(10)通知所述第二存储虚拟化控制器(SVC2)(20)所述写入要求(write request)已执行完成。
18.根据权利要求12所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,还包括:
所述第一存储虚拟化控制器(SVC1)(10)发出一确认讯息给所述第二存储虚拟化控制器(SVC2)20,以通知所述第二存储虚拟化控制器(SVC2)20:确认所述写入数据已经成功存储至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处。
19.根据权利要求10所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述第二群播表(MT2)(2031)包括复数个字段,包括:一第一字段用以记录所述一或多个虚拟群播地址(virtual multicast ADDR)、一第二字段用以记录所述一或多个第一数据存储地址(ADDR1)、及一第三字段用以记录所述一或多个第二数据存储地址(ADDR2)。
20.根据权利要求10所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述第一存储虚拟化控制器(SVC1)(10)还具有一第一群播表(MT1)(1031),所述第一群播表(MT1)(1031)包括复数个字段,包括:一第一字段用以记录所述一或多个虚拟群播地址(virtual multicast ADDR)、一第二字段用以记录所述一或多个第一数据存储地址(ADDR1)、及一第三字段用以记录所述一或多个第二数据存储地址(ADDR2)。
21.一种于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述数据存储系统架构(1)包括一第一存储虚拟化控制器(SVC1)(10)、一第二存储虚拟化控制器(SVC2)(20)及一存储池(storage pool)(4),其中,所述第一存储虚拟化控制器(SVC1)(10)包括一第一中央处理电路(CPC1)(105)、与一第一存储器(memory 1)(107),所述第二存储虚拟化控制器(SVC2)(20)包括一第二中央处理电路(CPC2)(205)、与一第二存储器(memory 2)(207),所述第一中央处理电路(CPC1)(105)经由一传输接口连接至所述第二中央处理电路(CPC2)(205),所述第一存储器(memory 1)(107)包括复数个第一存储空间,所述第二存储器(memory 2)(207)包括复数个第二存储空间,其中所述方法包括:
所述第一存储虚拟化控制器(SVC1)(10)管理所述存储池(storage pool)(4)中一第一逻辑盘(LD1)(12);
所述第二存储虚拟化控制器(SVC2)(20)接收来自一主机(15)的一读取要求(readrequest),其中所述读取要求(read request)系要求读取所述第一逻辑盘(LD1)(12)上存储的一读取数据;
所述第二存储虚拟化控制器(SVC2)(20)经由所述传输接口询问所述第一存储虚拟化控制器(SVC1)(10)有关一地址讯息;
所述第一存储虚拟化控制器(SVC1)(10)经由所述传输接口回复所述地址讯息给所述第二存储虚拟化控制器(SVC2)(20),其中所述地址讯息包括所述第一存储器(memory 1)(107)的一或多个第一数据存储地址(ADDR1),其位于所述复数个第一存储空间中,用以存储所述读取要求(read request)所欲读取的所述读取数据;
所述第二存储虚拟化控制器(SVC2)(20)接收并存储所述地址讯息;
所述第二存储虚拟化控制器(SVC2)(20)传送一讯息给所述主机(15),以通知所述主机(15)可以接收所述读取要求(read request)的所述读取数据;
所述第二存储虚拟化控制器(SVC2)(20)根据所述地址讯息,经由所述传输接口至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处读取所述读取数据;以及
所述第二存储虚拟化控制器(SVC2)(20)通知所述主机(15),所述读取要求(readrequest)已执行完成。
22.根据权利要求21所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述传输接口是经由一冗余控制器通信(RCC)连接控制器(9)所建立的一控制器间通信通道(ICC)而达成。
23.根据权利要求21所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,还包括以下步骤:所述第一存储虚拟化控制器(SVC1)10先确认所述第一存储器107(memory 1)(107)中是否有所述读取要求(read request)所欲读取的所述读取数据。
24.根据权利要求21所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,还包括以下步骤:所述第一存储虚拟化控制器(SVC1)10从所述第一逻辑盘(LD1)(12)读取并暂存所述读取数据(DATA-H’)在所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处。
25.根据权利要求21所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处读取所述读取数据,是由所述第二存储虚拟化控制器(SVC2)(20)中的一第二主机端输出入控制器(201)所执行。
26.根据权利要求21所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述第一存储虚拟化控制器(SVC1)(10)是通过一第一交换器(switch 1)(103)与所述传输接口连接,所述第二存储虚拟化控制器(SVC2)(20)是通过一第二交换器(switch 2)(203)与所述传输接口连接。
27.根据权利要求26所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,所述第一交换器(switch 1)(103)与所述第二交换器(switch2)(203)还具有一非透明桥接功能(Non-transparent bridge,NTB)(1033、2033)。
28.根据权利要求21所述的于一数据存储系统架构(1)下访问数据的方法,其特征在于,还包括以下步骤:所述第二存储虚拟化控制器(SVC2)20通知所述第一存储虚拟化控制器(SVC1)10,所述读取数据已经传送给所述主机(15)。
29.一种数据存储系统架构(1),其特征在于,包括:
一存储池(storage pool)(4),包括一第一逻辑盘(LD1)(12),其中所述第一逻辑盘(LD1)(12)系由一或多个物理存储装置(PSD)映像而成;
一第一存储虚拟化控制器(SVC1)(10),包括一第一中央处理电路(CPC1)(105)、与一第一存储器(memory 1)(107),其中所述第一中央处理电路(CPC1)(105)用以管理所述第一逻辑盘(LD1)(12)并呈现给一主机(15),所述第一存储器(memory 1)(107)包括复数个第一存储空间;以及
一第二存储虚拟化控制器(SVC2)(20),包括一第二中央处理电路(CPC2)(205)、与一第二存储器(memory 2)(207),其中所述第二中央处理电路(CPC2)(205)经由一传输接口连接至所述第一中央处理电路(CPC1)(105),所述第二存储器(memory 2)(207)包括复数个第二存储空间;
其中,当所述第二存储虚拟化控制器(SVC2)(20)从所述主机(15)接收到欲访问所述第一逻辑盘(LD1)(12)的一输出入要求(I/O request)时,所述第二存储虚拟化控制器(SVC2)(20)中的所述第二中央处理电路(CPC2)(205)经由所述传输接口询问所述第一存储虚拟化控制器(SVC1)(10)有关一地址讯息;
其中,所述第一存储虚拟化控制器(SVC1)(10)经由所述传输接口回复所述地址讯息给所述第二存储虚拟化控制器(SVC2)(20),所述地址讯息包括所述第一存储器(memory 1)(107)中一或多个第一数据存储地址(ADDR1);以及
其中,所述第二存储虚拟化控制器(SVC2)(20)根据所述一或多个第一数据存储地址(ADDR1)完成所述输出入要求(I/O request)。
30.根据权利要求29所述的数据存储系统架构(1),其特征在于,所述第一存储器(memory 1)(107)还包括一第一缓存缓冲单元(1071),提供对应于所述一或多个第一数据存储地址(ADDR1)的一或多个保留的第一存储空间;其中所述第二存储器(memory 2)(207)还包括一第二缓存缓冲单元(2071),提供对应于所述一或多个第二数据存储地址(ADDR2)的一或多个保留的第二存储空间。
31.根据权利要求29所述的数据存储系统架构(1),其特征在于,所述第一存储虚拟化控制器(SVC1)(10)还包括一第一主机端输出入控制器(host-side I/O controller 1)(101),做为所述第一存储虚拟化控制器(SVC1)(10)与所述主机(15)之间的传输接口;其中所述第二存储虚拟化控制器(SVC2)(20)还包括一第二主机端输出入控制器(host-side I/O controller 2)(201),做为所述第二存储虚拟化控制器(SVC2)(20)与所述主机(15)之间的传输接口。
32.根据权利要求31所述的数据存储系统架构(1),其特征在于,所述第一存储虚拟化控制器(SVC1)(10)还包括一第一交换器(switch 1)(103),其具有非透明桥接功能(Non-transparent bridge,NTB)(1033),对内连接至所述第一中央处理电路(CPC1)(105)与所述第一主机端输出入控制器(host-side I/Ocontroller 1)(101),对外则通过所述传输接口连接至所述第二存储虚拟化控制器(SVC2)(20);其中所述第二存储虚拟化控制器(SVC2)(20)还包括一第二交换器(switch 2)(203),其具有非透明桥接功能(Non-transparentbridge,NTB)(2033),对内连接至所述第二中央处理电路(CPC2)(205)与所述第二主机端输出入连接控制器(host-side I/O controller 2)(201),对外则通过所述传输接口连接至所述第一存储虚拟化控制器(SVC1)(10)。
33.根据权利要求32所述的数据存储系统架构(1),其特征在于,所述第一中央处理电路(CPC1)(105)与所述第一交换器(switch 1)(103)系整合在同一芯片上、或是各自独立的电路模块;其中所述第二中央处理电路(CPC2)(205)与所述第二交换器(switch 2)(203)系整合在同一芯片上、或是各自独立的电路模块。
34.根据权利要求32所述的数据存储系统架构(1),其特征在于,所述第一主机端输出入控制器(host-side I/O controller 1)(101)与所述第一交换器(switch 1)(103)系整合在同一芯片上、或是各自独立的电路模块;其中所述第二主机端输出入控制器(host-side I/O controller 2)(201)与所述第二交换器(switch 2)(203)系整合在同一芯片上、或是各自独立的电路模块。
35.根据权利要求32所述的数据存储系统架构(1),其特征在于,所述第一主机端输出入控制器(host-side I/O controller 1)(101)与所述第一中央处理电路(CPC1)(105)系整合在同一芯片上、或是各自独立的电路模块;其中所述第二主机端输出入控制器(host-side I/O controller 2)(201)与所述第二中央处理电路(CPC2)(205)系整合在同一芯片上、或是各自独立的电路模块。
36.根据权利要求29所述的数据存储系统架构(1),其特征在于,所述传输接口是经由一冗余控制器通信(RCC)连接控制器(9)所建立的一控制器间通信通道(ICC)而达成。
37.根据权利要求29所述的数据存储系统架构(1),其特征在于,当所述输出入要求(I/O request)为一写入要求(write request)时,所述第二存储虚拟化控制器(SVC2)(20)依据接收到的所述地址讯息安排对应于所述一或多个第一数据存储地址(ADDR1)的所述第二存储器(memory 2)(207)中的一或多个第二数据存储地址(ADDR2),或是参考一第二群播表(MT2)(2031)以得知与所述一或多个第一数据存储地址(ADDR1)相对应的一或多个虚拟群播地址(virtual multicast ADDR)。
38.根据权利要求37所述的数据存储系统架构(1),其特征在于,所述第二存储虚拟化控制器(SVC2)(20)还具有一第二主机端输出入控制器(host-side I/O controller 2)(201)与一第二交换器(switch 2)(203),所述第二主机端输出入控制器(host-side I/Ocontroller 2)(201)用以接收来自所述主机(15)的所述写入要求(write request)的一写入数据、以及附加所述一或多个第二数据存储地址(ADDR2)、或所述一或多个虚拟群播地址(virtual multicast ADDR)在所述写入数据,然后传送已附加所述一或多个第二数据存储地址(ADDR2)、或所述一或多个虚拟群播地址(virtual multicast ADDR)的所述写入数据至所述第二交换器(switch 2)(203)。
39.根据权利要求38所述的数据存储系统架构(1),其特征在于,当所述第二交换器(switch 2)(203)接收到所述写入数据后,将所述写入数据存储于所述第二存储器(memory2)(207)的所述一或多个第二数据存储地址(ADDR2)处,且所述第二交换器(switch 2)(203)经由所述传输接口将所述写入数据存储于所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处。
40.根据权利要求38所述的数据存储系统架构(1),其特征在于,所述第二交换器(switch 2)(203)接收到所述写入数据后,根据所述写入数据中附加的所述一或多个虚拟群播地址(virtual multicast ADDR),查找一第二群播表(MT2)(2031)以得到相对应的所述一或多个虚拟群播地址(virtual multicast ADDR)的所述一或多个第一数据存储地址(ADDR1)与所述一或多个第二数据存储地址(ADDR2),进而执行一群播(multicast)操作,将所述写入数据同时存储至所述第二存储器(memory 2)(207)的所述一或多个第二数据存储地址(ADDR2)处、以及同时传送至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处。
41.根据权利要求29所述的数据存储系统架构(1),其特征在于,当所述输出入要求(I/O request)为一读取要求(read request)时,所述第二存储虚拟化控制器(SVC2)(20)根据所述地址讯息,经由所述传输接口至所述第一存储器(memory 1)(107)的所述一或多个第一数据存储地址(ADDR1)处读取所述读取数据。
CN202210104870.8A 2021-02-03 2022-01-28 具有控制器的数据存储系统架构及其数据访问方法 Active CN114579047B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202163144992P 2021-02-03 2021-02-03
US63/144,992 2021-02-03

Publications (2)

Publication Number Publication Date
CN114579047A true CN114579047A (zh) 2022-06-03
CN114579047B CN114579047B (zh) 2024-03-29

Family

ID=81770908

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210104870.8A Active CN114579047B (zh) 2021-02-03 2022-01-28 具有控制器的数据存储系统架构及其数据访问方法

Country Status (3)

Country Link
US (1) US11842083B2 (zh)
CN (1) CN114579047B (zh)
TW (1) TWI829080B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200625099A (en) * 2005-01-13 2006-07-16 Infortrend Technology Inc Redundant storage virtualization computer system
EP1796003A2 (en) * 2005-11-23 2007-06-13 Infortrend Technology, Inc. Storage virtualization subsystem and system with host-side redundancy via sas connectivity
CN101582915A (zh) * 2008-05-14 2009-11-18 株式会社日立制作所 存储系统以及使用管理装置的存储系统的管理方法
CN101788890A (zh) * 2009-01-23 2010-07-28 普安科技股份有限公司 在一储存系统架构下产生一虚拟卷的方法及数据存取方法
US20130054846A1 (en) * 2011-08-31 2013-02-28 International Business Machines Corporation Non-disruptive configuration of a virtualization cotroller in a data storage system
CN104049909A (zh) * 2013-03-15 2014-09-17 国际商业机器公司 双异步和同步存储器系统
CN107430567A (zh) * 2015-03-27 2017-12-01 英特尔公司 共享缓冲存储器路由
US20180300064A1 (en) * 2017-04-12 2018-10-18 Micron Technology, Inc. Scalable low-latency storage interface
CN109213702A (zh) * 2017-06-30 2019-01-15 伊姆西Ip控股有限责任公司 虚拟机环境中的虚拟双控制模块之间的通信
CN109815170A (zh) * 2017-11-22 2019-05-28 纬颖科技服务股份有限公司 数据冗余的处理方法及其相关电脑系统
CN111373362A (zh) * 2018-06-30 2020-07-03 西部数据技术公司 具有分布式读取/写入处理的多设备存储系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9229648B2 (en) * 2012-07-31 2016-01-05 Hewlett Packard Enterprise Development Lp Storage array reservation forwarding
EP3304322A4 (en) * 2015-06-05 2018-11-07 Nutanix, Inc. Optimizable full-path encryption in a virtualization environment
EP3888308A4 (en) 2018-11-26 2022-09-14 Arrcus Inc. LOGICAL ROUTER WITH DISAGGREGATED NETWORK ELEMENTS
US11379246B2 (en) 2019-07-24 2022-07-05 EMC IP Holding Company LLC Automatic configuration of multiple virtual storage processors

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200625099A (en) * 2005-01-13 2006-07-16 Infortrend Technology Inc Redundant storage virtualization computer system
EP1796003A2 (en) * 2005-11-23 2007-06-13 Infortrend Technology, Inc. Storage virtualization subsystem and system with host-side redundancy via sas connectivity
CN101582915A (zh) * 2008-05-14 2009-11-18 株式会社日立制作所 存储系统以及使用管理装置的存储系统的管理方法
CN101788890A (zh) * 2009-01-23 2010-07-28 普安科技股份有限公司 在一储存系统架构下产生一虚拟卷的方法及数据存取方法
US20130054846A1 (en) * 2011-08-31 2013-02-28 International Business Machines Corporation Non-disruptive configuration of a virtualization cotroller in a data storage system
CN104049909A (zh) * 2013-03-15 2014-09-17 国际商业机器公司 双异步和同步存储器系统
CN107430567A (zh) * 2015-03-27 2017-12-01 英特尔公司 共享缓冲存储器路由
US20180300064A1 (en) * 2017-04-12 2018-10-18 Micron Technology, Inc. Scalable low-latency storage interface
CN109213702A (zh) * 2017-06-30 2019-01-15 伊姆西Ip控股有限责任公司 虚拟机环境中的虚拟双控制模块之间的通信
CN109815170A (zh) * 2017-11-22 2019-05-28 纬颖科技服务股份有限公司 数据冗余的处理方法及其相关电脑系统
CN111373362A (zh) * 2018-06-30 2020-07-03 西部数据技术公司 具有分布式读取/写入处理的多设备存储系统

Also Published As

Publication number Publication date
TWI829080B (zh) 2024-01-11
US11842083B2 (en) 2023-12-12
CN114579047B (zh) 2024-03-29
TW202232328A (zh) 2022-08-16
US20230034049A1 (en) 2023-02-02

Similar Documents

Publication Publication Date Title
JP5087249B2 (ja) ストレージシステムおよびストレージシステムの制御方法
KR101455016B1 (ko) 고가용성 솔리드 스테이트 드라이브를 제공하는 방법 및 장치
US6961813B2 (en) System and method for providing multi-initiator capability to an ATA drive
JP4814617B2 (ja) ストレージシステム
EP2113843B1 (en) Information system and I/O processing method
US8020035B2 (en) Expander circuit for a solid state persistent storage device that provides a plurality of interfaces to corresponding storage controllers
JP4528551B2 (ja) ストレージシステム
US6948036B2 (en) System and method for providing multi-initiator capability to an ATA drive
EP1617320A2 (en) Computer system and method for migrating from one storage system to another
US9823955B2 (en) Storage system which is capable of processing file access requests and block access requests, and which can manage failures in A and storage system failure management method having a cluster configuration
JP4338075B2 (ja) 記憶装置システム
WO2016101287A1 (zh) 一种存储系统数据分发的方法、分发装置与存储系统
JPH0981527A (ja) 複数のホスト・コンピュータ・システムにより複数の記憶装置アレイを共有するシステム及び方法
JP2004240949A (ja) クラスタ型ストレージシステム及びその管理方法
JP2007148764A (ja) データストレージシステム及びデータストレージ制御装置
US8527725B2 (en) Active-active remote configuration of a storage system
US7774514B2 (en) Method of transmitting data between storage virtualization controllers and storage virtualization controller designed to implement the method
US7752340B1 (en) Atomic command retry in a data storage system
JP2003044421A (ja) 仮想ストレージシステム及び同システムに使用されるスイッチングノード
CN114579047B (zh) 具有控制器的数据存储系统架构及其数据访问方法
JP4640854B2 (ja) ディスクアレイ制御方法及びディスクアレイ制御装置
JP4874515B2 (ja) 記憶装置システム
JP2006268403A (ja) データストレージシステム及びストレージ制御装置のログデータの等価制御方法
US7715378B1 (en) Error notification and forced retry in a data storage system
CN201444642U (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