CN110896406A - 数据存储方法、装置及服务器 - Google Patents
数据存储方法、装置及服务器 Download PDFInfo
- Publication number
- CN110896406A CN110896406A CN201811068815.8A CN201811068815A CN110896406A CN 110896406 A CN110896406 A CN 110896406A CN 201811068815 A CN201811068815 A CN 201811068815A CN 110896406 A CN110896406 A CN 110896406A
- Authority
- CN
- China
- Prior art keywords
- server
- target data
- cache
- data
- storage medium
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/264—Remote server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/281—Single cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
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)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据存储方法、装置及服务器,该方法包括:第一服务器接收第二服务器发送的写指令,并将目标数据存储至控制器的高速缓存,然后检测针对目标数据的读指令,并根据读指令将目标数据存储至非易失性内存的存储介质。也即是,在第二服务器需要将目标数据写入第一服务器时,目标数据不仅被写入第一服务器的高速缓存中,还被写入第一服务器的存储介质中,这样可以保证高速缓存中的数据及时写入存储介质。
Description
技术领域
本申请涉及存储技术领域,特别涉及一种数据存储方法、装置及服务器。
背景技术
远端持久化内存(persistent memory over fabric,PMoF)服务,是指将原本需要在业务服务器的内存中处理的数据转移到其他的服务器中,这样可以解决业务服务器的内存的容量有限的问题。另外,由于非易失性内存同时具有读写速度快和非易失性存储的低成本的优势,因此,可以通过部署有非易失性内存的服务器为业务服务器提供PMoF服务。当通过部署有非易失性内存的服务器为业务服务器提供PMoF服务时,如何安全有效的将数据存储至部署有非易失性内存的服务器中成为目前关注的热点。
发明内容
本申请提供了一种数据存储方法、装置及服务器,可以解决将数据存储至部署有非易失性内存的服务器之后数据容易丢失的问题,以提高数据存储的安全有效性。所述技术方案如下:
第一方面,提供了一种数据存储方法,该方法包括:第一服务器接收第二服务器发送的写指令,第一服务器包括非易失性内存,非易失性内存包括控制器和存储介质,第一服务器和第二服务器通过第一网络通信,写指令中包括目标数据;第一服务器将目标数据存储至控制器的高速缓存;第一服务器检测针对目标数据的读指令,读指令用于指示第一服务器将目标数据存储至非易失性内存的存储介质;第一服务器根据读指令将目标数据存储至非易失性内存的存储介质。
在本申请中,当第一服务器将目标数据存储至控制器的高速缓存中之后,第一服务器检测针对目标数据的读指令,并根据该读指令将目标数据存储至非易失性内存的存储介质中。也即是,在本申请中,在第二服务器需要将目标数据写入第一服务器时,目标数据不仅被写入第一服务器的高速缓存中,还被写入第一服务器的存储介质中,这样的话,可以保证高速缓存中的数据及时写入存储介质,从而避免由于第一服务器出现故障而导致第二服务器出现异常的情况,提高了将数据存储至第一服务器的安全有效性。并且通过本申请提供的数据存储方法,由于第一服务器为第二服务器提供数据存储服务,这样第二服务器中可以只部署网络资源和计算资源,从而提升第二服务器的性能。
可选地,第一服务器还包括第一网卡,第一服务器检测针对目标数据的读指令,包括:当第一网卡确定目标数据全部写入高速缓存时,第一网卡生成针对目标数据的读指令;控制器检测到读指令。
在一种可能的实现方式中,当第一服务器中的第一网卡确定目标数据全部写入高速缓存时,由第一网卡主动触发针对目标数据的读指令,以指示将目标数据下刷到存储介质,这样就无需由第二服务器来触发该读指令,可以降低第二服务器的开销。
可选地,第一服务器根据读指令将目标数据存储至非易失性内存的存储介质之后,还包括:第一服务器向第二服务器发送针对写指令的第一确认消息。
针对上述可能的实现方式,由于第一服务器是在将目标数据存储至高速缓存之后,立即又将目标数据下刷到存储介质,因此在将目标数据下刷到存储介质中之后,需要向第二服务器发送针对写指令的第一确认消息。这样通过第一确认消息第二服务器就可以确定目标数据已经下刷到存储介质,便于第二服务器及时了解到目标数据的存储情况。
可选地,第一服务器检测针对目标数据的读指令,包括:当第一服务器确定目标数据全部写入高速缓存时,第一服务器向第二服务器发送针对写指令的第二确认消息,以使第二服务器在接收到第二确认消息时向第一服务器发送针对目标数据的读指令;第一服务器接收针对目标数据的读指令,以使第一服务器检测到读指令。
在另一种可能的实现方式中,当第一服务器确定目标数据全部写入高速缓存时,由第二服务器主动触发针对目标数据的读指令,以指示第一服务器将目标数据下刷到存储介质,这样无需对第一服务器中的程序进行修改即可实现将目标数据及时下刷到存储介质,避免了需要对第一服务器中的程序进行修改。
可选地,该方法还包括:第一服务器向第二服务器返回目标数据。
针对上述可能的实现方式,由于读指令是由第二服务器触发的,因此,第一服务器在将目标数据下刷到存储介质之后,还需向第二服务器返回目标数据,以及时响应第二服务器发送的读指令。
可选地,在第一服务器检测针对目标数据的读指令之前,还包括:第一服务器将高速缓存中的目标数据的存储标识设置为第一标识,第一标识用于指示目标数据未写入存储介质;则在第一服务器根据读指令将目标数据存储至非易失性内存的存储介质之后,该方法还包括:第一服务器将高速缓存中的目标数据的存储标识更新为第二标识,第二标识用于指示目标数据已写入存储介质。
由于本申请是通过针对目标数据的读指令来触发第一服务器将目标数据下刷到存储介质,为了避免第一服务器在每次接收到读指令时都将对应的数据下刷到存储介质,在高速缓存中的数据设置有存储标识,以指示对应的数据是否下刷到存储介质,这样可以降低控制器产生不必要的开销。
可选地,针对目标数据的读指令包括目标数据在高速缓存中的存储地址;第一服务器根据读指令将目标数据存储至非易失性内存的存储介质,包括:第一服务器根据目标数据在高速缓存中的存储地址,获取目标数据,并将获取的目标数据存储至非易失性内存的存储介质。第一服务器在将目标数据写入高速缓存时,已经获知目标数据的存储地址,因此,在读取目标数据时,可以直接按照该存储地址获取目标数据,避免第一服务器需要再次获取一次目标数据的存储地址,从而降低控制器的开销。
可选地,第一网络包括远端内存直接访问(remote direct memory access,RDMA)网络,非易失性内存为存储级内存(storageclass memory,SCM)。
在一种可能的实现方式中,第一网络可以为RDMA网络,由于RDMA网络是一种高速网络,因此,第二服务器的处理器在处理数据时,可以直接将数据存储在第一服务器中,从而降低了第二服务器中处理器的开销,以提升第二服务器的整体性能。
第二方面,提供了一种数据存储装置,该数据存储装置具有实现上述第一方面中的数据鵆方法行为的功能。该数据存储装置包括至少一个模块,该至少一个模块可以集成在上述第一服务器中,以实现上述第一方面所提供的数据存储方法。
第三方面,本申请提供一种服务器,所述服务器包括处理器、存储器、通信接口、总线,所述处理器、存储器和通信接口之间通过总线连接并完成相互间的通信,所述存储器中用于存储计算机执行指令,所述服务器运行时,所述处理器执行所述存储器中的计算机执行指令以利用所述服务器中的硬件资源执行第一方面或第一方面任一种可能实现方式中所述方法的操作步骤。
第四方面,提供一种数据存储方法,所述方法包括:第一网卡接收第二网卡发送的写指令,第一网卡为第一服务器中的网卡,第二网卡为第二服务器中的网卡,第一服务器还包括非易失性内存,非易失性内存包括控制器和存储介质,第一网卡和第二网卡通过第一网络通信,写指令中包括目标数据;第一网卡将目标数据存储至控制器的高速缓存;第一网卡检测针对目标数据的读指令,读指令用于指示第一网卡将目标数据存储至非易失性内存的存储介质;第一网卡根据读指令将目标数据存储至非易失性内存的存储介质。
在本申请中,当第一网卡将目标数据存储至控制器的高速缓存中之后,第一网卡检测针对目标数据的读指令,并根据该读指令将目标数据存储至非易失性内存的存储介质中。也即是,在本申请中,在第二服务器需要将目标数据写入第一服务器时,目标数据不仅被写入第一服务器的高速缓存中,还被写入第一服务器的存储介质中,这样的话,可以保证高速缓存中的数据及时写入存储介质,从而避免由于第一服务器出现故障而导致第二服务器出现异常的情况。并且通过本申请提供的数据存储方法,由于第一服务器为第二服务器提供数据存储服务,这样第二服务器中可以只部署网络资源和计算资源,从而提升第二服务器的性能。
可选地,第一网卡检测针对目标数据的读指令,包括:当第一网卡确定目标数据全部写入高速缓存时,第一网卡生成针对目标数据的读指令;控制器检测到读指令。
在一种可能的实现方式中,当第一服务器中的第一网卡确定目标数据全部写入高速缓存时,由第一网卡主动触发针对目标数据的读指令,以指示将目标数据下刷到存储介质,这样就无需由第二服务器来触发该读指令,可以降低第二服务器的处理器的开销。
可选地,第一网卡根据读指令将目标数据存储至非易失性内存的存储介质之后,还包括:第一网卡向第二网卡发送针对写指令的第一确认消息。
针对上述可能的实现方式,由于第一网卡是在将目标数据存储至高速缓存之后,立即又将目标数据下刷到存储介质,因此在将目标数据下刷到存储介质中之后,需要向第二服务器发送针对写指令的第一确认消息。这样的话,通过第一确认消息第二服务器就可以确定目标数据已经下刷到存储介质,便于第二服务器及时了解到目标数据的存储情况。
可选地,第一网卡检测针对目标数据的读指令,包括:当第一网卡确定目标数据全部写入高速缓存时,第一网卡向第二网卡发送针对写指令的第二确认消息,以使第二网卡将第二确认消息发送至第二服务器的处理器,以使第二服务器的处理器在接收到第二确认消息时通过第二网卡向第一网卡发送针对目标数据的读指令;第一网卡接收针对目标数据的读指令,以使第一网卡检测到读指令。
在另一种可能的实现方式中,当第一服务器中的第一网卡确定目标数据全部写入高速缓存时,由第二服务器主动触发针对目标数据的读指令,以指示第一服务器将目标数据下刷到存储介质,这样无需对第一服务器中的程序进行修改即可实现将目标数据及时下刷到存储介质。
可选地,该方法还包括:第一网卡向第二网卡返回目标数据。
针对上述可能的实现方式,由于读指令是由第二服务器触发的,因此,第一服务器在将目标数据下刷到存储介质之后,还需向第二服务器返回目标数据,以及时响应第二服务器发送的读指令。
可选地,在第一网卡检测针对目标数据的读指令之前,还包括:控制器将高速缓存中的目标数据的存储标识设置为第一标识,第一标识用于指示目标数据未写入存储介质;则在第一网卡根据读指令将目标数据存储至非易失性内存的存储介质之后,该方法还包括:控制器将高速缓存中的目标数据的存储标识更新为第二标识,第二标识用于指示目标数据已写入存储介质。
由于本申请是通过针对目标数据的读指令来触发第一服务器将目标数据下刷到存储介质,为了避免第一服务器在每次接收到读指令时都将对应的数据下刷到存储介质,为高速缓存中的数据设置有存储标识,以指示对应的数据是否下刷到存储介质,这样可以降低控制器产生不必要的开销。
可选地,针对目标数据的读指令包括目标数据在高速缓存中的存储地址;第一网卡根据读指令将目标数据存储至非易失性内存的存储介质,包括:第一网卡将读指令发送至控制器,以使控制器根据目标数据在高速缓存中的存储地址,获取目标数据,并将获取的目标数据存储至非易失性内存的存储介质。第一服务器在将目标数据写入高速缓存时,已经获知目标数据的存储地址,因此,在读取目标数据时,可以直接按照该存储地址获取目标数据,避免第一服务器需要再次获取一次目标数据的存储地址,从而降低控制器的开销。
第五方面,提供一种数据存储系统,所述数据存储系统包括第一服务器和至少一个第二服务器,每个第二服务器与第一服务器之间通过第一网络连接;
第一服务器通过上述第一方面所述的数据存储方法为每个第二服务器提供数据存储服务,每个第二服务器用于为业务应用提供计算资源和网络资源。
通过本申请提供的数据存储系统,每个第二服务器可以仅为业务应用提供计算业务和网络资源,其数据存储服务由第一服务器提供,这样即使第二服务器出现故障,第一服务器依然可以保障数据不丢失,从而保障第二服务器在故障修葺之后能够正常运行,从而提高了数据可靠性。
其中,在第二服务器向第一服务器发送针对目标数据的写指令之后,当第二服务器接收到第一服务器发送的针对该写指令的第二确定消息时,第二服务器向第一服务器发送针对目标数据的读指令,以使第一服务器根据该读指令将目标数据存储至非易失性内存的存储介质。
在一种可能的实现方式中,当第一服务器确定目标数据全部写入高速缓存时,由第二服务器主动触发针对目标数据的读指令,以指示第一服务器将目标数据下刷到存储介质,这样无需对第一服务器中的程序进行修改即可实现将目标数据及时下刷到存储介质,提高了本申请提供的数据存储方法的灵活性。
第六方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述所述的数据存储方法。
第七方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的数据存储方法。
附图说明
图1是本申请实施例提供的一种数据存储系统示意图;
图2是本申请实施例提供的另一种数据存储系统示意图;
图3是本申请实施例提供的一种服务器的结构示意图;
图4是本申请实施例提供的一种数据存储方法流程图;
图5是本申请实施例提供的一种数据存储装置框图。
具体实施方式
下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请实施例提供的一种数据存储系统示意图,如图1所示,该系统100包括第一服务器101和第二服务器102,第一服务器101和第二服务器102之间通过第一网络连接以进行通信。
如图1所示,第一服务器101包括非易失性内存(persistent memory,PM)1011和第一网卡(network interface card,NIC)1012,第一网卡1012与非易失性内存1011连接以进行通信。其中,非易失性内存包括控制器(PM controller)10111和存储介质10112,控制器10111与存储介质10112连接以进行通信,控制器10111中还包括高速缓存101111。第二服务器102包括业务模块1021和第二网卡1022,业务模块1021与第二网卡1022连接以进行通信。第一网卡1012和第二网卡1022之间通过第一网络连接以进行通信。
当第二服务器中的业务模块1021发起针对某个数据的写指令时,业务模块1021通过第二网卡1022将该写指令发送给第一服务器101的第一网卡1012,第一网卡1012根据本申请实施例提供的数据存储方法将该数据写入非易失性内存1011中的存储介质中10112。其中,第一网卡1012根据本申请实施例提供的数据存储方法将该数据写入非易失性内存1011中的存储介质10112中的实现方式将在下述实施例中详细说明。
另外,第一网络可以为RDMA网络,该RDMAA网络包括基于RDMA协议的网络,以及基于RDMA的扩展协议的网络。比如,RDMAA网络包括互联网广域远程直接内存访问协议(internet wide-area RDMA protocol,iWARP)网络,基于融合以太的远程内存直接访问协议(remote direct memory access over converged ethernet,RoCE)网络或无限带宽(infiniband,IB)网络等网络,本申请实施例在此不做具体限定。另外,由于第一网络可以为RDMA网络,因此第一网卡和第二网卡也可以统称为基于RDMA的网卡(RNIC),本申请实施例对第一网卡和第二网卡的名称并不做限定。另外,RDMA网络是一种高速传输的网络,在本申请实施例中,第一网络还可以为其他类型的高速传输网络,在此不再一一举例说明。
图1所示第一服务器中非易失性内存可以为SCM,还可以为其他非易失性内存,部署有SCM的第一服务器用于对第二服务器提供数据存储功能。其中,SCM包括因特尔的AEP或Optane产品。
另外,第二服务器也可以称为业务服务器,业务服务器用于为业务应用提供计算和网络资源。其中,计算资源包括处理器,例如,中央处理器(central processing unit,CPU)和片上系统(system on chip,SoC)。网络资源包括网卡,例如,RNIC。
需要说明的是,上述图1所示的系统100中仅仅包括一个第二服务器。可选地,本申请实施例还提供了图2所示的数据存储系统示意图,如图2所示,此时,系统100还可以包括多个第二服务器,每个第二服务器与第一服务器之间通过第一网络通信。其中,每个第二服务器与第二服务器的具体连接方式可以参考图1所示的连接方式,在此不再详细阐述。
作为一种可能的实施例,在图1和图2所示的数据存储系统的基础上,本申请实施例还提供了另一种数据存储系统,该数据存储系统包括多个第一服务器和多个第二服务器,与图2所示的数据存储系统的差别在于,部分第二服务器与至少一个第一服务器通过第一网络通信,另一部分第二服务器与其他第一服务器通过第一网络通信。也就是说,数据存储系统中第二服务器分成两个或两个以上集合,每个第二服务器集合分别使用不同的第一服务器来存储数据。
图3是本申请实施例提供的一种服务器的结构示意图。图1或图2中的第一服务器可以通过图3所示的服务器来实现。参见图3,该服务器包括至少一个处理器301,总线302、非易失性内存303以及网卡304。该网卡304为图1所示的系统中的第一网卡1012。
其中,处理器301可以是一个通用中央处理器(Central Processing Unit,CPU)、微处理器、特定应用集成电路(application-specific integrated circuit,ASIC)或一个或多个用于控制本申请方案程序执行的集成电路。每个处理器可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
总线302可包括一通路,在上述组件处理器301、非易失性内存303以及网卡304之间传送信息。该总线302除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线302。
如图3所示,非易失性内存303包括控制器3031和存储介质3032。控制器3031用于对存储介质3032中存储的数据进行管理。其中,控制器3031与存储介质3032之间通过内部总线进行连接,该内部总线可以为基于存储协议的总线,示例地,该存储协议可以为RS-232(电子工业协会制定的一种数据传输协议)等数据传输协议,在此不做具体限定。
另外,如图3所示,控制器3031中还包括高速缓存30311,当控制器3031接收到待存储的数据时,控制器3031是先将该数据存储在高速缓存30311中,之后再根据有关指令将数据从高速缓存30311中存储至存储介质3032。其中,控制器3031根据有关指令将数据从高速缓存30311中存储至存储介质3032的实现方式将在下述实施例中进行详细解释说明,在此先不展开阐述。
另外,存储介质30311为一种非易失性存储介质,用于进行海量数据的存储。示例地,存储介质30311包括相变内存、铁电内存或磁式内存等介质,本申请实施例对此不做具体限定。目前,相变内存包括3D XPOINT(因特尔的一种产品)等产品,铁电内存包括铁电随机存取内存、铁电电晶体等产品。
其中,当非易失性内存为SCM时,SCM可以像动态随机存取存储器一样嵌入第一服务器的插槽中,相较于动态随机存取存储器,SCM在失去电源的状态下仍然可以不间断地保存资料,具备断电保存的特性。SCM能够提供比快闪存储器更快的读写速度,在成本上比动态随机存取存储器更便宜。因此,在一些计算设备系统架构中,SCM可以被用作内存使用。另外,还可以通过以互连的方式将多个以SCM作为内存的计算设备连接形成SCM资源池以扩大SCM的容量,从而实现对数据的冗余备份。
网卡304,用于与第二服务器进行通信。也即是,在本申请实施例中,第一服务器通过网卡304与第二服务器连接,以实现本申请实施例提供的数据存储方法。
另外,如图3所示,该服务器还可以包括通信接口305,用于与其它设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
上述的服务器可以是一个通用服务器或者是一个专用服务器。在具体实现中,服务器可以是各类存储服务器等设备。本申请实施例不限定服务器的类型。
接下来,对本申请实施例提供的数据存储方法进行详细解释说明。
图4是本申请实施例提供的一种数据存储方法流程图,如图4所示,该方法包括如下步骤:
步骤401:第一服务器接收第二服务器发送的写指令,第一服务器包括非易失性内存,非易失性内存包括控制器和存储介质,第一服务器和第二服务器通过第一网络通信,写指令中包括目标数据。
在本申请实施例中,步骤401可以有以下两种实现方式中任意一种:
方式1:第二服务器先从第一服务器中获取用于存储目标数据的地址的标识,然后按照获取的地址的标识向第一服务器发送写指令。
具体地,当第二服务器中的业务模块在处理业务的过程中产生一个数据时,业务模块需要将该数据进行存储,为了后续便于说明,将需要存储的数据称为目标数据。其中,业务模块对目标数据进行存储的实现方式可以为:业务模块确定目标数据的大小,并通过第二网卡向第一网卡发送地址获取请求,该地址获取请求携带目标数据的大小。当第一网卡接收到该地址获取请求时,第一网卡将该地址获取请求发送给第一服务器的处理器,处理器根据目标数据的大小和高速缓存中的可用地址为该目标数据分配地址,得到第一地址,并通过第一网卡向第二网卡返回地址获取请求响应信息,该地址获取请求响应信息中携带第一地址的标识。当第二网卡接收到该地址获取请求响应信息时,将该地址获取请求响应信息发送给业务模块。业务模块根据接收到的地址获取请求响应信息,确定目标数据在第一服务器中存储位置,再通过第二网卡向第一网卡发送写指令,该写指令携带第一地址的标识和目标数据。
也即是,在方式1中,当第二服务器需要将目标数据存储至第一服务器时,第二服务器需要先基于第一服务器的处理器获取用于存储目标数据的第一地址,以保证第一数据可以顺利存储在第一服务器中。
方式2:第二服务器直接向第一服务器发送包括目标数据的写指令,以使第一服务器在接收到写指令之后再确定用于存储目标数据的地址的标识。
具体地,第二服务器中的业务模块需要将目标数据存储至第一服务器中时,直接通过第二网卡向第一网卡发送针对目标数据的写指令,该写指令中携带目标数据。当第一网卡接收到该写指令时,可以通过下述步骤402将目标数据写入高速缓存中。
也即是,在方式2中,当第二服务器需要将目标数据存储至第一服务器时,第二服务器并不先获取用于存储目标数据的第一地址,而是直接将目标数据发送给第一服务器,以使第一服务器在存储目标数据的过程中为目标数据法分配存储地址,这样可以提高存储目标数据的效率。
上述两种方式仅仅是步骤401的两种可能的实现方式,并不构成对本申请实施例的限定。实际应用中,第一服务器可以通过其他方式接收第二服务器发送的写指令,在此不再一一举例说明。
其中,第一地址是第一服务器中的处理器为目标数据分配的存储地址,该存储地址是指目标数据在高速缓存的存储地址。另外,由图1可知,第一网卡和第二网卡之间可以通过基于RDMA协议的网络连接以进行通信,相应地,该写指令可以为基于RDMA网络的写指令(RDMA write)。当然,如果第一网卡与第二网卡之间通过其他网络连接,相应地该写指令也为其他网络格式下的写指令,本申请实施例在此不做具体限定。
步骤402:第一服务器将目标数据存储至控制器的高速缓存。
针对步骤401中的方式1,由于此时该写指令已经携带有用于存储目标数据的第一地址的标识,因此,第一服务器可以直接根据第一地址的标识将目标数据存储至控制器的高速缓存。具体地,当第一网卡接收到该写指令时,获取写指令中携带的目标数据和第一地址的标识,并通过控制器按照第一地址的标识将目标数据写入控制器中的高速缓存。
针对步骤401中的方式2,由于此时该写指令中仅仅携带有目标数据,因此,第一服务器需先确定用于存储目标数据的存储地址,然后再根据确定的存储地址将目标数据存储至控制器的高速缓存。具体地,当第一网卡接收到该写指令时,获取写指令中携带的目标数据,并确定目标数据的大小,然后向处理器发送地址获取请求,该地址获取请求中携带目标数据的大小。当处理器接收到该地址获取请求时,处理器根据目标数据的大小和高速缓存中的可用地址为该目标数据分配地址,得到第一地址,并向第一网卡返回第一地址的标识。当第一网卡接收到第一地址的标识时,通过控制器按照第一地址的标识将目标数据写入高速缓存。
在上述两种实现方式中,第一网卡通过控制器按照第一地址的标识将目标数据写入高速缓存的实现方式可以为:第一网卡将目标数据按照字节进行划分,得到多个元数据,然后按照第一地址的标识依次将每个元数据发送给控制器,控制器根据第一地址的标识将接收到的每个元数据存储在高速缓存中。
同样地,上述两种实现方式仅仅是步骤402的两种可能的实现方式,并不构成对本申请实施例的限定。实际应用中,第一服务器还可以通过其他方式将目标数据存储至控制器的高速缓存,在此不再一一举例说明。
当第一服务器将目标数据存储至控制器的高速缓存中时,为了避免由于第一服务器此时断电而导致目标数据丢失,需要将目标数据及时从高速缓存中存储至非易失性内存的存储介质,也即是,需要及时将目标数据从高速缓存中下刷到存储介质中。具体地,可以通过下述步骤403至步骤404来实现及时将目标数据从高速缓存中下刷到存储介质中。其中,本申请实施例中提到的存储介质均是指图1或图3中存储介质。也即是,本申请实施例中涉及的存储介质是指第一服务器中部署的非易失性内存中的存储介质。
步骤403:第一服务器检测针对目标数据的读指令,读指令用于指示第一服务器将目标数据存储至非易失性内存的存储介质。
在第一服务器将目标数据存储至控制器的高速缓存中之后,可以通过触发针对目标数据的读指令,以实现及时将目标数据从高速缓存中存储至到存储介质。由于该读指令可以由第一服务器触发,也可以由第二服务器触发,因此,步骤403具体有以下两种可能的实现方式。
方式1,应用于该读指令由第一服务器触发的场景。
此时,步骤403具体可以为:当第一服务器确定目标数据写入高速缓存时,第一服务器包括的第一网卡生成针对目标数据的读指令,以使第一服务器检测到读指令。
由步骤402可知,第一服务器将目标数据存储至控制器的高速缓存,实质上是第一网卡通过控制器将目标数据按照字节依次写入控制器的高速缓存,因此,当第一网卡将目标数据的全部字节写入高速缓存时,可以确定目标数据写入高速缓存,此时,第一网卡主动生成读指令,控制器将检测到该读指令。
其中,读指令中携带目标数据在高速缓存中的存储地址,以便于后续根据目标数据在高速缓存中的存储地址读取目标数据。需要说明的是,由于第一网卡在将目标数据写入高速缓存之前,第一网卡已经获知目标数据的存储地址,因此,在方式1中,第一网卡可以直接根据目标数据在高速缓存中的存储地址生成读指令。
在步骤403的方式1所述的场景中,通过适当地修改第二服务器中的程序,使得当第二服务器触发针对目标数据的写指令之后,第一服务器可以通过步骤403和下述步骤404直接实现将目标数据同时写入高速缓存和存储介质,以实现将目标数据及时下刷到存储介质中。这种将目标数据存储至存储介质的方式可以减少资源开销,并简化了网络通信。
方式2,应用于该读指令由第二服务器触发的场景。
当第一服务器确定目标数据写入高速缓存时,第一服务器向第二服务器发送针对写指令的第二确认消息,以使第二服务器在接收到第二确认消息时,向第一服务器发送针对目标数据的读指令;第一服务器接收针对目标数据的读指令,以使第一服务器检测到读指令。
同样地,基于步骤402可知,当第一网卡将目标数据的全部字节写入高速缓存时,可以确定目标数据写入高速缓存,此时,第一网卡通过第二网卡向业务模块发送针对写指令的第二确认消息。当业务模块接收到第二确认消息时,可以生成针对目标数据的读指令,并通过第二网卡将该读指令发送给第一网卡,当第一网卡接收到该读指令时,相当于第一服务器检测到针对目标数据的读指令。
由图1可知,第一网卡和第二网卡之间可以通过RDMA网络连接以进行通信,因此,在步骤403的方式2中,该写指令可以为基于RDMA网络的读指令(RDMAread),也即是,RDMAread是指通过RDMA网络传输的读指令。当然,如果第一网卡与第二网卡之间通过其他网络连接,相应地该读指令也为其他网络格式下的读指令,本申请实施例在此不做具体限定。
在步骤403的方式2所述的场景中,当第二服务器触发针对目标数据的写指令之后,第一服务器先将目标数据存储至高速缓存,然后由第二服务器触发读指令,以通过下述步骤404实现将目标数据及时下刷到存储介质中。这种将目标数据下刷到存储介质的方式无需对第一服务器的程序进行修改,通过常规的写入之后立刻读取(read after write,RAW)方式,即可实现将目标数据及时存储至存储介质中。其中,常规的RAW方式是指第二服务器在发送针对某个数据的写指令之后,如果接收到针对该写指令的第二确认消息,则立即发送针对同一数据的读指令的方式。但是,方式2存在的缺点是:读指令和写指令均有第二服务器的业务模块触发,会增加第二服务器的CPU开销。
另外,读指令中携带目标数据在高速缓存中的存储地址,以便于后续第一服务器根据目标数据在高速缓存中的存储地址读取目标数据。由步骤401可知,第二服务器在发送写指令之前,可能已获知目标数据在第一服务器的高速缓存中的存储地址,也可能没有获知目标数据在第一服务器的高速缓存中的存储地址,因此,在步骤403的方式2中,业务模块生成针对目标数据的读指令可以由以下两种实现方式:
(1)针对步骤401中的方式1,由于此时第二服务器在发送写指令之前,已经获知目标数据在高速缓存中的存储地址,因此,业务模块可以直接根据目标数据在高速缓存中的存储地址生成读指令。
(2)针对步骤401中的方式2,由于此时第二服务器在发送写指令之前,并没有获知目标数据在高速缓存中的存储地址,因此,当业务模块接收到第二确认消息时,还需通过第二网卡向第一网卡发送地址获取请求,该地址获取请求携带目标数据的标识,当第一网卡接收到地址获取请求时,根据目标数据的标识确定目标数据在高速缓存中的存储地址,并将获取的存储地址通过第一网卡发送给第二网卡,当第二网卡接收到该存储地址时,将该存储地址发送给业务模块,以使业务模块根据该存储地址生成读指令。
步骤404:第一服务器根据读指令将目标数据存储至非易失性内存的存储介质。
由步骤403可知,无论读指令是由第一服务器触发,还是由有第二服务器触发,读指令中均携带目标数据的存储地址。因此,在一种可能的实现方式中,步骤404具体可以为:第一服务器根据目标数据在高速缓存中的存储地址,获取目标数据,并将获取的目标数据存储至非易失性内存的存储介质。
其中,第一服务器根据目标数据在高速缓存中的存储地址,获取目标数据的实现方式可以为:第一网卡将读指令发送给控制器,读指令中携带目标数据在高速缓存中的存储地址,当控制器接收到目标数据在高速缓存中的存储地址时,根据目标数据在高速缓存中的存储地址读取目标数据,并向第一网卡返回目标数据。
在本申请实施例中,为了能够实现通过读指令将目标数据及时从控制器的高速缓存中下刷到存储介质,可以在第一服务器根据读指令读取目标数据的过程中,同时将目标数据存储至存储介质。因此,在一种可能的实现方式中,第一服务器将获取的目标数据存储至非易失性内存的存储介质具体可以为:在控制器正在读取目标数据的过程中,控制器将同时将目标数据从高速缓存中存储至存储介质。
另外,由于本申请实施例是通过读指令来触发将目标数据从高速缓存存储至存储介质的,因此,为了避免第一服务器在每次接收到读指令时,均将读数据指令对应的数据从高速缓存存储至存储介质,可以为高速缓存的每条数据设置有存储标识,存储标识包括第一标识和第二标识,第一标识用于指示未写入存储介质的数据,第二标识用于指示已写入存储介质的数据。因此,在步骤402中,第一服务器将目标数据存储至控制器的高速缓存之后,第一服务器将高速缓存中的目标数据的存储标识设置为第一标识。相应地,在步骤404中,第一服务器将目标数据存储至非易失性内存的存储介质之后,第一服务器还将高速缓存中的目标数据的存储标识更新为第二标识。
基于上述存储标识的设置,当第一服务器接收到针对某个数据的读指令时,第一服务器先确定该数据的存储标识,如果该数据的存储标识为第一标识,则第一服务器在获取该数据的同时,将该数据下刷到存储介质,并更新该数据的存储标识。如果该数据的存储标识为第二标识,则只获取数据即可。
上述步骤401至步骤404是在第一服务器每次检测到针对某个数据的读指令时,均将判断该数据是否从高速缓存中存储至存储介质,如果该数据没有从高速缓存中存储至存储介质,则立即将该数据从高速缓存中存储至存储介质,以实现将高速缓存中的数据及时存储至存储介质中。这样即使第一服务器出现断电等故障,由于高速缓存中的数据均被及时存储至存储介质中,便可避免出现第二服务器中的数据丢失的情况,从而避免由于第一服务器出现故障而导致第二服务器出现异常的情况。
另外,在第一服务器按照上述步骤401至步骤404存储数据的过程中,由于高速缓存中的每个数据有对应的存储标识,且存储标识用于指示对应的数据是否已经从高速缓存中存储至存储介质,因此,第一服务器还可以周期性地或实时地检测每个数据的存储标识,并将存储标识为第一标识的数据及时从高速缓存中存储至存储介质,进一步提高了数据存储的安全可靠性。
另外,针对步骤403的方式1,读指令由第一服务器触发,这种情况下,在第一服务器将目标数据写入高速缓存中之后,第一服务器直接生成读指令,以通过步骤404将目标数据存储至存储介质,因此,在第一服务器根据读指令将目标数据存储至非易失性内存的存储介质之后,第一服务器还需向第二服务器发送针对写指令的第一确认消息,以使第二服务器确定目标数据写入第一服务器中。其中,第一服务器向第二服务器发送针对写指令的第一确认消息的实现方式可以为:第一网卡通过第二网卡向业务模块发送第一确认消息,当业务模块接收到第一确认消息,确定目标数据同时写入高速缓存中和存储介质中。
针对步骤403的方式2:读指令由第二服务器触发,这种情况下,在第一服务器将目标数据写入高速缓存中之后,是由第二服务器生成读指令,以通过步骤404将目标数据存储至存储介质,因此,在第一服务器根据读指令将目标数据存储至非易失性内存的存储介质之后,第一服务器向第二服务器返回目标数据,以响应第二服务器发送的读指令。
在本申请实施例中,当第一服务器将目标数据存储至控制器的高速缓存中之后,第一服务器检测针对目标数据的读指令,并根据该读指令将目标数据存储至非易失性内存的存储介质中。也即是,在本申请中,在第二服务器需要将目标数据写入第一服务器时,目标数据不仅被写入第一服务器的高速缓存中,还被写入第一服务器的存储介质中,这样的话,可以保证高速缓存中的数据及时写入存储介质,从而避免由于第一服务器出现故障而导致第二服务器出现异常的情况。另外,由于第一服务器为第二服务器提供数据存储服务,这样第二服务器中可以只部署网络资源和计算资源,第二服务器的处理器无需关注数据从缓存至内存再到网卡的过程,节省了第二服务器计算资源,从而提升第二服务器的性能。另外,由于RDMA网络是一种高速网络,因此,第二服务器的处理器在处理数据时,可以直接将数据存储在第一服务器中,从而降低了第二服务器中处理器的开销,以提升第二服务器的整体性能。另外,如果读指令由第一服务器触发,这样无需第二服务器触发读指令,可以降低第二服务器的处理器的开销,同时还可以避免第一服务器和第二服务器之间多次进行交互,以优化第一服务器和第二服务器之间的网络通信。
图5为本申请实施例提供的一种数据存储装置,如图5所示,该装置500包括:
第一接收模块501,用于接收第二服务器发送的写指令,写指令中包括目标数据;
第一存储模块502,用于将所述目标数据存储至控制器的高速缓存;其中,第一服务器包括非易失性内存,所述非易失性内存包括所述控制器和存储介质,所述第一服务器和所述第二服务器通过第一网络通信;
检测模块503,用于检测针对所述目标数据的读指令,所述读指令用于指示将所述目标数据存储至所述非易失性内存的存储介质;
第二存储模块504,用于根据所述读指令将所述目标数据存储至所述非易失性内存的存储介质。
可选地,检测模块503包括确定模块5031和读指令检测模块5032:
确定模块5031,用于当确定目标数据写入高速缓存时,生成针对目标数据的读指令;
读指令检测模块5032,用于检测到读指令。
可选地,装置500还包括第一发送模块505:
第一发送模块505,用于向第二服务器发送针对写指令的第一确认消息。
可选地,检测模块503还包括第二发送模块5033和第二接收模块5034:
第二发送模块5033,用于当确定目标数据写入所述高速缓存时,向第二服务器发送针对写指令的第二确认消息;
第二接收模块5034,用于接收针对目标数据的读指令。
可选地,
第二存储模块504,还用于根据目标数据在高速缓存中的存储地址,获取目标数据,并将获取的目标数据存储至非易失性内存的存储介质。
可选地,第一网络包括RDMA网络,非易失性内存为SCM。
需要说明的是:上述实施例提供的数据存储装置在进行数据存储时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据存储装置与数据存储方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
应理解的是,本申请实施例提供的数据存储装置可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现。上述PLD可以是复杂程序逻辑器件(complexprogrammable logical device,CPLD),现场可编程门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。另外,也可以通过软件实现图4所示的数据存储方法,此时数据存储装置及其各个模块也可以为软件模块。
另外,根本申请实施例的提供的数据存储装置500可对应于执行本申请实施例中描述的数据存储方法,并且提供的数据存储装置500中的各个单元的上述和其它操作和/或功能分别为了实现图4所示的数据存储方法的相应流程,为了简洁,在此不再赘述。也即是,上述各个模块可集成在图1或图2所示的第一服务器中,以实现上述实施例提供的数据存储方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(Digital Versatile Disc,DVD))、或者半导体介质(例如:固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种数据存储方法,其特征在于,所述方法包括:
第一服务器接收第二服务器发送的写指令,所述第一服务器包括非易失性内存,所述非易失性内存包括控制器和存储介质,所述第一服务器和所述第二服务器通过第一网络通信,所述写指令中包括目标数据;
所述第一服务器将所述目标数据存储至所述控制器的高速缓存;
所述第一服务器检测针对所述目标数据的读指令,所述读指令用于指示所述第一服务器将所述目标数据存储至所述非易失性内存的存储介质;
所述第一服务器根据所述读指令将所述目标数据存储至所述非易失性内存的存储介质。
2.如权利要求1所述的方法,其特征在于,所述第一服务器还包括第一网卡,所述第一服务器检测针对所述目标数据的读指令,包括:
当所述第一网卡确定所述目标数据写入所述高速缓存时,所述第一网卡生成针对所述目标数据的读指令;
所述控制器检测到所述读指令。
3.如权利要求2所述的方法,其特征在于,所述第一服务器根据所述读指令将所述目标数据存储至所述非易失性内存的存储介质之后,还包括:
所述第一服务器向所述第二服务器发送针对所述写指令的第一确认消息。
4.如权利要求1所述的方法,其特征在于,所述第一服务器检测针对所述目标数据的读指令,包括:
当所述第一服务器确定所述目标数据写入所述高速缓存时,所述第一服务器向所述第二服务器发送针对所述写指令的第二确认消息,以使所述第二服务器在接收到所述第二确认消息时向所述第一服务器发送针对所述目标数据的读指令;
所述第一服务器接收针对所述目标数据的读指令,以使所述第一服务器检测到所述读指令。
5.如权利要求1至4任一所述的方法,其特征在于,所述针对所述目标数据的读指令包括所述目标数据在所述高速缓存中的存储地址;
所述第一服务器根据所述读指令将所述目标数据存储至所述非易失性内存的存储介质,包括:
所述第一服务器根据所述目标数据在所述高速缓存中的存储地址,获取所述目标数据,并将获取的目标数据存储至所述非易失性内存的存储介质。
6.如权利要求1至5任一所述的方法,其特征在于,所述第一网络包括远端内存直接访问RDMA网络,所述非易失性内存为存储级内存SCM。
7.一种数据存储装置,其特征在于,所述装置包括:
第一接收模块,用于接收第二服务器发送的写指令,所述写指令中包括目标数据;
第一存储模块,用于将所述目标数据存储至控制器的高速缓存;
其中,第一服务器包括非易失性内存,所述非易失性内存包括所述控制器和存储介质,所述第一服务器和所述第二服务器通过第一网络通信;
检测模块,用于检测针对所述目标数据的读指令,所述读指令用于指示将所述目标数据存储至所述非易失性内存的存储介质;
第二存储模块,用于根据所述读指令将所述目标数据存储至所述非易失性内存的存储介质。
8.如权利要求7所述的装置,其特征在于,所述检测模块包括:
确定模块,用于当确定所述目标数据写入所述高速缓存时,生成针对所述目标数据的读指令;
读指令检测模块,用于检测到所述读指令。
9.如权利要求8所述的装置,其特征在于,所述装置还包括:
第一发送模块,用于向所述第二服务器发送针对所述写指令的第一确认消息。
10.如权利要求7所述的装置,其特征在于,所述检测模块还包括:
第二发送模块,用于当确定所述目标数据写入所述高速缓存时,向所述第二服务器发送针对所述写指令的第二确认消息;
第二接收模块,用于接收针对所述目标数据的读指令。
11.如权利要求7至10任一所述的装置,其特征在于,所述第二存储模块,还用于根据所述目标数据在所述高速缓存中的存储地址,获取所述目标数据,并将获取的目标数据存储至所述非易失性内存的存储介质。
12.如权利要求7至11任一所述的装置,其特征在于,所述第一网络包括远端内存直接访问RDMA网络,所述非易失性内存为存储级内存SCM。
13.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中用于存储计算机执行指令,所述服务器运行时,所述处理器执行所述存储器中的计算机执行指令以利用所述服务器中的硬件资源执行权利要求1至6中任一所述方法的操作步骤。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811068815.8A CN110896406A (zh) | 2018-09-13 | 2018-09-13 | 数据存储方法、装置及服务器 |
EP19860935.6A EP3839749B1 (en) | 2018-09-13 | 2019-07-01 | Data storage method, device and server |
PCT/CN2019/094164 WO2020052323A1 (zh) | 2018-09-13 | 2019-07-01 | 数据存储方法、装置及服务器 |
US17/199,492 US11403227B2 (en) | 2018-09-13 | 2021-03-12 | Data storage method and apparatus, and server |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811068815.8A CN110896406A (zh) | 2018-09-13 | 2018-09-13 | 数据存储方法、装置及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110896406A true CN110896406A (zh) | 2020-03-20 |
Family
ID=69778161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811068815.8A Pending CN110896406A (zh) | 2018-09-13 | 2018-09-13 | 数据存储方法、装置及服务器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11403227B2 (zh) |
EP (1) | EP3839749B1 (zh) |
CN (1) | CN110896406A (zh) |
WO (1) | WO2020052323A1 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831451A (zh) * | 2020-07-21 | 2020-10-27 | 平安科技(深圳)有限公司 | 云主机内存分配方法及云主机、设备及存储介质 |
CN113099490A (zh) * | 2021-03-09 | 2021-07-09 | 深圳震有科技股份有限公司 | 一种基于5g通信的数据包传输方法和系统 |
CN113422793A (zh) * | 2021-02-05 | 2021-09-21 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置、电子设备及计算机存储介质 |
CN113778320A (zh) * | 2020-06-09 | 2021-12-10 | 华为技术有限公司 | 网卡以及网卡处理数据的方法 |
WO2022017475A1 (zh) * | 2020-07-24 | 2022-01-27 | 华为技术有限公司 | 一种数据访问方法及相关设备 |
CN115174673A (zh) * | 2022-06-29 | 2022-10-11 | 北京奕斯伟计算技术股份有限公司 | 具备低延迟处理器的数据处理装置、数据处理方法及设备 |
WO2022228116A1 (zh) * | 2021-04-26 | 2022-11-03 | 华为技术有限公司 | 一种数据处理方法和装置 |
CN115766824A (zh) * | 2022-10-28 | 2023-03-07 | 苏州浪潮智能科技有限公司 | 连接存储控制器的方法、系统、装置、设备和存储介质 |
WO2023040949A1 (zh) * | 2021-09-17 | 2023-03-23 | 华为技术有限公司 | 网络接口卡、消息发送方法和存储装置 |
CN117573043A (zh) * | 2024-01-17 | 2024-02-20 | 济南浪潮数据技术有限公司 | 分布式存储数据的传输方法、装置、系统、设备和介质 |
US12014173B2 (en) | 2020-06-09 | 2024-06-18 | Huawei Technologies Co., Ltd. | Data processing method for network adapter and network adapter |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118605797A (zh) * | 2019-10-28 | 2024-09-06 | 华为技术有限公司 | 访问固态硬盘的方法及装置 |
CN115242807B (zh) * | 2022-06-30 | 2024-07-05 | 深圳震有科技股份有限公司 | 一种5g通信系统中的数据存取方法及相关设备 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8357048B2 (en) * | 2009-09-29 | 2013-01-22 | Cleversafe, Inc. | Interactive gaming utilizing a dispersed storage network |
CN103917963A (zh) * | 2011-09-30 | 2014-07-09 | 甲骨文国际公司 | 基于快速持久性存储器的回写储存器高速缓存 |
CN104267912A (zh) * | 2014-09-19 | 2015-01-07 | 北京联创信安科技有限公司 | 一种nas加速方法及系统 |
US20150312337A1 (en) * | 2014-04-25 | 2015-10-29 | Netapp Inc. | Mirroring log data |
CN105094691A (zh) * | 2014-05-21 | 2015-11-25 | 华为技术有限公司 | 一种数据操作的方法、设备和系统 |
CN105786726A (zh) * | 2014-12-25 | 2016-07-20 | 研祥智能科技股份有限公司 | 一种异构混合内存的计算机架构及其掉电时的数据保护方法 |
US9529542B2 (en) * | 2015-04-14 | 2016-12-27 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect |
US20170177541A1 (en) * | 2015-12-21 | 2017-06-22 | Microsemi Storage Solutions (U.S.), Inc. | Apparatus and method for transferring data and commands in a memory management environment |
CN107092598A (zh) * | 2016-02-17 | 2017-08-25 | 阿里巴巴集团控股有限公司 | 数据存储位置信息的管理方法和装置 |
CN107888687A (zh) * | 2017-11-15 | 2018-04-06 | 长沙证通云计算有限公司 | 一种基于分布式存储系统的代理客户端存储加速方法及系统 |
CN108347455A (zh) * | 2017-01-24 | 2018-07-31 | 阿里巴巴集团控股有限公司 | 元数据交互方法及系统 |
CN108347454A (zh) * | 2017-01-24 | 2018-07-31 | 阿里巴巴集团控股有限公司 | 元数据交互方法及系统 |
CN108509298A (zh) * | 2018-03-22 | 2018-09-07 | 中国银联股份有限公司 | 一种数据处理的方法、装置及存储介质 |
CN108509150A (zh) * | 2018-03-08 | 2018-09-07 | 华为技术有限公司 | 数据处理方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7664883B2 (en) * | 1998-08-28 | 2010-02-16 | Alacritech, Inc. | Network interface device that fast-path processes solicited session layer read commands |
GB2392742B (en) * | 2002-09-04 | 2005-10-19 | Advanced Risc Mach Ltd | Synchronisation between pipelines in a data processing apparatus |
US9720603B1 (en) * | 2013-03-15 | 2017-08-01 | Bitmicro Networks, Inc. | IOC to IOC distributed caching architecture |
US9509604B1 (en) * | 2013-12-31 | 2016-11-29 | Sanmina Corporation | Method of configuring a system for flow based services for flash storage and associated information structure |
US10055352B2 (en) * | 2014-03-11 | 2018-08-21 | Amazon Technologies, Inc. | Page cache write logging at block-based storage |
US9928168B2 (en) * | 2016-01-11 | 2018-03-27 | Qualcomm Incorporated | Non-volatile random access system memory with DRAM program caching |
KR20170091832A (ko) * | 2016-02-01 | 2017-08-10 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US10437595B1 (en) * | 2016-03-15 | 2019-10-08 | Apple Inc. | Load/store dependency predictor optimization for replayed loads |
US9934009B2 (en) * | 2016-06-01 | 2018-04-03 | International Business Machines Corporation | Processor that includes a special store instruction used in regions of a computer program where memory aliasing may occur |
-
2018
- 2018-09-13 CN CN201811068815.8A patent/CN110896406A/zh active Pending
-
2019
- 2019-07-01 EP EP19860935.6A patent/EP3839749B1/en active Active
- 2019-07-01 WO PCT/CN2019/094164 patent/WO2020052323A1/zh unknown
-
2021
- 2021-03-12 US US17/199,492 patent/US11403227B2/en active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8357048B2 (en) * | 2009-09-29 | 2013-01-22 | Cleversafe, Inc. | Interactive gaming utilizing a dispersed storage network |
CN103917963A (zh) * | 2011-09-30 | 2014-07-09 | 甲骨文国际公司 | 基于快速持久性存储器的回写储存器高速缓存 |
US20150312337A1 (en) * | 2014-04-25 | 2015-10-29 | Netapp Inc. | Mirroring log data |
CN105094691A (zh) * | 2014-05-21 | 2015-11-25 | 华为技术有限公司 | 一种数据操作的方法、设备和系统 |
CN104267912A (zh) * | 2014-09-19 | 2015-01-07 | 北京联创信安科技有限公司 | 一种nas加速方法及系统 |
CN105786726A (zh) * | 2014-12-25 | 2016-07-20 | 研祥智能科技股份有限公司 | 一种异构混合内存的计算机架构及其掉电时的数据保护方法 |
US9529542B2 (en) * | 2015-04-14 | 2016-12-27 | E8 Storage Systems Ltd. | Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect |
US20170177541A1 (en) * | 2015-12-21 | 2017-06-22 | Microsemi Storage Solutions (U.S.), Inc. | Apparatus and method for transferring data and commands in a memory management environment |
CN107092598A (zh) * | 2016-02-17 | 2017-08-25 | 阿里巴巴集团控股有限公司 | 数据存储位置信息的管理方法和装置 |
CN108347455A (zh) * | 2017-01-24 | 2018-07-31 | 阿里巴巴集团控股有限公司 | 元数据交互方法及系统 |
CN108347454A (zh) * | 2017-01-24 | 2018-07-31 | 阿里巴巴集团控股有限公司 | 元数据交互方法及系统 |
CN107888687A (zh) * | 2017-11-15 | 2018-04-06 | 长沙证通云计算有限公司 | 一种基于分布式存储系统的代理客户端存储加速方法及系统 |
CN108509150A (zh) * | 2018-03-08 | 2018-09-07 | 华为技术有限公司 | 数据处理方法及装置 |
CN108509298A (zh) * | 2018-03-22 | 2018-09-07 | 中国银联股份有限公司 | 一种数据处理的方法、装置及存储介质 |
Non-Patent Citations (5)
Title |
---|
佚名: ""[精华] RDMA技术原理分析、主流实现对比和解析"", 《HTTPS://WWW.SOHU.COM/A/229080366_632967》 * |
冯丹等: "《信息存储技术专利数据分析》", 31 January 2016 * |
叶毓睿等: "《软件定义存储:原理、实践与生态》", 30 June 2016 * |
梁新元等: "《网络存储原理及应用》", 30 September 2007 * |
黄红元: "《上海证券交易所联合研究报告 2013 证券信息前沿技术专集》", 31 December 2014 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12014173B2 (en) | 2020-06-09 | 2024-06-18 | Huawei Technologies Co., Ltd. | Data processing method for network adapter and network adapter |
CN113778320A (zh) * | 2020-06-09 | 2021-12-10 | 华为技术有限公司 | 网卡以及网卡处理数据的方法 |
CN111831451A (zh) * | 2020-07-21 | 2020-10-27 | 平安科技(深圳)有限公司 | 云主机内存分配方法及云主机、设备及存储介质 |
WO2021120843A1 (zh) * | 2020-07-21 | 2021-06-24 | 平安科技(深圳)有限公司 | 云主机内存分配方法及云主机、设备及存储介质 |
WO2022017475A1 (zh) * | 2020-07-24 | 2022-01-27 | 华为技术有限公司 | 一种数据访问方法及相关设备 |
CN113422793A (zh) * | 2021-02-05 | 2021-09-21 | 阿里巴巴集团控股有限公司 | 数据传输方法、装置、电子设备及计算机存储介质 |
CN113099490B (zh) * | 2021-03-09 | 2023-03-21 | 深圳震有科技股份有限公司 | 一种基于5g通信的数据包传输方法和系统 |
CN113099490A (zh) * | 2021-03-09 | 2021-07-09 | 深圳震有科技股份有限公司 | 一种基于5g通信的数据包传输方法和系统 |
WO2022228116A1 (zh) * | 2021-04-26 | 2022-11-03 | 华为技术有限公司 | 一种数据处理方法和装置 |
WO2023040949A1 (zh) * | 2021-09-17 | 2023-03-23 | 华为技术有限公司 | 网络接口卡、消息发送方法和存储装置 |
CN115174673A (zh) * | 2022-06-29 | 2022-10-11 | 北京奕斯伟计算技术股份有限公司 | 具备低延迟处理器的数据处理装置、数据处理方法及设备 |
CN115174673B (zh) * | 2022-06-29 | 2023-11-03 | 北京奕斯伟计算技术股份有限公司 | 具备低延迟处理器的数据处理装置、数据处理方法及设备 |
CN115766824A (zh) * | 2022-10-28 | 2023-03-07 | 苏州浪潮智能科技有限公司 | 连接存储控制器的方法、系统、装置、设备和存储介质 |
CN117573043A (zh) * | 2024-01-17 | 2024-02-20 | 济南浪潮数据技术有限公司 | 分布式存储数据的传输方法、装置、系统、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3839749B1 (en) | 2024-09-11 |
EP3839749A1 (en) | 2021-06-23 |
WO2020052323A1 (zh) | 2020-03-19 |
US11403227B2 (en) | 2022-08-02 |
EP3839749A4 (en) | 2021-11-03 |
US20210200681A1 (en) | 2021-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110896406A (zh) | 数据存储方法、装置及服务器 | |
CN111654519B (zh) | 用于传输数据处理请求的方法和装置 | |
US10241722B1 (en) | Proactive scheduling of background operations for solid state drives | |
US11232127B2 (en) | Technologies for providing dynamic persistence of data in edge computing | |
CN102223394A (zh) | 远程直接存储设备访问 | |
US20210326270A1 (en) | Address translation at a target network interface device | |
CN103458036A (zh) | 一种集群文件系统的访问装置和方法 | |
CN108989432B (zh) | 用户态的文件发送方法、文件接收方法和文件收发装置 | |
US20210096939A1 (en) | Fault Tolerance Processing Method, Apparatus, and Server | |
CN112052230A (zh) | 多机房数据同步方法、计算设备及存储介质 | |
EP4421631A1 (en) | Data migration method and apparatus, and electronic device | |
CN112667422A (zh) | 内存故障处理方法及装置、计算设备、存储介质 | |
WO2022108619A1 (en) | Peer storage device messaging over control bus | |
US12079506B2 (en) | Memory expander, host device using memory expander, and operation method of sever system including memory expander | |
US20220156146A1 (en) | Memory controller performing selective and parallel error correction, system including the same and operating method of memory device | |
WO2019218110A1 (en) | Technologies for providing remote out-of-band firmware updates | |
CN114880266B (zh) | 故障处理的方法、装置、计算机设备和存储介质 | |
US10956245B1 (en) | Storage system with host-directed error scanning of solid-state storage devices | |
US10506042B2 (en) | Storage system that includes a plurality of routing circuits and a plurality of node modules connected thereto | |
CN116560785A (zh) | 一种访问存储节点的方法、装置及计算机设备 | |
CN112445413A (zh) | 一种数据存储的方法、装置及相关设备 | |
CN117950921B (zh) | 内存故障处理方法、内存扩展控制设备、电子设备及介质 | |
US20230023696A1 (en) | Migrating virtual machines in cluster memory systems | |
CN117729095A (zh) | 一种数据管理方法、存储系统及相关设备 | |
CN118708133A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200320 |
|
RJ01 | Rejection of invention patent application after publication |