Decoupler based on smart network interface card for data replication
By integrating data protection operations into the intelligent network interface card (Intelligent NIC), the problem of the difficulty in integrating splitters in non-virtualized environments in the prior art is solved, and flexible data protection and efficient data transmission are achieved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- EMC IP HLDG CO LLC
- Filing Date
- 2021-10-12
- Publication Date
- 2026-05-26
AI Technical Summary
Existing data protection systems are difficult to integrate in non-virtualized environments, and integration at the network switch and storage device levels is complex, leading to maintenance difficulties and inflexibility.
Data protection operations are integrated into the intelligent network interface card (intelligent NIC), particularly its storage function, to achieve separate operations and offload some data protection processing through the intelligent NIC.
It enables flexible data protection in decomposed and distributed environments, reduces the risk of single points of failure, and improves data transmission efficiency and throughput.
Smart Images

Figure CN114356210B_ABST
Abstract
Description
Technical Field
[0001] Embodiments of the present invention generally relate to data protection. More specifically, at least some embodiments of the present invention relate to systems, hardware, software, computer-readable media, and methods for data protection operations including copy operations. Background Technology
[0002] In the context of data protection, business continuity and disaster recovery solutions typically rely on data replication. By copying data from a source (e.g., a production site) to a target (e.g., a replication site), a data protection system ensures that a complete and up-to-date copy of the source exists at the target. If the source fails (e.g., data corruption) or suffers a disaster (e.g., power outage, natural disaster), the replicated data at the target can be used for business continuity and disaster recovery purposes.
[0003] Replication operations typically involve write replication or detach writes, where the write is sent to its intended destination at the source, and a copy of the write is sent to the target. This helps ensure that the target copy of the data is synchronized or nearly synchronized with the source data.
[0004] A splitter operates by intercepting writes and forwarding them to a target. Typically, splitters are placed where all writes are allowed to be intercepted. In one example, the splitter is implemented at the host server, such as at the application layer or the operating system layer. However, this implementation requires installation and maintenance. After installation, the splitter must be regularly maintained or updated to account for application changes, operating system versions, compatibility, lifecycle management, and more. This is a lengthy implementation process.
[0005] In another example, the splitter can be implemented at the hypervisor layer within a virtual environment. However, this approach is limited to virtualized environments and cannot operate in non-virtualized environments. The resurgence of bare-metal installations makes this solution less than ideal.
[0006] Implementing splitters at the network switch level is already extremely difficult, at least because it requires close collaboration with other vendors and manufacturers. Integrating splitters into network switches is highly complex and prone to failure for various reasons, including the fact that splitters implemented at the network switch level may be unaware of all relevant storage devices due to their inherently switch-specific nature. Similarly, implementing splitters at the storage device level also requires collaboration and integration with storage vendors. This makes the splitter storage-specific and prevents its integration into software-defined environments, where storage may not necessarily have visibility into data structures. Attached Figure Description
[0007] To describe how at least some advantages and features of the invention can be obtained, a more specific description of embodiments of the invention will be presented by reference to specific embodiments of the invention illustrated in the accompanying drawings. It should be understood that these drawings illustrate only typical embodiments of the invention and are therefore not intended to limit the scope of the invention. Embodiments of the invention will be described and explained more specifically and in detail using the drawings, in which:
[0008] Figure 1 Aspects of a computing environment, including a data protection system configured to copy data from a source to a target, are disclosed.
[0009] Figure 2A An example of a data protection system is shown, which includes a splitter implemented in a smart network interface card and operating in a first mode.
[0010] Figure 2B Another example of a data protection system is shown, which includes a splitter implemented in a smart network interface card and operating in a second mode;
[0011] Figure 3A An example of a method for copying data at a card operating in the first mode is shown;
[0012] Figure 3B An example of a method for copying data at a card operating in the second mode is shown; and
[0013] Figure 4 An example method for copying data is shown. Detailed Implementation
[0014] Embodiments of the present invention generally relate to data protection. More specifically, at least some embodiments of the present invention relate to systems, hardware, software, computer-readable media, and methods for data protection operations (such as backup operations, recovery operations, replication operations, detach operations, business continuity operations, disaster recovery operations, etc., or combinations thereof).
[0015] Exemplary embodiments of the present invention also relate to data protection in the context of a decomposed server architecture. Embodiments of the present invention also relate to incorporating aspects of data protection into devices such as intelligent network interface cards (intelligent NICs).
[0016] A smart NIC is a network interface card that includes additional processing and computing capabilities. These capabilities allow processing to be offloaded from the main processing system to the smart NIC. According to embodiments of the present invention, the smart NIC can perform communication and storage functions.
[0017] Data protection operations, including replication and deduplication, can be facilitated or implemented by integrating them into the smart NIC, and more particularly into its storage capabilities. Advantageously, the architecture of the data protection system allows some of the data protection processing, for example, performed by a server, to be offloaded to the processing capabilities of the smart NIC. Deduplication can be performed at the network card level. By implementing deduplicators at the network card level, the data protection system can operate in both decomposed and distributed environments through deduplication.
[0018] When implemented in a smart NIC, in addition to or in conjunction with the separation operation, the data protection component or module can perform data protection operations and data manipulation, such as encryption, deduplication, and compression.
[0019] Figure 1 An example of a computing environment in which a data protection system is implemented is shown. Figure 1 A system 100 is illustrated in which data is replicated between a production site, including at least a source server 108 and an associated source storage device 112, and a target site, including a target storage device 102. The replicated data may include production data, virtual machines, applications, containers, etc., or combinations thereof. The source server 108 may be virtual, physical, bare metal, etc., or combinations thereof.
[0020] In this example, server 108 communicates with replication controller 106 and source storage device 112 via card 110, which is an example of a smart NIC. By way of example only, replication controller 106 can be a physical or virtual device or other server or machine (e.g., a Dell EMC RecoverPoint device or vRPA). In this example, splitter 114 is implemented in card 110 and can be included in, for example, the network layer of a communication stack and can be integrated with or associated with the storage functionality of card 110.
[0021] More specifically, from a functional perspective, the splitter 114 can be placed within a block that handles storage functions. This allows the splitter 114 to be aware of various storage entities represented by storage device 112 and used by server 108, which may include LUNs, data stores, files, VMDKs (virtual machine disks), software-defined storage (SDN), etc. The splitter 114 is aware of storage device 112, at least because the splitter can perform storage-related operations regarding storage device 112 and replication, and because the splitter 114 is part of the storage data path.
[0022] Card 110 understands or stores the relationship between server 108 and storage device 112. Therefore, placing splitter 114 in the storage block of card 110 ensures that splitter 114 also knows these relationships and storage device 112 itself.
[0023] Implementations of this invention can be carried out in different ways or modes. In each mode, the replication controller and the splitter are each associated with a control plane or control path and a data path, respectively. In a first mode, both the control path and the data path reach the replication controller. In other words, the replication controller can be used as a data mover to deliver the replicated data to the target site. In a second mode, the data path may not reach or pass through the replication controller. This allows the splitter to operate in a decomposed and / or distributed environment, as the splitter can direct data to any destination and remove the replication controller from the data path. This allows the replication controller to control replication without becoming a single point of failure or bottleneck for the replicated data, and allows for scalable implementations to accommodate very high data throughput.
[0024] For example, Figure 1 The server 108 shown may represent multiple servers or virtual machines that may each need to be replicated. Some of these servers or virtual machines may be in a consistency group, etc. By placing a splitter in card 110, data associated with a particular server or virtual machine can be directed to a specific target.
[0025] Regardless of how data is transmitted, the target site or storage device 102 can be associated with a replication controller 104 that can be used to store replicated data, recover replicated data, failover to replicated data, or combinations thereof.
[0026] Figure 2A An example of a data protection system including a splitter is shown. Figure 2A The first operating mode is shown, in which both control path 234 and data path 232 pass through the replication controller 202.
[0027] Server 204 may include two main blocks: a main computing environment 205 (e.g., an x86 CPU with its associated memory and accessories) and a smart NIC 216. The main computing environment 205 may be configured to include a virtual server 206 or a physical server 212. The virtual server 206 may be implemented as or include a virtual machine 208 instantiated on a hypervisor 210. The bare-metal server 212 may be a direct deployment of an operating system (OS) on the main computing environment 205 of the physical server. In this example, servers 206 and 212 communicate with the network and with other devices, servers, storage devices, computing machines, etc., via card 216, which may be a smart NIC.
[0028] By way of example only, card 216 may include multiple layers, such as physical layer 228, networking layer 226, storage function 220, communication function 224, security 230, and API (Application Programming Interface) 218. These layers (which may be layers of communication stacks or protocols) may be implemented as hardware and / or software. Card 216 may also include hardware that allows card 216 to perform and provide computing functions, such as processors and memory or systems-on-a-chip.
[0029] For example, the storage function 220 may be implemented or hard-coded in an ASIC (Application-Specific Integrated Circuit), implemented or hard-coded in an FPGA (Field-Programmable Gate Array), or implemented or hard-coded in that FPGA, or implemented or hard-coded in another processor. For FPGA-based cards, the splitter 222 may be loaded into the FPGA of card 216 together with or separately from other code used to operate card 216.
[0030] The replication controller 202 can be configured to discover entities to be replicated. Therefore, the replication controller 202 can discover virtual server 206, virtual machine 208, and server 212. The replication controller 202 can also determine the replication policy for each entity (e.g., each virtual machine or each server). This information can be stored by the replication controller 202 and / or stored on card 216 for access and use by the splitter 222.
[0031] Since writes from virtual server 206 and server 212 pass through card 216, splitter 222 can monitor each write operation, as it is part of the storage functionality of card 216. For each write operation, splitter 222 can perform checks to determine if the write operation is associated with a protected server. This may involve accessing information related to information describing the protected server. If the write operation is associated with a protected entity or server, splitter 222 will replicate the write by sending it to storage device 236 and by sending it to replication controller 202. In one example, replication controller 202 is configured to send writes to a remote target via another replication controller.
[0032] The separator 222 can also perform other operations, such as deduplication and compression, to improve the efficiency of data transmission. This can also be performed by the replication controller 202.
[0033] exist Figure 2A In the illustrated operating mode, both the replication controller 202 and the splitter 222 are associated with the data path 232 and the control path 234. Therefore, the replication controller 202 is configured to control the operation of the splitter 222 and also functions as a data mover. In other words, since the replication controller 202 is part of the data path, the writes or data copied by the splitter 222 flow through it. Figure 2AThe replication controller 202 in the middle.
[0034] Figure 2B Another example of a data protection system that includes a splitter is shown. Figure 2B Card 246 (SmartNIC) is shown, which is similar to card 216 and has substantially the same components or blocks. However, card 246 is configured to... Figure 2A The operation is performed in the second mode of the first operation mode shown.
[0035] Figure 2B The difference is at least in part because replication controller 240 (which is similar to replication controller 202) does not function as a data mover and may not be part of data path 238, which differs from... Figure 2A The data path 232 is shown. Additionally, a splitter 248, similar to splitter 222, is configured to operate with a different data path 238.
[0036] The replication controller 240 can also control the distribution of data between various source servers and target replica storage devices. If multiple servers exist with increased aggregate data throughput and / or different data protection policies, or even a single server with very high throughput, the replication controller 240 can determine which parts of the data should be sent to different target storage systems. In this case, data streams from the servers may be split and sent directly from the smart NIC to multiple storage targets T. i i = 1, ..., N. Data path 238 represents multiple data paths and illustrates how data can be sent from splitter 248 to individual targets via separate paths. More specifically, the replication controller determines the appropriate target server at the remote site for each source server of each entity or server 204. When operating in the second mode, decomposed networking and scalable implementation are allowed.
[0037] Card 246 has the resources to perform all the necessary transmission functions, which allow splitter 248 to send data to different destinations under the control of replication controller 240. Additionally, card 246 can provide QoS and bandwidth throttling for each host / replication entity.
[0038] As the splitter 248 monitors each write from server 206 and / or server 212, each write may be sent to storage device 236 (which may include multiple storage systems) and various target servers, depending on the source of the write. When operating in this mode, if logging is implemented, it can be implemented at each target location rather than at a central location.
[0039] Advantageously, splitter 222 is in an optimal location. Splitter 248, when located in card 246 or more specifically in storage function 220, is aware of the storage entities in storage device 236 and can distinguish between LUNs, data stores, virtual disks, etc. Advantageously, the function or splitting operation is offloaded from the processing power of servers 206 / 212 to card 246 without affecting the performance of servers 206 and / or 212.
[0040] When Figure 2B In the illustrated operating mode, the splitter 248 or replication controller 240 can achieve point-to-point or mesh transmission in a centralized manner controlled and managed by the replication controller 240. Since data or data transmission does not pass through the replication controller 240, the bottleneck through the replication controller 240 can be eliminated. Therefore, the replication controller 240 is not a single point of failure, and embodiments of the invention thus facilitate resilient operation.
[0041] Figure 3A An example of a separation operation performed at a card operating in the first mode is shown. Figure 3A A card 320 configured with splitter 310 is shown. Card 320 is associated with source or server 302 and source or server 308, which can be virtual servers or other types of servers, machines, or devices. Splitter 310 also knows storage devices 304 and 306, which can be of different types.
[0042] Initially, replication controller 312 can discover servers 302 and 308. Replication controller 312 can query the network or be notified of servers 302 and 308. Replication controller 312 can also determine a replication strategy for each of servers 302 and 308. Card 320, and therefore splitter 310, knows storage devices 304 and 306 and their types, and is able to use the storage and transfer functions of card 320 to ensure that writes are correctly delivered to storage devices 304 and 306.
[0043] In this example, server 302 may issue or execute write A. Write A is intercepted by splitter 310, as splitter 310 is part of the storage function of card 320. Splitter 310 may determine the source of write A and replicate write A according to an associated policy. In this example, splitter 310 sends write A to storage device 306 and sends the write or a copy thereof to replication controller 312. Replication controller 312 then transmits write A to destination 316.
[0044] Write B is processed in a similar manner and according to its associated policy. Write B is received or intercepted by splitter 310. Splitter 310 sends write B to storage device 304 and then forwards or transmits write B to destination 314.
[0045] In one example of this operating mode, targets 314 and 316 can be the same target. Targets 314 and 316 can be in the same location or in different locations. Figure 3A The diagram shows the data stream replicated at splitter 310 passing through replication controller 312 (dashed data path) and the control path also originating from replication controller 312 (solid line).
[0046] Figure 3B Another operating mode is illustrated. In this example, the data path does not flow through replication controller 312. Instead, splitter 310 sends write A directly to target 316 when replicating write A. Similarly, splitter 310 sends write B directly to target 314.
[0047] Figure 4 An example of a method for copying writes is shown. In method 400, during operation, the splitter may receive a 402 write from a server. Since the splitter resides in or is instantiated in a card (such as a smart NIC), the splitter is aware of the card's potential local or production storage and transfer capabilities. Upon receiving the write, the source of the 404 write and the associated policy are determined. Because the card may provide network transfers and other network operations to multiple servers, identifying the source and policy allows the splitter to determine the target of the written copy and the intended destination of the write.
[0048] The splitter then replicates the write (406) accordingly by sending the write to the intended destination (or allowing the write to complete normally) and transmitting the write based on the source and policy information. In one mode, data is directly copied or sent (408) to the target under the control of the replication controller. In another mode, data or writes are copied or sent (410) to the replication controller, and the replication controller is configured to send or transmit the write to the target.
[0049] The card is typically optimized for network operations and is therefore best suited for distributed writes in either operating mode. Additionally, the transfer and networking of the split operation can be performed without using the computing resources of the server initiating the write. Furthermore, placing the splitter within the card allows the splitter to be aware of all storage entities and distinguish between them.
[0050] Embodiments of the present invention, such as those disclosed herein, can be advantageous in a variety of ways. For example, and as will be apparent from this disclosure, one or more embodiments of the invention can provide one or more advantageous and unexpected effects in any combination, some examples of which are set forth below. It should be noted that such effects are neither intended nor should be construed as limiting the scope of the claimed invention in any way. It should also be noted that the contents of this document should not be construed as constituting a necessary or indispensable element of any invention or embodiment. Rather, various aspects of the disclosed embodiments can be combined in multiple ways to define further embodiments. Such further embodiments are considered to be within the scope of this disclosure. Similarly, embodiments covered within the scope of this disclosure should not be construed as solving or limited to solving any particular problem. Nor should any such embodiments be construed as achieving or limited to achieving any particular technical effect or solution. Finally, it is not required that any embodiment achieve all the advantageous and unexpected effects disclosed herein.
[0051] The following is a discussion of various aspects of example operating environments for different embodiments of the present invention. This discussion is not intended to limit the scope of the invention or the applicability of the embodiments in any way.
[0052] Generally, embodiments of the present invention can be implemented in combination with systems, software, and components that individually and / or collectively implement and / or cause data protection operations. Such operations may include, but are not limited to, data read / write / delete operations, transfer operations, copy operations, data deduplication operations, data backup operations, data recovery operations, data cloning operations, data archiving operations, and disaster recovery operations. More generally, the scope of the present invention includes any operating environment in which the disclosed concepts may be useful.
[0053] At least some embodiments of the present invention provide implementation of the disclosed functionality in existing replication platforms (such as Dell EMC's RecoverPoint and RecoverPoint for VM), as well as in backup platforms (examples of which include Dell-EMC NetWorker and Avamar platforms and associated backup software) and storage environments (such as Dell-EMC DataDomain storage environments). However, in general, the scope of the present invention is not limited to any particular data replication, backup platform, or data storage environment.
[0054] New and / or modified data collected and / or generated in conjunction with certain implementation methods may be stored in a data protection environment, which may take the form of a public or private cloud storage environment, a local storage environment, or a hybrid storage environment including public and private elements. Any of these example storage environments may be partially or fully virtualized. The storage environment may include or consist of data centers operable to serve read, write, delete, backup, restore, and / or clone operations initiated by one or more clients or other elements of the operating environment. Where backups comprise data groups with distinct characteristics, the data may be assigned and stored to distinct targets within the storage environment, each target corresponding to a data group with one or more specific characteristics.
[0055] Example cloud computing environments (which may or may not be public) include storage environments that provide data protection for one or more clients. Another example of a cloud computing environment is one in which processing, data protection, and other services can be performed on behalf of one or more clients. Some example cloud computing environments that may be used in conjunction with embodiments of the present invention include, but are not limited to, Microsoft Azure, Amazon AWS, Dell EMC cloud storage services, and Google Cloud. However, more generally, the scope of the present invention is not limited to cloud computing environments employing any particular type or implementation.
[0056] In addition to the cloud environment, the operating environment may also include one or more clients capable of collecting, modifying, and creating data. Therefore, a particular client may be an instance of one or more of each of one or more applications that perform such operations on the data, or otherwise associated with such instances. Such clients may include physical machines or virtual machines (VMs).
[0057] Specifically, the apparatus in the operating environment can take the form of software, a physical machine, or a VM, or any combination thereof, but no particular implementation requires a specific apparatus implementation or configuration. Similarly, data protection system components, such as databases, storage servers, storage volumes (LUNs), storage disks, replication services, backup servers, recovery servers, backup clients, and recovery clients, can also take the form of software, a physical machine, or a virtual machine (VM), but no particular implementation requires a specific component implementation. In the case of a VM, a hypervisor or other virtual machine monitor (VMM) can be used to create and control the VM. The term VM covers, but is not limited to, any virtualization, emulation, or other representation of one or more computing system elements (such as computing system hardware). A VM can be based on one or more computer architectures and provide the functionality of a physical computer. VM implementations can include hardware and / or software, or at least involve the use of hardware and / or software. For example, a VM image can take the form of a .VMX file and one or more .VMDK files (VM hard disks).
[0058] As used herein, the term “data” is intended to cover a broad range. Therefore, the term is used by way of example and not limitation to include data fragments, data chunks, data blocks, atomic data, emails, any type of object, any type of file (including media files, word processing files, spreadsheet files, and database files), as well as contacts, directories, subdirectories, volumes, and any group of one or more of the foregoing.
[0059] The exemplary embodiments of the present invention are applicable to any system capable of storing and processing various types of objects in analog, digital, or other forms. Although terms such as document, file, fragment, block, or object may be used by way of example, the principles of this disclosure are not limited to any particular form of representing and storing data or other information. Rather, these principles are equally applicable to any object capable of representing information.
[0060] As used herein, the term "backup" is intended to cover a broad range. Therefore, example backups that may be used in conjunction with embodiments of the present invention include, but are not limited to, full backups, partial backups, clones, snapshots, and incremental or differential backups.
[0061] It should be noted that any of the disclosed processes, operations, methods, and / or any part thereof may be executed in response to, as a result of, and / or based on the execution of any prior process, method, and / or operation. Accordingly, the execution of one or more processes may, for example, be the basis or triggering event for the subsequent execution of one or more additional processes, operations, and / or methods. Thus, for example, various processes that may constitute a method may be linked together or otherwise associated with each other through relationships such as those just mentioned in the examples.
[0062] The following are some other exemplary embodiments of the present invention. These are presented by way of example only and are not intended to limit the scope of the invention in any way.
[0063] Implementation 1. A method comprising: receiving a write from a splitter, wherein the splitter is on a network card and integrated with the storage function of the network card, and wherein the splitter is controlled by a replication controller via a control path;
[0064] The process involves determining the source of the write and the strategy associated with the source; replicating the write according to the strategy; and transmitting the write to a target based on the mode of the splitter, and transferring the write to the storage device associated with the source.
[0065] Implementation 2. The method as described in Implementation 1, further comprising: transmitting the write to the target via the replication controller when operating in a first mode, and transmitting the write directly to the target when operating in a second mode.
[0066] Implementation 3. The method as described in Implementation 1 and / or 2, wherein the second mode is associated with a decomposition target such that the data path copied by the decomposer does not pass through the replication controller.
[0067] Implementation 4. The method as described in Implementation 1, 2 and / or 3, further comprising hardcoding the splitter into an ASIC.
[0068] Implementation 5. The method as described in Implementations 1, 2, 3 and / or 4, further comprising programming the separator into an FPGA.
[0069] Implementation 6. The method as described in Implementations 1, 2, 3, 4 and / or 5, wherein the second mode is associated with a plurality of targets, and the method further includes logging at each of the plurality of targets.
[0070] Implementation 7. The method as described in Implementations 1, 2, 3, 4, 5 and / or 6, further comprising controlling the splitter by the replication controller via the control path, wherein controlling the splitter includes one or more of the following: enabling / disabling the functionality of a specific storage target; associating a low-level (network) address of a specific storage target with a high-level storage volume identifier; specifying a network target address for a specific data stream; managing the lifecycle and updates of the splitter; and managing the operation of the splitter at least when a virtual server migrates to a different physical host and the splitter needs to refresh existing data and transfer responsibility to another splitter on another physical host.
[0071] Implementation method 8. Any of the methods or elements thereof as described in any one of implementation methods 1 to 7.
[0072] Implementation 9. A method for performing any or any part of the operations, methods, or processes disclosed herein.
[0073] Implementation 10. A smart network interface card configured to provide network functionality to a source and to a storage device, the card comprising: a transport block including a processor, ASIC, or FPGA configured to perform network transport functionality for the source, the source including a server; a storage block including the processor, ASIC, or FPGA configured to perform storage functionality, wherein the storage block is aware of the storage device and the type of the storage device; and a splitter integrated into the storage block and controlled by a replication controller via a control path, wherein the splitter is configured to replicate writes from the source to at least one target by: receiving the writes from the server; for each of the writes, identifying an associated server in the server and a policy associated with the associated server; replicating the writes to a specific target according to the policy; and transmitting the writes to the target based on a mode of the splitter, and transmitting the writes to the storage device associated with the associated server.
[0074] Implementation 11. The card as described in Implementation 10, wherein the mode is one of a first mode and a second mode, wherein the data path for the first mode includes the replication controller, and wherein the data path for the second mode does not include the replication controller.
[0075] Implementation 12. The card as described in Implementation 10 and / or 11, wherein the second mode is associated with a decomposition target such that the data path associated with the second mode is directly from the separator to at least one of the decomposition targets.
[0076] Implementation 13. The card as described in Implementations 10, 11 and / or 12, wherein the separator is hard-coded into the ASIC or programmed into the FPGA.
[0077] Implementation 14. The card as described in Implementations 10, 11, 12 and / or 13, the card further comprising the splitter controlled by the replication controller via the control path.
[0078] Implementation 15. A non-transitory storage medium storing instructions that can be executed by one or more hardware processors to perform operations including any or more of the operations in Implementations 1 to 9.
[0079] The embodiments disclosed herein may include the use of a dedicated or general-purpose computer, which includes various computer hardware or software modules, as discussed in more detail below. The computer may include a processor and a computer storage medium carrying instructions that, when executed by and / or caused to be executed by the processor, perform one or more of the methods disclosed herein, or any portion thereof.
[0080] As indicated above, embodiments within the scope of this invention also include a computer storage medium, which is a physical medium for carrying or having computer-executable instructions or data structures stored thereon. Such a computer storage medium can be any available physical medium accessible by a general-purpose or special-purpose computer.
[0081] By way of example, and not limitation, such computer storage media may include hardware storage devices such as solid-state drives (SSDs), RAM, ROM, EEPROM, CD-ROM, flash memory, phase-change memory (“PCM”) or other optical disk storage devices, magnetic disk storage devices or other magnetic storage devices, or any other hardware storage device that can be used to store program code in the form of computer-executable instructions or data structures, which can be accessed and executed by a general-purpose or special-purpose computer system to perform the functions disclosed in this invention. Combinations of the above should also be included within the scope of computer storage media. Such media are also examples of non-transitory storage media, and non-transitory storage media also include cloud-based storage systems and structures, but the scope of this invention is not limited to these examples of non-transitory storage media.
[0082] Computer-executable instructions include, for example, instructions and data that, when executed, cause a general-purpose computer, a special-purpose computer, or a special-purpose processing device to perform a particular function or group of functions. Therefore, some embodiments of the present invention may be downloaded, for example, from a website, mesh topology, or other source to one or more systems or devices. Similarly, the scope of the present invention covers any hardware system or device including instances of applications that include the disclosed executable instructions.
[0083] Although the subject matter of the invention has been described in language specific to structural features and / or methodological actions, it should be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or actions described above. Rather, the specific features and actions disclosed herein are disclosed as examples of implementing the claims.
[0084] As used herein, the terms "module" or "component" may refer to a software object or routine that executes on a computing system. The various components, modules, engines, and services described herein may be implemented as objects or processes that execute on a computing system, for example, as separate threads. While the systems and methods described herein may be implemented in software, implementations in hardware or a combination of software and hardware are also possible and contemplated. In this disclosure, a "computing entity" may be any computing system as previously defined herein, or any module or combination of modules running on a computing system.
[0085] In at least some cases, a hardware processor is provided that is operable to perform executable instructions for carrying out methods or processes, such as those disclosed herein. The hardware processor may or may not include elements of other hardware, such as the computing devices and systems disclosed herein.
[0086] Regarding the computing environment, embodiments of the present invention can be executed in a client-server environment (whether network or local) or in any other suitable environment. Suitable operating environments for at least some embodiments of the present invention include cloud computing environments, wherein one or more of the client, server, or other machines can reside in and operate within the cloud environment.
[0087] Any or more of the entities disclosed or implied by this disclosure and / or the accompanying drawings and / or elsewhere herein may take the form of, include, be implemented on, or be hosted by a physical computing device. Similarly, where any of the foregoing elements includes or constitutes a virtual machine (VM), the VM may constitute a virtualization of any combination of the physical components disclosed herein.
[0088] A physical computing device may include memory, one or more hardware processors, non-transitory storage media, a user interface (UI) device, and a data storage device. The memory may include one, some, or all of the following: random access memory (RAM), non-volatile memory (NVM) (e.g., NVRAM), read-only memory (ROM), and persistent memory. One or more of the memory components of the physical computing device may take the form of a solid-state drive (SSD) storage device. Similarly, one or more applications may be provided, comprising instructions executable by one or more hardware processors to perform any or part of the operations disclosed herein.
[0089] Such executable instructions may take various forms, including, for example, instructions executable to perform any of the methods or portions thereof disclosed herein, and / or instructions executable at any of / at any of a storage site (whether enterprise-on-premises or cloud computing site), a client, a data center, a data protection site (including cloud storage sites), or a backup server, to perform any of the functions disclosed herein. Similarly, such instructions may be executable to perform any of the other operations and methods disclosed herein, and any portion thereof.
[0090] This invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments should be considered illustrative rather than restrictive in all respects. Therefore, the scope of the invention is indicated by the appended claims rather than by the foregoing description. All variations falling within the equivalent meaning and scope of the claims should be covered within their scope.
Claims
1. A method for providing network functionality to source and storage devices in a smart network interface card, the method comprising: The write is received by a splitter, wherein the splitter is on the smart network interface card and integrated with the storage function of the smart network interface card, and wherein the splitter is controlled by a replication controller via a control path; Determine the source of the write and the strategy associated with the source; The write is copied according to the strategy described above; as well as The write is transmitted to the target based on the mode of the splitter, and the write is also transmitted to the storage device associated with the source.
2. The method of claim 1, further comprising: When operating in the first mode, the write is transmitted to the target via the replication controller, and when operating in the second mode, the write is transmitted directly to the target.
3. The method of claim 2, wherein the second mode is associated with a decomposition target such that the written data path copied by the decomposer does not pass through the replication controller.
4. The method of claim 1, further comprising hardcoding the separator into an ASIC.
5. The method of claim 1, further comprising programming the separator into an FPGA.
6. The method of claim 2, wherein the second mode is associated with a plurality of targets, and the method further includes logging at each of the plurality of targets.
7. The method of claim 1, further comprising controlling the splitter via the control path by the replication controller, wherein controlling the splitter includes one or more of the following: enabling / disabling the functionality of a specific storage target; associating a low-level network address of a specific storage target with a high-level storage volume identifier; specifying a network target address for a specific data stream; managing the lifecycle and updates of the splitter; and managing the operation of the splitter at least when a virtual server migrates to a different physical host and the splitter needs to refresh existing data and transfer responsibility to another splitter on another physical host.
8. A non-transitory storage medium storing instructions that can be executed by one or more hardware processors to perform the method as described in any one of claims 1 to 7.
9. A smart network interface card configured to provide network functionality to a source and a storage device, the card comprising: A transport block, the transport block including a processor, ASIC or FPGA, the transport block being configured to perform network transport functions for the source, the source including a server; A storage block, including the processor, ASIC, or FPGA, configured to perform storage functions, wherein the storage block is aware of the storage device and the type of the storage device; A splitter, integrated into the storage block and controlled by a replication controller via a control path, wherein the splitter is configured to replicate writes from the source to at least one destination by: Receive the write from the server; For each of the writes, identify the associated server in the server and the policy associated with that associated server; The write operation is copied to a specific target according to the strategy described above; as well as The write is transmitted to the target based on the mode of the splitter, and the write is also transmitted to the storage device associated with the associated server.
10. The card of claim 9, wherein the mode is one of a first mode and a second mode, wherein the data path for the first mode includes the replication controller, and wherein the data path for the second mode does not include the replication controller.
11. The card of claim 10, wherein the second mode is associated with a decomposition target such that the data path associated with the second mode is directly from the separator to at least one of the decomposition targets.
12. The card of claim 10, wherein the separator is hard-coded into the ASIC or programmed into the FPGA.
13. The card of claim 9, further configured to be controlled by the replication controller via the control path of the splitter.