CN106844234B - 数据写入方法及装置、双活系统 - Google Patents
数据写入方法及装置、双活系统 Download PDFInfo
- Publication number
- CN106844234B CN106844234B CN201510885958.8A CN201510885958A CN106844234B CN 106844234 B CN106844234 B CN 106844234B CN 201510885958 A CN201510885958 A CN 201510885958A CN 106844234 B CN106844234 B CN 106844234B
- Authority
- CN
- China
- Prior art keywords
- storage controller
- write operation
- data
- operation command
- writing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0837—Cache consistency protocols with software control, e.g. non-cacheable data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2017—Error 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 memory access, memory control or I/O control functionality is redundant
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2053—Error 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 persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2089—Redundant storage control functionality
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种数据写入方法及装置、双活系统,属于数据存储技术领域。所述方法包括:向第二存储控制器发送第一写操作命令;接收第二存储控制器发送的返回消息;向第二存储控制器发送转发写命令;接收第二存储控制器在确定停止根据第二写操作命令向第二位置写入数据,且开始根据转发写命令向第二位置写入数据时,发送的转发写命令;根据转发写命令,向第一位置写入数据。本发明解决了数据写入的效率较低的问题,提高了数据写入的效率,本发明用于数据的写入。
Description
技术领域
本发明涉及数据存储技术领域,特别涉及一种数据写入方法及装置、双活系统。
背景技术
双活系统是一种常见的数据存储系统,双活系统包括第一存储控制器和第二存储控制器,每个存储控制器上均可以设置有存储阵列,每个存储阵列可以包括多个存储位置。与双活系统连接的主机可以根据需要向双活系统发送包含目标存储位置的写操作命令,以便于双活系统中的第一存储控制器和第二存储控制器根据该写操作命令向每个存储控制器上的目标存储位置写入数据,当第一存储控制器故障时,主机能够从第二存储控制器的目标存储位置获取数据。
示例的,第一存储控制器上的目标存储位置为第一位置,第二存储控制器上的目标存储位置为第二位置。主机可以将该写操作命令发送至第一存储控制器,若该第一存储控制器此时并不是正在根据某一写操作命令向第一位置写入数据,则该第一存储控制器可以对该第一位置进行加锁,并将该写操作命令发送至第二存储控制器,使得此时第一存储控制器无法根据其他写操作命令向第一位置写入数据。为了防止该第二存储控制器在根据该写操作命令向第二位置写入数据时,根据其他写操作命令向第二位置写入数据,在第二存储控制器接收到该写操作命令后,第二存储控制器可以触发为第二位置加锁的动作,使得此时该第二存储控制器无法根据其他写操作命令向第二位置写入数据。在加锁完毕之后,第二存储控制器可以将用于指示为第二位置加锁成功的加锁信息发送至第一存储控制器。然后,第一存储控制器和第二存储控制器可以分别根据该写操作命令向第一位置和第二位置写入数据。在第二存储控制器向第二位置写入数据完毕后,该第二存储控制器可以向第一存储控制器发送用于指示写入数据执行完毕的结束消息。在第一存储控制器在接收到该结束消息,且向第一位置写入数据完毕后,可以解除第一位置上的锁,并向第二存储控制器发送解锁命令,第二存储控制器在接收到该解锁命令后,可以解除该第二位置上的锁。可选的,第二位置上的锁可以为分布式锁管理(英文:Distributed Lock Management;简称:DLM)锁。
由于在双活系统中写入数据的过程中,需要为第一位置和第二位置进行加锁和解锁,且在加锁和解锁的过程中,第一存储控制器与第二存储控制器需要进行多次通信,因此,双活系统中数据写入耗费的时间较长,数据写入的效率较低。
发明内容
为了解决数据写入的效率较低的问题,本发明提供了一种数据写入方法及装置、双活系统。所述技术方案如下:
第一方面,提供了一种数据写入方法,用于双活系统中的第一存储控制器,所述双活系统还包括第二存储控制器,所述方法包括:
向第二存储控制器发送第一写操作命令,所述第一写操作命令为主机发送给所述第一存储控制器的,所述第一写操作命令用于指示在目标存储位置写入数据,所述第一存储控制器中的所述目标存储位置为第一位置,所述第二存储控制器中的所述目标存储位置为第二位置;
接收所述第二存储控制器发送的返回消息,所述返回消息用于指示所述第二存储控制器在接收到所述第一写操作命令时,正在根据第二写操作命令向所述第二位置写入数据,所述返回消息为所述第二存储控制器确定所述第二存储控制器的优先级高于所述第一存储控制器的优先级时,生成并发送给所述第一存储控制器的;
向所述第二存储控制器发送转发写命令,所述转发写命令指示的操作与所述第一写操作命令指示的操作相同;
接收所述第二存储控制器在确定停止根据所述第二写操作命令向所述第二位置写入数据,且开始根据所述转发写命令向所述第二位置写入数据时,发送的所述转发写命令;
根据所述转发写命令,向所述第一位置写入数据。
由于第一存储控制器在向第二存储控制器发送第一写操作命令后,接收到第二存储控制器在确定第二存储控制器的优先级高于第一存储控制器,且该第二存储控制器正在根据第二写操作命令向第二位置写入数据时,向第一存储控制器发送的返回消息,然后该第一存储控制器向第二存储控制器发送转发写命令,使得该第一存储控制器和第二存储控制器根据转发写命令分别向第一位置和第二位置写入数据。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
结合第一方面,在第一方面的第一种可实现方式中,在所述向第二存储控制器发送第一写操作命令之前,所述方法还包括:
接收主机发送的所述第一写操作命令;
判断所述第一存储控制器是否正在根据第三写操作命令向所述第一位置写入数据;
所述向第二存储控制器发送第一写操作命令,包括:
若所述第一存储控制器不是正在根据第三写操作命令向所述第一位置写入数据,则根据所述第一写操作命令向所述第一位置写入数据,并向所述第二存储控制器发送所述第一写操作命令。
在第一存储控制器接收到主机发送的第一写操作命令后,若该第一存储控制器此时正在根据第三写操作命令向第一位置写入数据,则该第一存储控制器需要等待该第一存储控制器根据第三写操作命令向第一位置写入数据完毕后,才根据该第一写操作命令向第一位置写入数据,使得该第一存储控制器按照一定的顺序,有序的处理第一存储控制器接收到的写操作命令。
结合第一方面的第一种可实现方式,在第一方面的第二种可实现方式中,在所述向所述第二存储控制器发送转发写命令之前,所述方法还包括:
停止根据所述第一写操作命令向所述第一位置写入数据。
结合第一方面的第一种可实现方式或第二种可实现方式,在第一方面的第三种可实现方式中,每个存储控制器上均设置有写操作记录模块,所述写操作记录模块用于记载:所述写操作记录模块所在的存储控制器中正在写入数据的存储位置,所述判断所述第一存储控制器是否正在根据第三写操作命令向所述第一位置写入数据,包括:
判断所述第一存储控制器上的写操作记录模块中是否记载有所述第一位置;
若所述第一存储控制器上的写操作记录模块中记载有所述第一位置,则确定所述第一存储控制器正在根据第三写操作命令向所述第一位置写入数据;
若所述第一存储控制器上的写操作记录模块中未记载有所述第一位置,则确定所述第一存储控制器不是正在根据第三写操作命令向所述第一位置写入数据。
第二方面,提供了一种数据写入方法,用于双活系统中的第二存储控制器,所述双活系统还包括第一存储控制器,所述方法包括:
接收第一存储控制器发送的第一写操作命令,所述第一写操作命令是所述第一存储控制器在接收到主机发送的所述第一写操作命令后发送给所述第二存储控制器的,所述第一写操作命令用于指示在目标存储位置写入数据,所述第二存储控制器中的所述目标存储位置为第二位置;
在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据,且所述第二存储控制器的优先级高于所述第一存储控制器的优先级时,向所述第一存储控制器发送返回消息,所述返回消息用于指示所述第二存储控制器在接收到所述第一写操作命令时,正在根据第二写操作命令向所述第二位置写入数据;
接收所述第一存储控制器发送的转发写命令,所述转发写命令指示的操作与所述第一写操作命令指示的操作相同;
在所述第二存储控制器停止根据所述第二写操作命令向所述第二位置写入数据时,根据所述转发写命令向所述第二位置写入数据,并将所述转发写命令发送至所述第一存储控制器。
由于第二存储控制器接收第一存储控制器发送的第一写操作命令,在第二存储控制器正在根据第二写操作命令向第二位置写入数据,且第二存储控制器的优先级高于第一存储控制器的优先级时,向第一存储控制器发送返回消息,然后接收第一存储控制器发送的转发写命令,在第二存储控制器停止根据第二写操作命令向第二位置写入数据时,根据转发写命令向第二位置写入数据,并将转发写命令发送至第一存储控制器。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
结合第二方面,在第二方面的第一种可实现方式中,所述方法还包括:
在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据,所述第二存储控制器的优先级低于所述第一存储控制器的优先级,且所述第二存储控制器停止根据所述第二写操作命令向所述第二位置写入数据时,根据所述第一写操作命令向所述第二位置写入数据。
若第二存储控制器接收到第一存储控制器发送的第一写操作时,该第二存储控制器正在根据第二写操作命令向第二位置写入数据,且此时该第二存储控制器确定该第一存储控制器的优先级高于该第二存储控制器,则该第二存储控制器可以在根据第二写操作命令向第二位置写入数据完毕后,根据该第一写操作命令向第二位置写入数据,保证了该第二存储控制器有序的处理第二存储控制器接收到的写操作命令。
结合第二方面或第一方面的第一种可实现方式,在第二方面的第二种可实现方式中,每个存储控制器上均设置有写操作记录模块,所述写操作记录模块用于记载:所述写操作记录模块所在的存储控制器中正在写入数据的存储位置,在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据时,所述第二存储控制器上的写操作记录模块中记载有所述第二位置;
在所述第二存储控制器不是正在根据所述第二写操作命令向所述第二位置写入数据时,所述第二存储控制器上的写操作记录模块中未记载有所述第二位置。
第三方面,提供了一种数据写入装置,用于双活系统中的第一存储控制器,所述双活系统还包括第二存储控制器,所述数据写入装置包括:
第一发送模块,用于向第二存储控制器发送第一写操作命令,所述第一写操作命令为主机发送给所述第一存储控制器的,所述第一写操作命令用于指示在目标存储位置写入数据,所述第一存储控制器中的所述目标存储位置为第一位置,所述第二存储控制器中的所述目标存储位置为第二位置;
第一接收模块,用于接收所述第二存储控制器发送的返回消息,所述返回消息用于指示所述第二存储控制器在接收到所述第一写操作命令时,正在根据第二写操作命令向所述第二位置写入数据,所述返回消息为所述第二存储控制器确定所述第二存储控制器的优先级高于所述第一存储控制器的优先级时,生成并发送给所述第一存储控制器的;
第二发送模块,用于向所述第二存储控制器发送转发写命令,所述转发写命令指示的操作与所述第一写操作命令指示的操作相同;
第二接收模块,用于接收所述第二存储控制器在确定停止根据所述第二写操作命令向所述第二位置写入数据,且开始根据所述转发写命令向所述第二位置写入数据时,发送的所述转发写命令;
写入模块,用于根据所述转发写命令,向所述第一位置写入数据。
结合第三方面,在第三方面的第一种可实现方式中,所述数据写入装置还包括:
第四接收模块,用于接收主机发送的所述第一写操作命令;
判断模块,用于判断所述第一存储控制器是否正在根据第三写操作命令向所述第一位置写入数据;
所述第一发送模块还用于:
在所述第一存储控制器不是正在根据第三写操作命令向所述第一位置写入数据时,根据所述第一写操作命令向所述第一位置写入数据,并向所述第二存储控制器发送所述第一写操作命令。
结合第三方面的第一种可实现方式,在第三方面的第二种可实现方式中,所述数据写入装置还包括:
停止模块,用于停止根据所述第一写操作命令向所述第一位置写入数据。
结合第三方面的第一种可实现方式或第二种可实现方式,在第三方面的第三种可实现方式中,每个存储控制器上均设置有写操作记录模块,所述写操作记录模块用于记载:所述写操作记录模块所在的存储控制器中正在写入数据的存储位置,所述判断模块还用于:
判断所述第一存储控制器上的写操作记录模块中是否记载有所述第一位置;
在所述第一存储控制器上的写操作记录模块中记载有所述第一位置时,确定所述第一存储控制器正在根据第三写操作命令向所述第一位置写入数据;
在所述第一存储控制器上的写操作记录模块中未记载有所述第一位置时,确定所述第一存储控制器不是正在根据第三写操作命令向所述第一位置写入数据。
第四方面,提供了一种数据写入装置,用于双活系统中的第二存储控制器,所述双活系统还包括第一存储控制器,所述数据写入装置包括:
第一接收模块,用于接收第一存储控制器发送的第一写操作命令,所述第一写操作命令是所述第一存储控制器在接收到主机发送的所述第一写操作命令后发送给所述第二存储控制器的,所述第一写操作命令用于指示在目标存储位置写入数据,所述第二存储控制器中的所述目标存储位置为第二位置;
发送模块,用于在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据,且所述第二存储控制器的优先级高于所述第一存储控制器的优先级时,向所述第一存储控制器发送返回消息,所述返回消息用于指示所述第二存储控制器在接收到所述第一写操作命令时,正在根据第二写操作命令向所述第二位置写入数据;
第二接收模块,用于接收所述第一存储控制器发送的转发写命令,所述转发写命令指示的操作与所述第一写操作命令指示的操作相同;
第一写入模块,用于在所述第二存储控制器停止根据所述第二写操作命令向所述第二位置写入数据时,根据所述转发写命令向所述第二位置写入数据,并将所述转发写命令发送至所述第一存储控制器。
结合第四方面,在第四方面的第一种可实现方式中,所述数据写入装置还包括:
第二写入模块,用于在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据,所述第二存储控制器的优先级低于所述第一存储控制器的优先级,且所述第二存储控制器停止根据所述第二写操作命令向所述第二位置写入数据时,根据所述第一写操作命令向所述第二位置写入数据。
结合第四方面或第一方面的第一种可实现方式,在第四方面的第二种可实现方式中,每个存储控制器上均设置有写操作记录模块,所述写操作记录模块用于记载:所述写操作记录模块所在的存储控制器中正在写入数据的存储位置,
在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据时,所述第二存储控制器上的写操作记录模块中记载有所述第二位置;
在所述第二存储控制器不是正在根据所述第二写操作命令向所述第二位置写入数据时,所述第二存储控制器上的写操作记录模块中未记载有所述第二位置。
第五方面,提供了一种双活系统,所述双活系统包括第一存储控制器和第二存储控制器,
所述第一存储控制器为第三方面或第三方面中的任意一种可实现方式所述的数据写入装置;
所述第二存储控制器为第四方面或第四方面中的任意一种可实现方式所述的数据写入装置。
第六方面,提供了一种数据写入装置,所述数据写入装置包括:至少一个处理器、至少一个网络接口、存储器和至少一个通信总线,所述处理器用于执行所述存储器中存储的程序,所述程序包括:
向第二存储控制器发送第一写操作命令,所述第一写操作命令为主机发送给所述第一存储控制器的,所述第一写操作命令用于指示在目标存储位置写入数据,所述第一存储控制器中的所述目标存储位置为第一位置,所述第二存储控制器中的所述目标存储位置为第二位置;
接收所述第二存储控制器发送的返回消息,所述返回消息用于指示所述第二存储控制器在接收到所述第一写操作命令时,正在根据第二写操作命令向所述第二位置写入数据,所述返回消息为所述第二存储控制器确定所述第二存储控制器的优先级高于所述第一存储控制器的优先级时,生成并发送给所述第一存储控制器的;
向所述第二存储控制器发送转发写命令,所述转发写命令指示的操作与所述第一写操作命令指示的操作相同;
接收所述第二存储控制器在确定停止根据所述第二写操作命令向所述第二位置写入数据,且开始根据所述转发写命令向所述第二位置写入数据时,发送的所述转发写命令;
根据所述转发写命令,向所述第一位置写入数据。
结合第六方面,在第六方面的第一种可实现方式中,在所述向第二存储控制器发送第一写操作命令之前,所述程序还包括:
接收主机发送的所述第一写操作命令;
判断所述第一存储控制器是否正在根据第三写操作命令向所述第一位置写入数据;
所述向第二存储控制器发送第一写操作命令,包括:
若所述第一存储控制器不是正在根据第三写操作命令向所述第一位置写入数据,则根据所述第一写操作命令向所述第一位置写入数据,并向所述第二存储控制器发送所述第一写操作命令。
结合第六方面的第一种可实现方式,在第六方面的第二种可实现方式中,在所述向所述第二存储控制器发送转发写命令之前,所述程序还包括:
停止根据所述第一写操作命令向所述第一位置写入数据。
结合第六方面的第一种可实现方式或第二种可实现方式,在第六方面的第三种可实现方式中,每个存储控制器上均设置有写操作记录模块,所述写操作记录模块用于记载:所述写操作记录模块所在的存储控制器中正在写入数据的存储位置,所述判断所述第一存储控制器是否正在根据第三写操作命令向所述第一位置写入数据,包括:
判断所述第一存储控制器上的写操作记录模块中是否记载有所述第一位置;
若所述第一存储控制器上的写操作记录模块中记载有所述第一位置,则确定所述第一存储控制器正在根据第三写操作命令向所述第一位置写入数据;
若所述第一存储控制器上的写操作记录模块中未记载有所述第一位置,则确定所述第一存储控制器不是正在根据第三写操作命令向所述第一位置写入数据。
第七方面,提供了一种数据写入装置,所述数据写入装置包括:至少一个处理器、至少一个网络接口、存储器和至少一个通信总线,所述处理器用于执行所述存储器中存储的程序,所述程序包括:
接收第一存储控制器发送的第一写操作命令,所述第一写操作命令是所述第一存储控制器在接收到主机发送的所述第一写操作命令后发送给所述第二存储控制器的,所述第一写操作命令用于指示在目标存储位置写入数据,所述第二存储控制器中的所述目标存储位置为第二位置;
在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据,且所述第二存储控制器的优先级高于所述第一存储控制器的优先级时,向所述第一存储控制器发送返回消息,所述返回消息用于指示所述第二存储控制器在接收到所述第一写操作命令时,正在根据第二写操作命令向所述第二位置写入数据;
接收所述第一存储控制器发送的转发写命令,所述转发写命令指示的操作与所述第一写操作命令指示的操作相同;
在所述第二存储控制器停止根据所述第二写操作命令向所述第二位置写入数据时,根据所述转发写命令向所述第二位置写入数据,并将所述转发写命令发送至所述第一存储控制器。
结合第七方面,在第七方面的第一种可实现方式中,所述程序还包括:
在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据,所述第二存储控制器的优先级低于所述第一存储控制器的优先级,且所述第二存储控制器停止根据所述第二写操作命令向所述第二位置写入数据时,根据所述第一写操作命令向所述第二位置写入数据。
结合第七方面或第一方面的第一种可实现方式,在第七方面的第二种可实现方式中,每个存储控制器上均设置有写操作记录模块,所述写操作记录模块用于记载:所述写操作记录模块所在的存储控制器中正在写入数据的存储位置,
在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据时,所述第二存储控制器上的写操作记录模块中记载有所述第二位置;
在所述第二存储控制器不是正在根据所述第二写操作命令向所述第二位置写入数据时,所述第二存储控制器上的写操作记录模块中未记载有所述第二位置。
第八方面,提供了一种双活系统,所述双活系统包括第一存储控制器和第二存储控制器,
所述第一存储控制器为第六方面或第六方面中的任意一种可实现方式所述的数据写入装置;
所述第二存储控制器为第七方面或第七方面中的任意一种可实现方式所述的数据写入装置。
本发明提供了一种数据写入方法及装置、双活系统,第一存储控制器在向第二存储控制器发送第一写操作命令后,接收到第二存储控制器在确定第二存储控制器的优先级高于第一存储控制器,且该第二存储控制器正在根据第二写操作命令向第二位置写入数据时,向第一存储控制器发送的返回消息,然后该第一存储控制器向第二存储控制器发送转发写命令,使得该第一存储控制器和第二存储控制器根据转发写命令分别向第一位置和第二位置写入数据。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据写入方法的应用场景示意图;
图2为本发明实施例提供的一种数据写入方法的方法流程图;
图3为本发明实施例提供的另一种数据写入方法的方法流程图;
图4-1为本发明实施例提供的又一种数据写入方法的方法流程图;
图4-2为本发明实施例提供的一种写入数据的方法流程图;
图4-3为本发明实施例提供的另一种写入数据的方法流程图;
图5-1为本发明实施例提供的一种数据写入装置的结构示意图;
图5-2为本发明实施例提供的另一种数据写入装置的结构示意图;
图5-3为本发明实施例提供的又一种数据写入装置的结构示意图;
图6-1为本发明实施例提供的再一种数据写入装置的结构示意图;
图6-2为本发明另一实施例提供的一种数据写入装置的结构示意图;
图7为本发明另一实施例提供的另一种数据写入装置的结构示意图;
图8为本发明另一实施例提供的又一种数据写入装置的结构示意图;
图9为本发明实施例提供的一种双活系统的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1为本发明实施例提供的一种数据写入方法的应用场景示意图,示例的,该应用场景可以包括双活系统0和主机1,双活系统0包括第一存储控制器01和第二存储控制器02,每个存储控制器上均可以设置有多个存储位置,可选的,每个存储控制器上均可以设置有存储阵列,该存储阵列可以包括多个阵列排布的存储块,多个存储位置为多个存储块的存储地址。
主机1可以与双活系统0中的第一存储控制器01以及第二存储控制器02建立连接,主机1可以根据需要向双活系统0中的第一存储控制器01发送包含目标存储位置的写操作命令,以便于双活系统0中的第一存储控制器01和第二存储控制器02根据该写操作命令向每个存储控制器上的目标存储位置写入数据,当第一存储控制器01故障时,主机1能够从第二存储控制器02的目标存储位置获取数据。
示例的,第一存储控制器01上的目标存储位置为第一位置,第二存储控制器02上的目标存储位置为第二位置。主机1可以将该写操作命令发送至第一存储控制器01,若该第一存储控制器01此时并不是正在根据某一写操作命令向第一位置写入数据,则该第一存储控制器01可以对该第一位置进行加锁,并将该写操作命令发送至第二存储控制器02,使得此时第一存储控制器无法根据其他写操作命令向第一位置写入数据。为了防止该第二存储控制器02在根据该写操作命令向第二位置写入数据时,根据其他写操作命令向第二位置写入数据,在第二存储控制器02接收到该写操作命令后,第二存储控制器02可以触发为第二位置加锁的动作,使得此时该第二存储控制器02无法根据其他写操作命令向第二位置写入数据。在向第二位置写入数据完毕后,该第二存储控制器02可以向第一存储控制器01发送用于指示写入数据执行完毕的结束消息。在第一存储控制器01在接收到该结束消息,且向第一位置写入数据完毕后,可以解除第一位置上的锁,并向第二存储控制器02发送解锁命令,第二存储控制器02在接收到该解锁命令后,可以解除该第二位置上的锁。可选的,该第一位置和第二位置上的锁可以为DLM锁。
由于在双活系统0中写入数据的过程中,需要为第一位置和第二位置进行加锁和解锁,且在加锁和解锁的过程中,第一存储控制器01与第二存储控制器02需要进行多次通信,双活系统0中数据写入耗费的时间较长,数据写入的效率较低。
如图2所示,本发明实施例提供了一种数据写入方法,该数据写入方法可以用于如图1所示的双活系统0中的第一存储控制器01,该双活系统0还可以包括第二存储控制器02,该数据写入方法可以包括:
步骤201、向第二存储控制器发送第一写操作命令,第一写操作命令为主机发送给第一存储控制器的,第一写操作命令用于指示在目标存储位置写入数据,第一存储控制器中的目标存储位置为第一位置,第二存储控制器中的目标存储位置为第二位置。
步骤202、接收第二存储控制器发送的返回消息,返回消息用于指示第二存储控制器在接收到第一写操作命令时,正在根据第二写操作命令向第二位置写入数据,返回消息为第二存储控制器确定第二存储控制器的优先级高于第一存储控制器的优先级时,生成并发送给第一存储控制器的。
步骤203、向第二存储控制器发送转发写命令,转发写命令指示的操作与第一写操作命令指示的操作相同。
步骤204、接收第二存储控制器在确定停止根据第二写操作命令向第二位置写入数据,且开始根据转发写命令向第二位置写入数据时,发送的转发写命令。
步骤205、根据转发写命令,向第一位置写入数据。
综上所述,由于本发明实施例提供的数据写入方法中,第一存储控制器在向第二存储控制器发送第一写操作命令后,接收到第二存储控制器在确定第二存储控制器的优先级高于第一存储控制器,且该第二存储控制器正在根据第二写操作命令向第二位置写入数据时,向第一存储控制器发送的返回消息,然后该第一存储控制器向第二存储控制器发送转发写命令,使得该第一存储控制器和第二存储控制器根据转发写命令分别向第一位置和第二位置写入数据。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
可选的,在步骤201之前,该数据写入方法还可以包括:
接收主机发送的第一写操作命令;
判断第一存储控制器是否正在根据第三写操作命令向第一位置写入数据;
向第二存储控制器发送第一写操作命令,包括:
若第一存储控制器不是正在根据第三写操作命令向第一位置写入数据,则根据第一写操作命令向第一位置写入数据,并向第二存储控制器发送第一写操作命令。
可选的,在步骤203之前,该数据写入方法还可以包括:
停止根据第一写操作命令向第一位置写入数据。
可选的,每个存储控制器上均设置有写操作记录模块,写操作记录模块用于记载:写操作记录模块所在的存储控制器中正在写入数据的存储位置,判断第一存储控制器是否正在根据第三写操作命令向第一位置写入数据,可以包括:
判断第一存储控制器上的写操作记录模块中是否记载有第一位置;
若第一存储控制器上的写操作记录模块中记载有第一位置,则确定第一存储控制器正在根据第三写操作命令向第一位置写入数据;
若第一存储控制器上的写操作记录模块中未记载有第一位置,则确定第一存储控制器不是正在根据第三写操作命令向第一位置写入数据。
综上所述,由于本发明实施例提供的数据写入方法中,第一存储控制器在向第二存储控制器发送第一写操作命令后,接收到第二存储控制器在确定第二存储控制器的优先级高于第一存储控制器,且该第二存储控制器正在根据第二写操作命令向第二位置写入数据时,向第一存储控制器发送的返回消息,然后该第一存储控制器向第二存储控制器发送转发写命令,使得该第一存储控制器和第二存储控制器根据转发写命令分别向第一位置和第二位置写入数据。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
如图3所示,本发明实施例提供了另一种数据写入方法,该数据写入方法可以用于如图1所示的双活系统0中的第二存储控制器02,该双活系统0还可以包括第一存储控制器01,该数据写入方法可以包括:
步骤301、接收第一存储控制器发送的第一写操作命令,第一写操作命令是第一存储控制器在接收到主机发送的第一写操作命令后发送给第二存储控制器的,第一写操作命令用于指示在目标存储位置写入数据,第二存储控制器中的目标存储位置为第二位置。
步骤302、在第二存储控制器正在根据第二写操作命令向第二位置写入数据,且第二存储控制器的优先级高于第一存储控制器的优先级时,向第一存储控制器发送返回消息,返回消息用于指示第二存储控制器在接收到第一写操作命令时,正在根据第二写操作命令向第二位置写入数据。
步骤303、接收第一存储控制器发送的转发写命令,转发写命令指示的操作与第一写操作命令指示的操作相同。
步骤304、在第二存储控制器停止根据第二写操作命令向第二位置写入数据时,根据转发写命令向第二位置写入数据,并将转发写命令发送至第一存储控制器。
综上所述,由于本发明实施例提供的数据写入方法中,第二存储控制器接收第一存储控制器发送的第一写操作命令,在第二存储控制器正在根据第二写操作命令向第二位置写入数据,且第二存储控制器的优先级高于第一存储控制器的优先级时,向第一存储控制器发送返回消息,然后接收第一存储控制器发送的转发写命令,在第二存储控制器停止根据第二写操作命令向第二位置写入数据时,根据转发写命令向第二位置写入数据,并将转发写命令发送至第一存储控制器。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
可选的,该数据写入方法还可以包括:
在第二存储控制器正在根据第二写操作命令向第二位置写入数据,第二存储控制器的优先级低于第一存储控制器的优先级,且第二存储控制器停止根据第二写操作命令向第二位置写入数据时,根据第一写操作命令向第二位置写入数据。
可选的,每个存储控制器上均设置有写操作记录模块,写操作记录模块用于记载:写操作记录模块所在的存储控制器中正在写入数据的存储位置,
在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据时,所述第二存储控制器上的写操作记录模块中记载有所述第二位置;
在所述第二存储控制器不是正在根据所述第二写操作命令向所述第二位置写入数据时,所述第二存储控制器上的写操作记录模块中未记载有所述第二位置。
综上所述,由于本发明实施例提供的数据写入方法中,第二存储控制器接收第一存储控制器发送的第一写操作命令,在第二存储控制器正在根据第二写操作命令向第二位置写入数据,且第二存储控制器的优先级高于第一存储控制器的优先级时,向第一存储控制器发送返回消息,然后接收第一存储控制器发送的转发写命令,在第二存储控制器停止根据第二写操作命令向第二位置写入数据时,根据转发写命令向第二位置写入数据,并将转发写命令发送至第一存储控制器。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
若第二存储控制器接收到第一存储控制器发送的第一写操作时,该第二存储控制器正在根据第二写操作命令向第二位置写入数据,且此时该第二存储控制器确定该第一存储控制器的优先级高于该第二存储控制器,则该第二存储控制器可以在根据第二写操作命令向第二位置写入数据完毕后,根据该第一写操作命令向第二位置写入数据,保证了该第二存储控制器有序的处理第二存储控制器接收到的写操作命令。
如图4-1所示,本发明实施例提供了又一种数据写入方法,该数据写入方法可以用于如图1所示的双活系统0,该双活系统0可以包括第一存储控制器01和第二存储控制器02,该数据写入方法可以包括:
步骤401、第一存储控制器接收主机发送的第一写操作命令。执行步骤402。
示例的,该主机可以为图1中的主机1,当该主机需要向双活系统中写入数据时,主机可以生成包含目标存储位置的第一写操作命令,即该第一写操作命令用于指示在目标存储位置写入数据。具体的,该目标存储位置上可以存储有数据,主机生成的第一写操作命令可以为对该目标存储位置上的数据进行修改;该目标存储位置上也可以不存储有数据,主机生成的第一写操作命令可以为向该目标存储位置上存储数据。主机在生成该第一写操作命令后,可以将该第一写操作命令发送至双活系统,本发明实施例中以主机将该第一写操作命令发送至双活系统中的第一存储控制器为例。
示例的,该第一存储控制器和第二存储控制器上均可以设置有多个存储位置,第一存储控制器中的目标存储位置为第一位置,第二存储控制器中的目标存储位置为第二位置。可选的,该第一存储控制器和第二存储控制器上均可以设置有存储阵列,每个存储阵列可以包括多个阵列排布的存储块,每个存储块对应一个存储地址,一个存储地址即一个存储位置。
步骤402、第一存储控制器判断第一存储控制器是否正在根据第三写操作命令向第一位置写入数据。若第一存储控制器正在根据第三写操作命令向第一位置写入数据,则执行步骤403;若第一存储控制器不是正在根据第三写操作命令向第一位置写入数据,则执行步骤404。
可选的,每个存储控制器上均可以设置有写操作记录模块,写操作记录模块可以用于记载:写操作记录模块所在的存储控制器中正在写入数据的存储位置。进一步的,该写操作记录模块还可以记载有正在写入数据的存储位置对应的写操作命令,示例的,该写操作记录模块可以包括输入或输出(英文:In/Out;简称:I/O)池,该I/O池可以用于记载正在写入数据的存储位置对应的写操作命令。第一存储控制器在判断第一存储控制器是否正在根据第三写操作命令向第一位置写入数据时,可以查询第一存储控制器上的写操作记录模块中记录的位置,并判断第一存储控制器上的写操作记录模块中是否记载有第一位置,若第一存储控制器上的写操作记录模块中记载有第一位置,则该第一存储控制器可以确定第一存储控制器正在根据第三写操作命令向第一位置写入数据。若第一存储控制器上的写操作记录模块中未记载有第一位置,则确定第一存储控制器不是正在根据第三写操作命令向第一位置写入数据。
需要说明的是,若第一存储控制器正在根据第三写操作命令向第一位置写入数据,则该第一存储控制器可以确定第一存储控制器接收到第三写操作命令的时间早于接收到第一写操作命令的时间。该第三写操作命令指示的操作可以与第一写操作命令指示的操作相同,该第三写操作命令指示的操作也可以与第一写操作命令指示的操作不同,本发明实施例对此不作限定。
步骤403、第一存储控制器判断第一存储控制器是否停止根据第三写操作命令向第一位置写入数据。若第一存储控制器停止根据第三写操作命令向第一位置写入数据,则执行步骤404;若第一存储控制器没有停止根据第三写操作命令向第一位置写入数据,则执行步骤403。
具体的,第一存储控制器可以通过实时的查询该第一存储控制器上的写操作记录模块中是否记载有该第一位置,来判断该第一存储控制器是否停止根据第三写操作命令向第一位置写入数据。若该第一存储控制器未停止根据第三写操作命令向第一位置写入数据,则重复执行步骤403,直至检测到该第一存储控制器停止根据第三写操作命令向第一位置写入数据。
需要说明的是,第一存储控制器可以在根据第三写操作命令向第一位置写入数据完毕之后,停止根据第三写操作命令向第一位置写入数据。该第一存储控制器还可以在接收到第二存储控制器发送的返回消息后,停止根据第三写操作命令向第一位置写入数据。
步骤404、第一存储控制器根据第一写操作命令向第一位置写入数据。执行步骤405。
若第一存储控制器不是正在根据第三写操作命令向第一位置写入数据,或,第一存储控制器停止根据第三写操作命令向第一位置写入数据,则此时第一存储控制器可以根据第一写操作命令向第一位置写入数据。在该第一存储控制器根据第一写操作命令向第一位置写入数据时,该第一存储控制器上的写操作记录模块上可以记载有第一位置以及该第一位置对应的第一写操作命令。
在第一存储控制器接收到主机发送的第一写操作命令后,若该第一存储控制器此时正在根据第三写操作命令向第一位置写入数据,则该第一存储控制器需要等待该第一存储控制器根据第三写操作命令向第一位置写入数据完毕后,才根据该第一写操作命令向第一位置写入数据,使得该第一存储控制器按照一定的顺序,有序的处理第一存储控制器接收到的写操作命令。
步骤405、第一存储控制器向第二存储控制器发送第一写操作命令。执行步骤406。
在第一存储控制器根据第一写操作命令向第一位置写入数据时,该第一存储控制器可以向第二存储控制器发送该第一写操作命令。
步骤406、第二存储控制器判断第二存储控制器是否正在根据第二写操作命令向第二位置写入数据。若第二存储控制器正在根据第二写操作命令向第二位置写入数据,则执行步骤407;若第二存储控制器不是正在根据第二写操作命令向第二位置写入数据,则执行步骤408。
第二存储控制器在接收到第一存储控制器发送的第一写操作命令后,可以判断该第二存储控制器是否正在根据第二写操作命令向第二位置写入数据。
第二存储控制器在判断第二存储控制器是否正在根据第二写操作命令向第二位置写入数据时,可以查询第二存储控制器上的写操作记录模块中记录的位置,并判断第二存储控制器上的写操作记录模块中是否记载有第二位置,若第二存储控制器上的写操作记录模块中记载有第二位置,则该第二存储控制器可以确定第二存储控制器正在根据第二写操作命令向第二位置写入数据。若第二存储控制器上的写操作记录模块中未记载有第二位置,则确定第二存储控制器不是正在根据第二写操作命令向第二位置写入数据。
需要说明的是,若第二存储控制器正在根据第二写操作命令向第一位置写入数据,则该第一存储控制器可以确定第二存储控制器接收到第二写操作命令的时间早于接收到第一写操作命令的时间。该第二写操作命令指示的操作可以与第一写操作命令指示的操作相同,该第二写操作命令指示的操作也可以与第一写操作命令指示的操作不同,本发明实施例对此不作限定。
步骤407、第二存储控制器根据第一存储控制器和第二存储控制器的优先级控制第一存储控制器和第二存储控制器,根据第一写操作命令分别向第一位置和第二位置写入数据。
可选的,该第一存储控制器和第二存储控制器的优先级可以为预先设置的,且第一存储控制器和第二存储控制器上均可以存储有优先级列表,该优先级列表用于记录第一存储控制器和第二存储控制器的优先级。若该优先级列表如表1所示,则该第一存储控制器的优先级高于第二存储控制器,若该优先级列表如表2所示,则该第二存储控制器的优先级高于第一存储控制器。该第二存储控制器可以查询优先级列表,确定第一存储控制器和第二存储控制器的优先级顺序。
表1
存储控制器 | 优先级 |
第一存储控制器 | 高 |
第二存储控制器 | 低 |
表2
存储控制器 | 优先级 |
第一存储控制器 | 低 |
第二存储控制器 | 高 |
一方面,在查询优先级列表后,若第二存储控制器的优先级高于第一存储控制器,则如图4-2所示,步骤407可以包括:
步骤4071a、第二存储控制器向第一存储控制器发送返回消息。执行步骤4072a。
第二存储控制器在接收到第一存储控制器发送的第一写操作命令,且确定该第二存储控制器正在根据第二写操作向第二位置写入数据时,该第二存储控制器可以生成用于指示第二存储控制器在接收到第一存储控制器发送的第一写操作命令时,正在根据第二写操作命令向第二位置写入数据,并将生成的返回消息发送至第一存储控制器。
步骤4072a、第一存储控制器停止根据第一写操作命令向第一位置写入数据。执行步骤4073a。
第一存储控制器在接收到第二存储控制器发送的用于指示该第二存储控制器在接收到第一写操作命令时,正在根据第二写操作命令向第二位置写入数据的返回消息后,该第一存储控制器可以停止根据第一写操作命令向第一位置写入数据。当第一存储控制器停止根据第一写操作命令向第一位置写入数据时,该第一存储控制器上的写操作记录模块可以将该写操作记录模块中记载的第一位置以及该第一位置对应的第一写操作命令进行删除。
步骤4073a、第一存储控制器向第二存储控制器发送转发写命令。执行步骤4074a。
第一存储控制器可以根据该第一写操作命令生成转发写命令,并向第二存储控制器发送该转发写命令,且该转发写命令所指示的操作与该第一写操作命令指示的操作相同,具体的,在根据第一写操作命令生成转发写命令时,可以仅仅对第一写操作命令的格式进行修改,并不对第一写操作命令的内容进行修改。
可选的,在该第一存储控制器根据第一写操作命令生成转发写命令后,还可以将该第一写操作命令进行删除。具体的,该第一存储控制器可以生成用于指示删除第一写操作命令的删除信息,并根据该删除信息将第一存储控制器中的第一写操作命令进行删除,以及将该指示信息发送至第二存储控制器,以便于第二存储控制器将第二存储控制器上的第一写操作命令删除。可选的,该第一存储控制器可以将该第一存储控制器上的I/O池中记载的第一位置以及第一位置对应的第一写操作命令进行删除,该第二存储控制器可以将该第二存储控制器上的I/O池中记载的第二位置以及第二位置对应的第一写操作命令进行删除。
步骤4074a、第二存储控制器判断第二存储控制器是否停止根据第二写操作命令向第二位置写入数据。若第二存储控制器停止根据第二写操作命令向第二位置写入数据,则执行步骤4075a;若第二存储控制器没有停止根据第二写操作命令向第二位置写入数据,则执行步骤4074a。
具体的,第二存储控制器可以通过实时的查询该第二存储控制器上的写操作记录模块中是否记载有该第二位置,来判断该第二存储控制器是否停止根据第二写操作命令向第二位置写入数据。若第二存储控制器上的写操作记录模块中记载有第二位置,则确定第二存储控制器正在根据第三写操作命令向第二位置写入数据;若第二存储控制器上的写操作记录模块中未记载有第二位置,则确定第二存储控制器不是正在根据第三写操作命令向第二位置写入数据。
若该第二存储控制器未停止根据第二写操作命令向第二位置写入数据,则重复执行步骤4074a,直至检测到该第二存储控制器停止根据第二写操作命令向第二位置写入数据。需要说明的是,第二存储控制器可以在根据第二写操作命令向第二位置写入数据完毕之后,可以停止根据第二写操作命令向第二位置写入数据。当第二存储控制器停止根据第二写操作命令向第二位置写入数据时,该第二存储控制器上的写操作记录模块可以将该写操作记录模块中记载的第二位置以及该第二位置对应的第二写操作命令进行删除。
步骤4075a、第二存储控制器根据转发写命令向第二位置写入数据。执行步骤4076a。
若第二存储控制器不是正在根据第二写操作命令向第二位置写入数据,则此时第二存储控制器可以根据转发写命令向第二位置写入数据。
步骤4076a、第二存储控制器向第一存储控制器发送转发写命令。执行步骤4077a。
在第二存储控制器可以根据转发写命令向第二位置写入数据时,第二存储控制器可以向第一存储控制器发送该转发写命令。
步骤4077a、第一存储控制器根据转发写命令向第一位置写入数据。
由于在步骤404中,该第一存储控制器已经根据该第一写操作命令向第一位置写入数据,并在步骤4072a中停止根据该第一写操作命令向第一位置写入数据,所以在步骤4077a中,若该转发写命令用于指示向目标存储位置存储数据,则该第一存储控制器在接收到该转发写命令后,可以检测该第一存储控制器上的第一位置上是否存储有数据,并判断该第一位置上存储的数据是否与该转发写命令所指示的需要存储的数据相同,如果第一位置上存储的数据与该转发写命令所指示的需要存储的数据相同,则确定该第一存储控制器根据转发写命令向第一位置写入数据完毕,并停止根据转发写命令向第一位置写入数据。如果第一位置上存储的数据与该转发写命令所指示的需要存储的数据中的一部分相同,则可以根据该转发写命令继续向该第一位置写入数据,直至该第一位置上存储的数据与该转发写命令所指示的需要存储的数据完全相同,然后停止根据转发写命令向第一位置写入数据。
由于在步骤404中,该第一存储控制器已经根据该第一写操作命令向第一位置写入数据,并在步骤4072a中停止根据该第一写操作命令向第一位置写入数据,所以在步骤4077a中,若该转发写命令用于指示对目标存储位置上的数据进行修改,则该第一存储控制器在接收到该转发写命令后,可以判断该第一位置上存储的数据是否与根据转发写命令将第一位置上的数据进行修改后得到的数据相同,如果该第一位置上存储的数据与根据转发写命令将第一位置上的数据进行修改后得到的数据相同,则确定该第一存储控制器根据转发写命令向第一位置写入数据完毕,并停止根据转发写命令向第一位置写入数据。如果该第一位置上存储的数据与根据转发写命令将第一位置上的数据进行修改后得到的数据的一部分相同,则可以根据该转发写命令继续向该第一位置写入数据,直至该第一位置上存储的数据与根据转发写命令将第一位置上的数据进行修改后得到的数据完全相同,然后停止根据转发写命令向第一位置写入数据。
可选的,该第一存储控制器在接受到该转发写命令后,还可以直接根据该转发写命令向第一位置写入数据,并无需检测该第一位置上存储的数据是否与该转发写命令所指示的需要存储的数据(或根据转发写命令将第一位置上的数据进行修改后得到的数据)相同。在根据该转发写命令向第一位置写入数据时,若该第一位置上已经写入与该转发写命令所指示的数据W,则在步骤4077a中进行写入转发写命令所指示的数据W时,可以将步骤4077a中写入的转发写命令所指示的数据W覆盖在该第一位置上已经写入的数据W上。
需要说明的是,在步骤4075a中该第二存储控制器在根据转发写命令向第二位置写入数据完毕后,该第二存储控制器上的写操作记录模块可以将该写操作记录模块中记载的第二位置以及该第二位置对应的转发写命令进行删除,并生成用于指示该第二存储控制器根据转发写命令向第二位置写入数据完毕的完毕消息,并将该完毕消息发送至第一存储控制器。该第一存储控制器在接收到该第二存储控制器发送的完毕消息后,可以确定第一存储控制器是否根据转发写命令向第一位置写入数据完毕,并在确定第一存储控制器是否根据转发写命令向第一位置写入数据完毕之后,第一存储控制器上的写操作记录模块可以将该写操作记录模块中记载的第一位置以及该第一位置对应的转发写命令进行删除,并生成用于指示双活系统根据第一写操作命令向目标存储位置写入数据完毕的通知消息,然后将该通知消息发送至主机。
另一方面,若第二存储控制器的优先级低于第一存储控制器,则如图4-3所示,步骤407可以包括:
步骤4071b、第二存储控制器判断第二存储控制器是否停止根据第二写操作命令向第二位置写入数据。若第二存储控制器停止根据第二写操作命令向第二位置写入数据,则执行步骤4072b;若第二存储控制器没有停止根据第二写操作命令向第二位置写入数据,则执行步骤4071b。
具体的,第二存储控制器可以通过实时的查询该第二存储控制器上的写操作记录模块中是否记载有该第二位置,来判断该第二存储控制器是否停止根据第二写操作命令向第二位置写入数据。若第二存储控制器上的写操作记录模块中记载有第二位置,则确定第二存储控制器正在根据第三写操作命令向第二位置写入数据;若第二存储控制器上的写操作记录模块中未记载有第二位置,则确定第二存储控制器不是正在根据第三写操作命令向第二位置写入数据。
若该第二存储控制器未停止根据第二写操作命令向第二位置写入数据,则重复执行步骤4074a,直至检测到该第二存储控制器停止根据第二写操作命令向第二位置写入数据。需要说明的是,第二存储控制器可以在根据第二写操作命令向第二位置写入数据完毕之后,停止根据第二写操作命令向第二位置写入数据,该第二存储控制器上的写操作记录模块可以将该写操作记录模块中记载的第二位置以及该第二位置对应的第二写操作命令进行删除。
步骤4072b、第二存储控制器根据第一写操作命令向第二位置写入数据。
若第二存储控制器不是正在根据第二写操作命令向第二位置写入数据,则此时第二存储控制器可以根据转发写命令向第二位置写入数据,并向第一存储控制器发送该转发写命令。若第二存储控制器接收到第一存储控制器发送的第一写操作时,该第二存储控制器正在根据第二写操作命令向第二位置写入数据,且此时该第二存储控制器确定该第一存储控制器的优先级高于该第二存储控制器,则该第二存储控制器可以在根据第二写操作命令向第二位置写入数据完毕后,根据该第一写操作命令向第二位置写入数据,保证了该第二存储控制器有序的处理第二存储控制器接收到的写操作命令。
需要说明的是,该第二存储控制器在根据第一写操作命令向第二位置写入数据完毕后,该第二存储控制器上的写操作记录模块可以将该写操作记录模块中记载的第二位置以及该第二位置对应的第一写操作命令进行删除,并生成用于指示该第二存储控制器根据第一写操作命令向第二位置写入数据完毕的完毕消息,并将该完毕消息发送至第一存储控制器。该第一存储控制器在接收到该第二存储控制器发送的完毕消息后,可以确定第一存储控制器是否根据第一写操作命令向第一位置写入数据完毕,并在确定第一存储控制器是否根据第一写操作命令向第一位置写入数据完毕之后,该第一存储控制器上的写操作记录模块可以将该写操作记录模块中记载的第一位置以及该第一位置对应的第一写操作命令进行删除,并生成用于指示双活系统根据第一写操作命令向目标存储位置写入数据完毕的通知消息,然后将该通知消息发送至主机。
步骤408、第二存储控制器根据第一写操作命令向第二位置写入数据。
若第二存储控制器不是正在根据第二写操作命令向第二位置写入数据,则此时第二存储控制器可以根据转发写命令向第二位置写入数据,并向第一存储控制器发送该转发写命令。
需要说明的是,该第二存储控制器在根据第一写操作命令向第二位置写入数据完毕后,该第二存储控制器上的写操作记录模块可以将该写操作记录模块中记载的第二位置以及该第二位置对应的第一写操作命令进行删除,并生成用于指示该第二存储控制器根据第一写操作命令向第二位置写入数据完毕的完毕消息,并将该完毕消息发送至第一存储控制器。该第一存储控制器在接收到该第二存储控制器发送的完毕消息后,可以确定第一存储控制器是否根据第一写操作命令向第一位置写入数据完毕,并在确定第一存储控制器是否根据第一写操作命令向第一位置写入数据完毕之后,该第一存储控制器上的写操作记录模块可以将该写操作记录模块中记载的第一位置以及该第一位置对应的第一写操作命令进行删除,并生成用于指示双活系统根据第一写操作命令向目标存储位置写入数据完毕的通知消息,然后将该通知消息发送至主机。
可选的,本发明实施例中的写操作记录模块还可以包括复制对(英文:PAIR)和I/O池,该I/O池可以用于记载正在写入数据的存储位置对应的写操作命令,该复制PAIR可以查询I/O池中记载的内容,该复制PAIR还可以对I/O池中记载的内容进行管理,即删除该I/O池中记载的某一存储位置以及该存储位置对应的写操作命令,或控制该I/O记载某一存储位置以及该存储位置对应的写操作命令。本发明实施例中,每个存储控制器上设置的存储阵列中每个存储块的存储地址可以为逻辑单元号(英文:Logical Unit Number;简称:LUN),该I/O池中记载的存储位置也可以为某一存储块的LUN。
示例的,本发明实施例中所述的第一存储控制器的优先级和第二存储控制器的优先级可以通过以下两种方式进行表征,如:第一存储控制器自身的优先级和第二存储控制器自身的优先级,或者,该第一存储控制器上的存储位置的优先级以及第二存储控制器上的存储位置的优先级,存储控制器上的存储位置可以为存储阵列中的逻辑单元号(英文:Logical Unit Number;简称:LUN)对应的位置。需要说明的是,该第一存储控制器的优先级和第二存储控制器的优先级还可以通过其他方式表征,本发明实施例对此不做限定。
综上所述,由于本发明实施例提供的数据写入方法中,第一存储控制器在向第二存储控制器发送第一写操作命令后,接收到第二存储控制器在确定第二存储控制器的优先级高于第一存储控制器,且该第二存储控制器正在根据第二写操作命令向第二位置写入数据时,向第一存储控制器发送的返回消息,然后该第一存储控制器向第二存储控制器发送转发写命令,使得该第一存储控制器和第二存储控制器根据转发写命令分别向第一位置和第二位置写入数据。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
若第二存储控制器接收到第一存储控制器发送的第一写操作时,该第二存储控制器正在根据第二写操作命令向第二位置写入数据,且此时该第二存储控制器确定该第一存储控制器的优先级高于该第二存储控制器,则该第二存储控制器可以在根据第二写操作命令向第二位置写入数据完毕后,根据该第一写操作命令向第二位置写入数据,保证了该第二存储控制器有序的处理第二存储控制器接收到的写操作命令。
如图5-1所示,本发明实施例提供了一种数据写入装置50,该数据写入装置50可以用于如图1所示的双活系统0中的第一存储控制器01,该双活系统0还可以包括第二存储控制器02,该数据写入装置50可以包括:
第一发送模块501,用于向第二存储控制器发送第一写操作命令,第一写操作命令为主机发送给第一存储控制器的,第一写操作命令用于指示在目标存储位置写入数据,第一存储控制器中的目标存储位置为第一位置,第二存储控制器中的目标存储位置为第二位置。
第一接收模块502,用于接收第二存储控制器发送的返回消息,返回消息用于指示第二存储控制器在接收到第一写操作命令时,正在根据第二写操作命令向第二位置写入数据,返回消息为第二存储控制器确定第二存储控制器的优先级高于第一存储控制器的优先级时,生成并发送给第一存储控制器的。
第二发送模块503,用于向第二存储控制器发送转发写命令,转发写命令指示的操作与第一写操作命令指示的操作相同。
第二接收模块504,用于接收第二存储控制器在确定停止根据第二写操作命令向第二位置写入数据,且开始根据转发写命令向第二位置写入数据时,发送的转发写命令。
写入模块505,用于根据转发写命令,向第一位置写入数据。
综上所述,由于本发明实施例提供的数据写入装置中,第一发送模块在向第二存储控制器发送第一写操作命令后,第一接收模块接收到第二存储控制器在确定第二存储控制器的优先级高于第一存储控制器,且该第二存储控制器正在根据第二写操作命令向第二位置写入数据时,向第一存储控制器发送的返回消息,然后第二发送模块向第二存储控制器发送转发写命令,使得该第一存储控制器和第二存储控制器根据转发写命令分别向第一位置和第二位置写入数据。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
如图5-2所示,本发明实施例提供了另一种数据写入装置50,该数据写入装置50可以用于如图1所示的双活系统0中的第一存储控制器01,该双活系统0还可以包括第二存储控制器02,该数据写入装置50可以包括:
第一发送模块501,用于向第二存储控制器发送第一写操作命令,第一写操作命令为主机发送给第一存储控制器的,第一写操作命令用于指示在目标存储位置写入数据,第一存储控制器中的目标存储位置为第一位置,第二存储控制器中的目标存储位置为第二位置。
第一接收模块502,用于接收第二存储控制器发送的返回消息,返回消息用于指示第二存储控制器在接收到第一写操作命令时,正在根据第二写操作命令向第二位置写入数据,返回消息为第二存储控制器确定第二存储控制器的优先级高于第一存储控制器的优先级时,生成并发送给第一存储控制器的。
第二发送模块503,用于向第二存储控制器发送转发写命令,转发写命令指示的操作与第一写操作命令指示的操作相同。
第二接收模块504,用于接收第二存储控制器在确定停止根据第二写操作命令向第二位置写入数据,且开始根据转发写命令向第二位置写入数据时,发送的转发写命令。
写入模块505,用于根据转发写命令,向第一位置写入数据。
第四接收模块506,用于接收主机发送的第一写操作命令。
判断模块507,用于判断第一存储控制器是否正在根据第三写操作命令向第一位置写入数据。
综上所述,由于本发明实施例提供的数据写入装置中,第一发送模块在向第二存储控制器发送第一写操作命令后,第一接收模块接收到第二存储控制器在确定第二存储控制器的优先级高于第一存储控制器,且该第二存储控制器正在根据第二写操作命令向第二位置写入数据时,向第一存储控制器发送的返回消息,然后第二发送模块向第二存储控制器发送转发写命令,使得该第一存储控制器和第二存储控制器根据转发写命令分别向第一位置和第二位置写入数据。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
第一发送模块501还可以用于:
在第一存储控制器不是正在根据第三写操作命令向第一位置写入数据时,根据第一写操作命令向第一位置写入数据,并向第二存储控制器发送第一写操作命令。
如图5-3所示,本发明实施例提供了又一种数据写入装置50,该数据写入装置50可以用于如图1所示的双活系统0中的第一存储控制器01,该双活系统0还可以包括第二存储控制器02,该数据写入装置50可以包括:
第一发送模块501,用于向第二存储控制器发送第一写操作命令,第一写操作命令为主机发送给第一存储控制器的,第一写操作命令用于指示在目标存储位置写入数据,第一存储控制器中的目标存储位置为第一位置,第二存储控制器中的目标存储位置为第二位置。
第一接收模块502,用于接收第二存储控制器发送的返回消息,返回消息用于指示第二存储控制器在接收到第一写操作命令时,正在根据第二写操作命令向第二位置写入数据,返回消息为第二存储控制器确定第二存储控制器的优先级高于第一存储控制器的优先级时,生成并发送给第一存储控制器的。
第二发送模块503,用于向第二存储控制器发送转发写命令,转发写命令指示的操作与第一写操作命令指示的操作相同。
第二接收模块504,用于接收第二存储控制器在确定停止根据第二写操作命令向第二位置写入数据,且开始根据转发写命令向第二位置写入数据时,发送的转发写命令。
写入模块505,用于根据转发写命令,向第一位置写入数据。
第四接收模块506,用于接收主机发送的第一写操作命令。
判断模块507,用于判断第一存储控制器是否正在根据第三写操作命令向第一位置写入数据。
停止模块508,用于停止根据第一写操作命令向第一位置写入数据。
综上所述,由于本发明实施例提供的数据写入装置中,第一发送模块在向第二存储控制器发送第一写操作命令后,第一接收模块接收到第二存储控制器在确定第二存储控制器的优先级高于第一存储控制器,且该第二存储控制器正在根据第二写操作命令向第二位置写入数据时,向第一存储控制器发送的返回消息,然后第二发送模块向第二存储控制器发送转发写命令,使得该第一存储控制器和第二存储控制器根据转发写命令分别向第一位置和第二位置写入数据。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
可选的,每个存储控制器上均设置有写操作记录模块,写操作记录模块用于记载:写操作记录模块所在的存储控制器中正在写入数据的存储位置,判断模块507还可以用于:
判断第一存储控制器上的写操作记录模块中是否记载有第一位置;
在第一存储控制器上的写操作记录模块中记载有第一位置时,确定第一存储控制器正在根据第三写操作命令向第一位置写入数据;
在第一存储控制器上的写操作记录模块中未记载有第一位置时,确定第一存储控制器不是正在根据第三写操作命令向第一位置写入数据。
如图6-1所示,本发明实施例提供了再一种数据写入装置60,该数据写入装置60可以用于如图1所示的双活系统0中的第二存储控制器02,该双活系统0还可以包括第一存储控制器01,该数据写入装置60可以包括:
第一接收模块601,用于接收第一存储控制器发送的第一写操作命令,第一写操作命令是第一存储控制器在接收到主机发送的第一写操作命令后发送给第二存储控制器的,第一写操作命令用于指示在目标存储位置写入数据,第二存储控制器中的目标存储位置为第二位置。
发送模块602,用于在第二存储控制器正在根据第二写操作命令向第二位置写入数据,且第二存储控制器的优先级高于第一存储控制器的优先级时,向第一存储控制器发送返回消息,返回消息用于指示第二存储控制器在接收到第一写操作命令时,正在根据第二写操作命令向第二位置写入数据。
第二接收模块603,用于接收第一存储控制器发送的转发写命令,转发写命令指示的操作与第一写操作命令指示的操作相同。
第一写入模块604,用于在第二存储控制器停止根据第二写操作命令向第二位置写入数据时,根据转发写命令向第二位置写入数据,并将转发写命令发送至第一存储控制器。
综上所述,由于本发明实施例提供的数据写入装置中,第一接收模块接收第一存储控制器发送的第一写操作命令,发送模块在第二存储控制器正在根据第二写操作命令向第二位置写入数据,且第二存储控制器的优先级高于第一存储控制器的优先级时,向第一存储控制器发送返回消息,然后第二接收模块接收第一存储控制器发送的转发写命令,第一写入模块在第二存储控制器停止根据第二写操作命令向第二位置写入数据时,根据转发写命令向第二位置写入数据,并将转发写命令发送至第一存储控制器。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
如图6-2所示,本发明另一实施例提供了一种数据写入装置60,该数据写入装置60可以用于如图1所示的双活系统0中的第二存储控制器02,该双活系统0还可以包括第一存储控制器01,该数据写入装置60可以包括:
第一接收模块601,用于接收第一存储控制器发送的第一写操作命令,第一写操作命令是第一存储控制器在接收到主机发送的第一写操作命令后发送给第二存储控制器的,第一写操作命令用于指示在目标存储位置写入数据,第二存储控制器中的目标存储位置为第二位置。
发送模块602,用于在第二存储控制器正在根据第二写操作命令向第二位置写入数据,且第二存储控制器的优先级高于第一存储控制器的优先级时,向第一存储控制器发送返回消息,返回消息用于指示第二存储控制器在接收到第一写操作命令时,正在根据第二写操作命令向第二位置写入数据。
第二接收模块603,用于接收第一存储控制器发送的转发写命令,转发写命令指示的操作与第一写操作命令指示的操作相同。
第一写入模块604,用于在第二存储控制器停止根据第二写操作命令向第二位置写入数据时,根据转发写命令向第二位置写入数据,并将转发写命令发送至第一存储控制器。
第二写入模块605,用于在第二存储控制器正在根据第二写操作命令向第二位置写入数据,第二存储控制器的优先级低于第一存储控制器的优先级,且第二存储控制器停止根据第二写操作命令向第二位置写入数据时,根据第一写操作命令向第二位置写入数据。
综上所述,由于本发明实施例提供的数据写入装置中,第一接收模块接收第一存储控制器发送的第一写操作命令,发送模块在第二存储控制器正在根据第二写操作命令向第二位置写入数据,且第二存储控制器的优先级高于第一存储控制器的优先级时,向第一存储控制器发送返回消息,然后第二接收模块接收第一存储控制器发送的转发写命令,第一写入模块在第二存储控制器停止根据第二写操作命令向第二位置写入数据时,根据转发写命令向第二位置写入数据,并将转发写命令发送至第一存储控制器。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
若第二存储控制器接收到第一存储控制器发送的第一写操作时,该第二存储控制器正在根据第二写操作命令向第二位置写入数据,且该第一存储控制器的优先级高于该第二存储控制器,则第二写入模块可以在根据第二写操作命令向第二位置写入数据完毕后,根据该第一写操作命令向第二位置写入数据,保证了该第二存储控制器有序的处理第二存储控制器接收到的写操作命令。
可选的,每个存储控制器上均设置有写操作记录模块,写操作记录模块用于记载:写操作记录模块所在的存储控制器中正在写入数据的存储位置,
在第二存储控制器正在根据第二写操作命令向第二位置写入数据时,第二存储控制器上的写操作记录模块中记载有第二位置;
在第二存储控制器不是正在根据第二写操作命令向第二位置写入数据时,第二存储控制器上的写操作记录模块中未记载有第二位置。
综上所述,由于本发明实施例提供的数据写入装置中,第一接收模块接收第一存储控制器发送的第一写操作命令,发送模块在第二存储控制器正在根据第二写操作命令向第二位置写入数据,且第二存储控制器的优先级高于第一存储控制器的优先级时,向第一存储控制器发送返回消息,然后第二接收模块接收第一存储控制器发送的转发写命令,第一写入模块在第二存储控制器停止根据第二写操作命令向第二位置写入数据时,根据转发写命令向第二位置写入数据,并将转发写命令发送至第一存储控制器。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
如图7所示,本发明另一个实施例提供的另一种数据写入装置,该数据写入装置可以包括至少一个处理器701(例如CPU),至少一个网络接口702或者其他通信接口,存储器703,和至少一个通信总线704,用于实现这些装置之间的连接通信。处理器701用于执行存储器703中存储的可执行模块,例如计算机程序。存储器703可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口702(可以是有线或者无线)实现该数据写入装置与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
在一些实施方式中,存储器703存储了程序7031,程序7031可以被处理器701执行,这个程序7031包括:
向第二存储控制器发送第一写操作命令,所述第一写操作命令为主机发送给所述第一存储控制器的,所述第一写操作命令用于指示在目标存储位置写入数据,所述第一存储控制器中的所述目标存储位置为第一位置,所述第二存储控制器中的所述目标存储位置为第二位置;
接收所述第二存储控制器发送的返回消息,所述返回消息用于指示所述第二存储控制器在接收到所述第一写操作命令时,正在根据第二写操作命令向所述第二位置写入数据,所述返回消息为所述第二存储控制器确定所述第二存储控制器的优先级高于所述第一存储控制器的优先级时,生成并发送给所述第一存储控制器的;
向所述第二存储控制器发送转发写命令,所述转发写命令指示的操作与所述第一写操作命令指示的操作相同;
接收所述第二存储控制器在确定停止根据所述第二写操作命令向所述第二位置写入数据,且开始根据所述转发写命令向所述第二位置写入数据时,发送的所述转发写命令;
根据所述转发写命令,向所述第一位置写入数据。
可选的,在所述向第二存储控制器发送第一写操作命令之前,所述程序7031还可以包括:
接收主机发送的所述第一写操作命令;
判断所述第一存储控制器是否正在根据第三写操作命令向所述第一位置写入数据;
所述向第二存储控制器发送第一写操作命令,包括:
若所述第一存储控制器不是正在根据第三写操作命令向所述第一位置写入数据,则根据所述第一写操作命令向所述第一位置写入数据,并向所述第二存储控制器发送所述第一写操作命令。
可选的,在所述向所述第二存储控制器发送转发写命令之前,所述方法还包括:
停止根据所述第一写操作命令向所述第一位置写入数据。
可选的,每个存储控制器上均设置有写操作记录模块,所述写操作记录模块用于记载:所述写操作记录模块所在的存储控制器中正在写入数据的存储位置,所述判断所述第一存储控制器是否正在根据第三写操作命令向所述第一位置写入数据,包括:
判断所述第一存储控制器上的写操作记录模块中是否记载有所述第一位置;
若所述第一存储控制器上的写操作记录模块中记载有所述第一位置,则确定所述第一存储控制器正在根据第三写操作命令向所述第一位置写入数据;
若所述第一存储控制器上的写操作记录模块中未记载有所述第一位置,则确定所述第一存储控制器不是正在根据第三写操作命令向所述第一位置写入数据。
综上所述,由于本发明实施例提供的数据写入装置中,第一存储控制器在向第二存储控制器发送第一写操作命令后,接收到第二存储控制器在确定第二存储控制器的优先级高于第一存储控制器,且该第二存储控制器正在根据第二写操作命令向第二位置写入数据时,向第一存储控制器发送的返回消息,然后该第一存储控制器向第二存储控制器发送转发写命令,使得该第一存储控制器和第二存储控制器根据转发写命令分别向第一位置和第二位置写入数据。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
如图8所示,本发明另一个实施例提供的又一种数据写入装置,该数据写入装置可以包括至少一个处理器801(例如CPU),至少一个网络接口802或者其他通信接口,存储器803,和至少一个通信总线804,用于实现这些装置之间的连接通信。处理器801用于执行存储器803中存储的可执行模块,例如计算机程序。存储器803可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口802(可以是有线或者无线)实现该数据写入装置与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
在一些实施方式中,存储器803存储了程序8031,程序8031可以被处理器801执行,这个程序8031包括:
接收第一存储控制器发送的第一写操作命令,所述第一写操作命令是所述第一存储控制器在接收到主机发送的所述第一写操作命令后发送给所述第二存储控制器的,所述第一写操作命令用于指示在目标存储位置写入数据,所述第二存储控制器中的所述目标存储位置为第二位置;
在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据,且所述第二存储控制器的优先级高于所述第一存储控制器的优先级时,向所述第一存储控制器发送返回消息,所述返回消息用于指示所述第二存储控制器在接收到所述第一写操作命令时,正在根据第二写操作命令向所述第二位置写入数据;
接收所述第一存储控制器发送的转发写命令,所述转发写命令指示的操作与所述第一写操作命令指示的操作相同;
在所述第二存储控制器停止根据所述第二写操作命令向所述第二位置写入数据时,根据所述转发写命令向所述第二位置写入数据,并将所述转发写命令发送至所述第一存储控制器。
可选的,所述程序8031还可以包括:在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据,所述第二存储控制器的优先级低于所述第一存储控制器的优先级,且所述第二存储控制器停止根据所述第二写操作命令向所述第二位置写入数据时,根据所述第一写操作命令向所述第二位置写入数据。
可选的,每个存储控制器上均设置有写操作记录模块,所述写操作记录模块用于记载:所述写操作记录模块所在的存储控制器中正在写入数据的存储位置,
在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据时,所述第二存储控制器上的写操作记录模块中记载有所述第二位置;
在所述第二存储控制器不是正在根据所述第二写操作命令向所述第二位置写入数据时,所述第二存储控制器上的写操作记录模块中未记载有所述第二位置。
综上所述,由于本发明实施例提供的数据写入装置中,第二存储控制器接收第一存储控制器发送的第一写操作命令,在第二存储控制器正在根据第二写操作命令向第二位置写入数据,且第二存储控制器的优先级高于第一存储控制器的优先级时,向第一存储控制器发送返回消息,然后接收第一存储控制器发送的转发写命令,在第二存储控制器停止根据第二写操作命令向第二位置写入数据时,根据转发写命令向第二位置写入数据,并将转发写命令发送至第一存储控制器。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
如图9所示,本发明实施例提供了一种双活系统90,该双活系统90可以包括第一存储控制器901和第二存储控制器902。
一方面,该第一存储控制器901可以为图5-1、图5-2或图5-3所示的数据写入装置50;第二存储控制器902可以为图6-1或图6-2所示的数据写入装置60。
另一方面,该第一存储控制器901可以为图7所示的数据写入装置;第二存储控制器902可以为图8所示的数据写入装置。
综上所述,由于本发明实施例提供的双活系统中,第一存储控制器在向第二存储控制器发送第一写操作命令后,接收到第二存储控制器在确定第二存储控制器的优先级高于第一存储控制器,且该第二存储控制器正在根据第二写操作命令向第二位置写入数据时,向第一存储控制器发送的返回消息,然后该第一存储控制器向第二存储控制器发送转发写命令,使得该第一存储控制器和第二存储控制器根据转发写命令分别向第一位置和第二位置写入数据。本发明实施例中,根据第一存储控制器与第二存储控制器的优先级顺序,依次向第二位置写入数据,防止了该第二存储控制器同时根据两个写操作命令向同一存储位置写入数据,且无需为第二位置加锁,所以,减少了第一存储控制器与第二存储控制器之间的通信次数,减短了双活系统中数据写入耗费的时间,提高了数据写入的效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的数据写入装置和双活系统的具体工作过程,可以参考前述数据写入方法实施例中的对应过程,在此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
在本申请所提供的几个实施例中,应该理解到,所揭露的双活系统,数据写入装置和数据写入方法,可以通过其它的方式实现。例如,以上所描述的数据写入装置实施例仅仅是示意性的,例如,所述数据写入装置中单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (15)
1.一种数据写入方法,其特征在于,用于双活系统中的第一存储控制器,所述双活系统还包括第二存储控制器,所述方法包括:
向第二存储控制器发送第一写操作命令,所述第一写操作命令为主机发送给所述第一存储控制器的,所述第一写操作命令用于指示在目标存储位置写入数据,所述第一存储控制器中的所述目标存储位置为第一位置,所述第二存储控制器中的所述目标存储位置为第二位置;
接收所述第二存储控制器发送的返回消息,所述返回消息用于指示所述第二存储控制器在接收到所述第一写操作命令时,正在根据第二写操作命令向所述第二位置写入数据,所述返回消息为所述第二存储控制器确定所述第二存储控制器的优先级高于所述第一存储控制器的优先级时,生成并发送给所述第一存储控制器的;
向所述第二存储控制器发送转发写命令,所述转发写命令指示的操作与所述第一写操作命令指示的操作相同;
接收所述第二存储控制器在确定停止根据所述第二写操作命令向所述第二位置写入数据,且开始根据所述转发写命令向所述第二位置写入数据时,发送的所述转发写命令;
根据所述转发写命令,向所述第一位置写入数据。
2.根据权利要求1所述的方法,其特征在于,在所述向第二存储控制器发送第一写操作命令之前,所述方法还包括:
接收主机发送的所述第一写操作命令;
判断所述第一存储控制器是否正在根据第三写操作命令向所述第一位置写入数据;
所述向第二存储控制器发送第一写操作命令,包括:
若所述第一存储控制器不是正在根据第三写操作命令向所述第一位置写入数据,则根据所述第一写操作命令向所述第一位置写入数据,并向所述第二存储控制器发送所述第一写操作命令。
3.根据权利要求2所述的方法,其特征在于,在所述向所述第二存储控制器发送转发写命令之前,所述方法还包括:
停止根据所述第一写操作命令向所述第一位置写入数据。
4.根据权利要求2或3所述的方法,其特征在于,每个存储控制器上均设置有写操作记录模块,所述写操作记录模块用于记载:所述写操作记录模块所在的存储控制器中正在写入数据的存储位置,所述判断所述第一存储控制器是否正在根据第三写操作命令向所述第一位置写入数据,包括:
判断所述第一存储控制器上的写操作记录模块中是否记载有所述第一位置;
若所述第一存储控制器上的写操作记录模块中记载有所述第一位置,则确定所述第一存储控制器正在根据第三写操作命令向所述第一位置写入数据;
若所述第一存储控制器上的写操作记录模块中未记载有所述第一位置,则确定所述第一存储控制器不是正在根据第三写操作命令向所述第一位置写入数据。
5.一种数据写入方法,其特征在于,用于双活系统中的第二存储控制器,所述双活系统还包括第一存储控制器,所述方法包括:
接收第一存储控制器发送的第一写操作命令,所述第一写操作命令是所述第一存储控制器在接收到主机发送的所述第一写操作命令后发送给所述第二存储控制器的,所述第一写操作命令用于指示在目标存储位置写入数据,所述第二存储控制器中的所述目标存储位置为第二位置;
在所述第二存储控制器正在根据第二写操作命令向所述第二位置写入数据,且所述第二存储控制器的优先级高于所述第一存储控制器的优先级时,向所述第一存储控制器发送返回消息,所述返回消息用于指示所述第二存储控制器在接收到所述第一写操作命令时,正在根据第二写操作命令向所述第二位置写入数据;
接收所述第一存储控制器发送的转发写命令,所述转发写命令指示的操作与所述第一写操作命令指示的操作相同;
在所述第二存储控制器停止根据所述第二写操作命令向所述第二位置写入数据时,根据所述转发写命令向所述第二位置写入数据,并将所述转发写命令发送至所述第一存储控制器。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据,所述第二存储控制器的优先级低于所述第一存储控制器的优先级,且所述第二存储控制器停止根据所述第二写操作命令向所述第二位置写入数据时,根据所述第一写操作命令向所述第二位置写入数据。
7.根据权利要求5或6所述的方法,其特征在于,每个存储控制器上均设置有写操作记录模块,所述写操作记录模块用于记载:所述写操作记录模块所在的存储控制器中正在写入数据的存储位置,
在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据时,所述第二存储控制器上的写操作记录模块中记载有所述第二位置;
在所述第二存储控制器不是正在根据所述第二写操作命令向所述第二位置写入数据时,所述第二存储控制器上的写操作记录模块中未记载有所述第二位置。
8.一种数据写入装置,其特征在于,用于双活系统中的第一存储控制器,所述双活系统还包括第二存储控制器,所述数据写入装置包括:
第一发送模块,用于向第二存储控制器发送第一写操作命令,所述第一写操作命令为主机发送给所述第一存储控制器的,所述第一写操作命令用于指示在目标存储位置写入数据,所述第一存储控制器中的所述目标存储位置为第一位置,所述第二存储控制器中的所述目标存储位置为第二位置;
第一接收模块,用于接收所述第二存储控制器发送的返回消息,所述返回消息用于指示所述第二存储控制器在接收到所述第一写操作命令时,正在根据第二写操作命令向所述第二位置写入数据,所述返回消息为所述第二存储控制器确定所述第二存储控制器的优先级高于所述第一存储控制器的优先级时,生成并发送给所述第一存储控制器的;
第二发送模块,用于向所述第二存储控制器发送转发写命令,所述转发写命令指示的操作与所述第一写操作命令指示的操作相同;
第二接收模块,用于接收所述第二存储控制器在确定停止根据所述第二写操作命令向所述第二位置写入数据,且开始根据所述转发写命令向所述第二位置写入数据时,发送的所述转发写命令;
写入模块,用于根据所述转发写命令,向所述第一位置写入数据。
9.根据权利要求8所述的数据写入装置,其特征在于,所述数据写入装置还包括:
第四接收模块,用于接收主机发送的所述第一写操作命令;
判断模块,用于判断所述第一存储控制器是否正在根据第三写操作命令向所述第一位置写入数据;
所述第一发送模块还用于:
在所述第一存储控制器不是正在根据第三写操作命令向所述第一位置写入数据时,根据所述第一写操作命令向所述第一位置写入数据,并向所述第二存储控制器发送所述第一写操作命令。
10.根据权利要求9所述的数据写入装置,其特征在于,所述数据写入装置还包括:
停止模块,用于停止根据所述第一写操作命令向所述第一位置写入数据。
11.根据权利要求9或10所述的数据写入装置,其特征在于,每个存储控制器上均设置有写操作记录模块,所述写操作记录模块用于记载:所述写操作记录模块所在的存储控制器中正在写入数据的存储位置,所述判断模块还用于:
判断所述第一存储控制器上的写操作记录模块中是否记载有所述第一位置;
在所述第一存储控制器上的写操作记录模块中记载有所述第一位置时,确定所述第一存储控制器正在根据第三写操作命令向所述第一位置写入数据;
在所述第一存储控制器上的写操作记录模块中未记载有所述第一位置时,确定所述第一存储控制器不是正在根据第三写操作命令向所述第一位置写入数据。
12.一种数据写入装置,其特征在于,用于双活系统中的第二存储控制器,所述双活系统还包括第一存储控制器,所述数据写入装置包括:
第一接收模块,用于接收第一存储控制器发送的第一写操作命令,所述第一写操作命令是所述第一存储控制器在接收到主机发送的所述第一写操作命令后发送给所述第二存储控制器的,所述第一写操作命令用于指示在目标存储位置写入数据,所述第二存储控制器中的所述目标存储位置为第二位置;
发送模块,用于在所述第二存储控制器正在根据第二写操作命令向所述第二位置写入数据,且所述第二存储控制器的优先级高于所述第一存储控制器的优先级时,向所述第一存储控制器发送返回消息,所述返回消息用于指示所述第二存储控制器在接收到所述第一写操作命令时,正在根据第二写操作命令向所述第二位置写入数据;
第二接收模块,用于接收所述第一存储控制器发送的转发写命令,所述转发写命令指示的操作与所述第一写操作命令指示的操作相同;
第一写入模块,用于在所述第二存储控制器停止根据所述第二写操作命令向所述第二位置写入数据时,根据所述转发写命令向所述第二位置写入数据,并将所述转发写命令发送至所述第一存储控制器。
13.根据权利要求12所述的数据写入装置,其特征在于,所述数据写入装置还包括:
第二写入模块,用于在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据,所述第二存储控制器的优先级低于所述第一存储控制器的优先级,且所述第二存储控制器停止根据所述第二写操作命令向所述第二位置写入数据时,根据所述第一写操作命令向所述第二位置写入数据。
14.根据权利要求12或13所述的数据写入装置,其特征在于,每个存储控制器上均设置有写操作记录模块,所述写操作记录模块用于记载:所述写操作记录模块所在的存储控制器中正在写入数据的存储位置,
在所述第二存储控制器正在根据所述第二写操作命令向所述第二位置写入数据时,所述第二存储控制器上的写操作记录模块中记载有所述第二位置;
在所述第二存储控制器不是正在根据所述第二写操作命令向所述第二位置写入数据时,所述第二存储控制器上的写操作记录模块中未记载有所述第二位置。
15.一种双活系统,其特征在于,所述双活系统包括第一存储控制器和第二存储控制器,
所述第一存储控制器为权利要求8至11任一所述的数据写入装置;
所述第二存储控制器为权利要求12至14任一所述的数据写入装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911272697.7A CN111176559B (zh) | 2015-12-04 | 2015-12-04 | 数据写入方法及装置、双活系统 |
CN201510885958.8A CN106844234B (zh) | 2015-12-04 | 2015-12-04 | 数据写入方法及装置、双活系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510885958.8A CN106844234B (zh) | 2015-12-04 | 2015-12-04 | 数据写入方法及装置、双活系统 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911272697.7A Division CN111176559B (zh) | 2015-12-04 | 2015-12-04 | 数据写入方法及装置、双活系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106844234A CN106844234A (zh) | 2017-06-13 |
CN106844234B true CN106844234B (zh) | 2020-01-03 |
Family
ID=59150511
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911272697.7A Active CN111176559B (zh) | 2015-12-04 | 2015-12-04 | 数据写入方法及装置、双活系统 |
CN201510885958.8A Active CN106844234B (zh) | 2015-12-04 | 2015-12-04 | 数据写入方法及装置、双活系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911272697.7A Active CN111176559B (zh) | 2015-12-04 | 2015-12-04 | 数据写入方法及装置、双活系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN111176559B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108663971A (zh) * | 2018-06-01 | 2018-10-16 | 北京汉能光伏投资有限公司 | 命令转发方法及装置、太阳能系统和中央控制器 |
WO2020006715A1 (zh) * | 2018-07-04 | 2020-01-09 | 华为技术有限公司 | 一种数据存储方法、装置及相关设备 |
CN109445992A (zh) * | 2018-11-01 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种双活系统数据管理方法及相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639808A (zh) * | 2008-06-17 | 2010-02-03 | 三星电子株式会社 | 非易失性存储设备中的数据管理方法及非易失性存储系统 |
CN103513956A (zh) * | 2012-06-26 | 2014-01-15 | 阿里巴巴集团控股有限公司 | 一种处理器处理数据的方法以及装置 |
CN104407814A (zh) * | 2014-11-21 | 2015-03-11 | 华为技术有限公司 | 双写数据的方法和装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1040803C (zh) * | 1989-05-17 | 1998-11-18 | 国际商业机器公司 | 在数据处理系统提供附加系统特性的方法和装置 |
JP2004110367A (ja) * | 2002-09-18 | 2004-04-08 | Hitachi Ltd | 記憶装置システムの制御方法、記憶制御装置、および記憶装置システム |
JP2005071100A (ja) * | 2003-08-25 | 2005-03-17 | Fujitsu Ltd | ストレージ制御装置及びその制御方法 |
JP4993913B2 (ja) * | 2006-01-13 | 2012-08-08 | 株式会社日立製作所 | 記憶制御装置及びそのデータ管理方法 |
CN101464781A (zh) * | 2008-12-31 | 2009-06-24 | 成都市华为赛门铁克科技有限公司 | 一种端口控制的方法、装置和固态硬盘 |
CN101719052B (zh) * | 2009-12-22 | 2012-05-02 | 成都市华为赛门铁克科技有限公司 | 一种写数据的方法、装置及系统 |
US8862816B2 (en) * | 2010-01-28 | 2014-10-14 | International Business Machines Corporation | Mirroring multiple writeable storage arrays |
US8683480B2 (en) * | 2011-06-01 | 2014-03-25 | International Business Machines Corporation | Resource allocation for a plurality of resources for a dual activity system |
CN102331977A (zh) * | 2011-09-07 | 2012-01-25 | 上海交通大学 | 内存控制器、处理器系统及内存访问控制方法 |
KR20140028618A (ko) * | 2012-08-29 | 2014-03-10 | 삼성전자주식회사 | 쓰기 페일을 줄이는 메모리 장치, 이를 포함하는 메모리 시스템 및 그 쓰기 방법 |
CN103530066B (zh) * | 2013-09-16 | 2016-05-18 | 华为技术有限公司 | 一种数据存储方法、装置及系统 |
US20150261446A1 (en) * | 2014-03-12 | 2015-09-17 | Futurewei Technologies, Inc. | Ddr4-onfi ssd 1-to-n bus adaptation and expansion controller |
-
2015
- 2015-12-04 CN CN201911272697.7A patent/CN111176559B/zh active Active
- 2015-12-04 CN CN201510885958.8A patent/CN106844234B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639808A (zh) * | 2008-06-17 | 2010-02-03 | 三星电子株式会社 | 非易失性存储设备中的数据管理方法及非易失性存储系统 |
CN103513956A (zh) * | 2012-06-26 | 2014-01-15 | 阿里巴巴集团控股有限公司 | 一种处理器处理数据的方法以及装置 |
CN104407814A (zh) * | 2014-11-21 | 2015-03-11 | 华为技术有限公司 | 双写数据的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106844234A (zh) | 2017-06-13 |
CN111176559A (zh) | 2020-05-19 |
CN111176559B (zh) | 2023-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9135190B1 (en) | Multi-profile memory controller for computing devices | |
US7418563B2 (en) | Method for controlling storage device controller, storage device controller, and program | |
CN106527974B (zh) | 一种写数据的方法、设备及系统 | |
CN106104502B (zh) | 用于存储系统事务的系统、方法和介质 | |
US10496608B2 (en) | Synchronizing changes in a file system which are initiated by a storage device and a host device | |
CN100530069C (zh) | 一种非同质存储设备的虚拟化系统及方法 | |
CN106844234B (zh) | 数据写入方法及装置、双活系统 | |
US20150149741A1 (en) | Storage System and Control Method Thereof | |
US10664193B2 (en) | Storage system for improved efficiency of parity generation and minimized processor load | |
US20070094395A1 (en) | Computer system, storage area allocation method, and management computer | |
US8886597B2 (en) | Synchronizing changes in a file system which are initiated by a storage device and a host device | |
US20170003890A1 (en) | Device, program, recording medium, and method for extending service life of memory | |
JP5673396B2 (ja) | 情報処理システム、情報処理プログラム、情報処理方法 | |
JP2015170271A (ja) | 記憶領域管理装置、記憶領域管理方法及び記憶領域管理プログラム | |
CN105335441B (zh) | 基于局域网的分布式文件系统 | |
US7039659B2 (en) | Method and apparatus for making differential independent data copies in a data processing system | |
US9235349B2 (en) | Data duplication system, data duplication method, and program thereof | |
US20140365736A1 (en) | Hardware Based Cache Scan with Divert Node Handling | |
CN106557385B (zh) | 数据快照方法和存储设备 | |
US9703497B2 (en) | Storage system and storage control method | |
CN111831589A (zh) | 提高io命令处理并行性的方法与装置 | |
JP6183876B2 (ja) | レプリケーション装置、レプリケーション方法及びプログラム | |
US9507702B2 (en) | Method of performing write access by distributing control rights to threads, memory controller and flash memory storage device using the same | |
KR20190069134A (ko) | 응용 프로그램간 파일 공유 장치 및 방법 | |
CN102981780B (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 |