Rapid Data Replication and Storage
By employing a block mapping table to manage block identifiers and automate data block generation, the method efficiently replicates data in cloud storage environments, reducing network bandwidth usage and enhancing data recovery processes.
Patent Information
- Application Number
- JP2023547598
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-03-10
- Filing Date
- 2023-01-10
- Publication Date
- 2025-05-16
- Estimated Expiration
- 2043-01-10
AI Technical Summary
Current data replication methods in cloud-based storage environments consume high network bandwidth and are inefficient, particularly when replicating large volumes of data across different storage systems.
A method and system that utilize a block mapping table to generate and manage block identifiers, allowing for efficient replication of data blocks by sending only block identifiers to backup storage, and automatically generating data blocks from the mapping table.
This approach significantly reduces network bandwidth consumption by transmitting only block identifiers instead of entire data blocks, while ensuring rapid and accurate data replication and recovery.
Smart Images

Figure 0007678886000001 
Figure 0007678886000002 
Figure 0007678886000003
Abstract
Description
[Technical field]
[0001] Aspects of the present invention relate generally to data storage, and more particularly, to data replication. [Background technology]
[0002] Millions of blocks of data are stored in the cloud every day using data storage. Block storage breaks up data files into data blocks and then stores those data blocks separately in a cloud-based storage environment. The data blocks can then be spread across different storage systems and stored wherever is most efficient.
[0003] Block storage is often used for workloads that require network-based and low-latency storage operations. Examples include databases, virtual machines, containers, Hadoop nodes, and web services. Disaster recovery for these workloads typically involves replicating data from primary storage to backup storage. Terabytes of data may be replicated across regions, consuming high network bandwidth. Summary of the Invention
[0004] In a first aspect of the invention, a computing device generates a block-sized plurality of binary combinations of data. of Multiple Block Identifiers Associate with Creating a mapping and multiple binary combinations of data of a block size of Multiple Block Identifiers Associate withgenerating, by the computing device from the mapping, a list of block identifiers representing the list of data blocks in the storage; transmitting, by the computing device, the list of block identifiers to a backup storage in the cloud-based storage environment to replicate the list of data blocks in the storage; and storing, on the computer-readable storage medium, a plurality of binary combinations of data of the block size. of Multiple Block Identifiers Associate with and storing the mapping and a list of block identifiers in storage.
[0005] In another aspect of the invention, there is a computer program product including one or more computer readable storage media having program instructions collectively stored on the one or more computer readable storage media, the program instructions including: receiving, by a computing device, a block identifier for a copy of a block of data; and receiving, by the computing device, a plurality of binary combinations of data for a block size. of Multiple Block Identifiers Associate with identifying, by the computing device, a block identifier within the mapping; Data Block It is feasible to store on a computer readable storage medium the block identifiers in the list of block identifiers for the replica of the list of.
[0006] In another aspect of the invention, a system includes a processor, a computer readable memory, one or more computer readable storage media, and program instructions collectively stored on the one or more computer readable storage media, the program instructions configuring the processor to generate a plurality of binary combinations of a block-sized amount of data. of Multiple Block Identifiers Associate with Creating a mapping and multiple binary combinations of data of a block size of Multiple Block Identifiers Associate withgenerating, by the processor, from the mapping, a list of block identifiers representing the list of data blocks in the storage; transmitting, by the processor, the list of block identifiers to a backup storage in the cloud-based storage environment to replicate the list of data blocks in the storage; and storing, on the computer-readable storage medium, a plurality of binary combinations of data of the block size. of Multiple Block Identifiers Associate with Storing the mapping and the list of block identifiers in storage is feasible. [Brief description of the drawings]
[0007] Aspects of the present invention will be described in the following detailed description with reference to a number of drawings which are noted as non-limiting examples of illustrative embodiments of the invention.
[0008] [Figure 1] 1 illustrates a cloud computing node according to an embodiment of the present invention. [Diagram 2] 1 illustrates a cloud computing environment in accordance with an embodiment of the invention. [Diagram 3] 3 illustrates an abstract model layer in accordance with an aspect of the invention. [Figure 4] 1 shows a block diagram of an exemplary environment in accordance with an aspect of the invention. [Diagram 5] 4 illustrates an exemplary data structure in accordance with an aspect of the invention. [Figure 6] 4 illustrates an exemplary data structure in accordance with an aspect of the invention. [Figure 7] 1 shows a flow chart of an exemplary method according to an aspect of the invention. [Figure 8] 1 shows a flow chart of an exemplary method according to an aspect of the invention. [Figure 9] 1 shows a flow chart of an exemplary method according to an aspect of the invention. [Figure 10] 1 shows an exemplary circuit diagram in accordance with an aspect of the invention. [Figure 11] 1 shows a flow chart of an exemplary method according to an aspect of the invention. [Figure 12] 1 shows a flow chart of an exemplary method according to an aspect of the invention. [Figure 13] 1 shows a block diagram of an exemplary environment in accordance with an aspect of the invention. [Figure 14] 1 shows a flow chart of an exemplary method according to an aspect of the invention. [Figure 15] 1 illustrates an exemplary architecture in an exemplary cloud computing environment in accordance with an aspect of the invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0009] Aspects of the present invention relate generally to data storage and, more particularly, to data replication. In particular, aspects of the invention relate to methods and systems for rapid data replication and storage between machines and clouds using a sort-and-merge method and mapping techniques to provide universally unique identifiers (UUIDs) for data based on a given block number, e.g., with a block size of 512 bytes. For example, the methods, systems, and program products described herein restore a list of data blocks in a primary storage device by obtaining a list of block identifiers from a backup storage device and automatically generating data blocks for each of the block identifiers from a block mapping table.
[0010] According to an aspect of the invention, the method, system, and program product described herein creates a block mapping table that associates block identifiers with binary combinations of data to replicate a list of data blocks in a primary storage device. In an embodiment, the method, system, and program product described herein receives a list of data blocks in a primary storage device, uses the block mapping table to generate a list of block identifiers from the list of data blocks, and transmits the list of block identifiers to a backup storage device for replicating the list of data blocks. Each of the generated block identifiers of the data blocks is stored in the block mapping table with the block data. In this manner, an implementation of the invention can replicate the list of data blocks by transmitting the block identifiers and can automatically generate data blocks for each of the block identifiers from the block mapping table. Using the block mapping table enables transmitting the updated block identifiers to the backup storage device to update the block identifiers of the updated replicated data blocks to replace the block identifiers of these replicated data blocks.
[0011] Aspects of the present invention are directed to improvements in computer readable data processing techniques. In an embodiment, a system includes a processor, a computer readable memory, one or more computer readable storage media, and a block size of a plurality of binary combinations of data. of Multiple Block Identifiers Associate with Create a mapping and multiple binary combinations of data of a block size of Multiple Block Identifiers Associate with generating a list of block identifiers representing the list of data blocks in the storage from the mapping, transmitting the list of block identifiers to a backup storage to replicate the list of data blocks in the storage, and replicating, on the computer readable storage medium, a plurality of binary combinations of data of a block size; ofMultiple Block Identifiers Associate with The present invention includes program instructions collectively stored on one or more computer readable storage media that can store the list of block identifiers in the mapping and storage. Thus, the implementation of the invention can replicate the list of data blocks by transmitting the block identifiers and automatically generate data blocks from the block mapping table for each of the block identifiers. Specifically, the present invention provides an improvement in the manner in which a computer can perform the operations of replicating and storing data.
[0012] Additional aspects of the implementation of the invention result in further non-abstract improvements in computer technology, such as a computer program product including one or more computer readable storage media having program instructions collectively stored on the one or more computer readable storage media, which may include, among other significant and non-trivial technical improvements, a computer program product for receiving, by a computing device, a block identifier for replicating a block of data, and for transmitting, by the computing device, a plurality of binary combinations of data of a block size. of Multiple Block Identifiers Associate with identifying, by the computing device, a block identifier within the mapping; Data Block The block identifiers in the list of block identifiers for the replicas of the list of may be stored on a computer readable storage medium. Implementations of the invention describe additional elements that provide concrete improvements in the way a computer can operate, and these additional elements provide non-abstract improvements in the functionality and capabilities of the computer.
[0013] It should be noted that the scope of practice of the invention involves the collection, storage, or employment of personal information provided by or obtained from individuals, and such information is used in accordance with applicable laws regarding the protection of personal information. In addition, the collection, storage, and use of such information may be subject to the individual's consent to such activities, for example, through an "opt-in" or "opt-out" process, as may be appropriate for the situation and type of information. The storage and use of personal information is suitably done in a secure manner that reflects the type of information, for example, through various encryption and anonymization techniques for sensitive information.
[0014] Aspects of the invention may be a system, method, or computer program product, or combinations thereof, at any level of technical detail. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions thereon that cause a processor to execute aspects of the invention.
[0015] The computer readable storage medium may be any tangible device capable of holding and storing instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. A non-exhaustive list of more specific examples of computer readable storage media includes portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanically encoded devices such as punch cards or raised structures in grooves having instructions recorded thereon, and any suitable combination thereof. As used herein, a computer-readable storage medium should not be construed as being, itself, a ephemeral signal, such as an electric wave or other freely propagating electromagnetic wave, or an electromagnetic wave propagating in a waveguide or other transmission body (e.g., light pulses traveling in a fiber optic cable), or an electrical signal transmitted through an electrical wire.
[0016] The computer readable program instructions described herein may be downloaded from a computer readable storage medium into each corresponding computing / processing device, or may be downloaded to an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may include copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer readable program instructions from the network and transfers the computer readable program instructions to a computer readable storage medium in each corresponding computing / processing device for storage.
[0017] The computer readable program instructions for carrying out the operations of the present invention may be assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, or configuration data for an integrated circuit, or may be source or object code written in any combination of one or more programming languages, including object oriented programming languages such as Smalltalk, C++, and procedural programming languages such as the "C" programming language or the like. The computer readable program instructions may be executed entirely on the user's computer, partially on the user's computer, as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the last scenario above, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or wide area network (WAN), or the connection may be made to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may execute the computer readable program instructions to carry out aspects of the invention by utilizing state information of the computer readable program instructions to personalize the electronic circuitry.
[0018] Aspects of the invention described herein have been described with reference to flowchart instructions and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that any combination of flowchart illustrations and / or block diagrams and blocks in flowchart illustrations and / or block diagrams can be implemented by computer readable program instructions.
[0019] These computer readable program instructions can be provided to a processor of a computer or other programmable data processing device to generate a machine, which when executed by the processor of the computer or other programmable data processing device generates means for implementing the functions / operations specified in the block or blocks of the flowcharts and block diagrams, or combinations thereof. These computer readable program instructions that direct the computers, programmable data processing devices, and other devices, or combinations thereof, to function in a particular manner can also be stored on a computer readable recording medium, such that the computer readable recording medium having instructions stored therein constitutes an article of manufacture including instructions that implement the functional / operational features specified in the block or blocks of the flowcharts and block diagrams, or combinations thereof.
[0020] The computer readable program instructions can also be loaded onto a computer, other programmable data processing apparatus, or other device and cause a computer-implemented process to execute a series of operational steps on the computer, other programmable apparatus, or other device to implement the functions / acts specified in a block or blocks of the flowcharts and block diagrams, or a combination thereof, on the computer, other programmable apparatus, or other device.
[0021] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block of the flowchart or block diagram represents a module, segment, or portion of an instruction, which includes one or more executable instructions for implementing a particular logical function(s). In some alternative implementations, the functions described in the blocks may occur out of the order described in the figures. For example, two blocks shown in succession may be accomplished as one step, or may be executed simultaneously, substantially simultaneously, in a partially or fully overlapped manner, or the blocks may be executed in reverse order, depending on the functionality involved. It should also be noted that each of the block diagrams and / or flowchart illustrations and combinations thereof may be implemented by a system based on special purpose hardware that performs a particular function or operation or executes specific purpose hardware and computer instructions.
[0022] Although this disclosure includes detailed descriptions of cloud computing, it should be understood that implementations of the teachings described herein are not limited to cloud computing environments, and embodiments of the invention may be implemented in any other type of computing environment now known or later developed.
[0023] Cloud computing is a service delivery model that enables convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with the provider of the service. The cloud model can include at least five characteristics, at least three service models, and at least four deployment models.
[0024] Its features are as follows:
[0025] On-Demand Self-Service: Cloud consumers can automatically and unilaterally receive provision of computing capacity, such as server time and network storage, as needed without the need for human interaction with the provider of this service.
[0026] Broad Network Access: Capabilities are available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (eg, mobile phones, laptops and PDAs).
[0027] Resource pooling: To serve a large number of consumers using a multi-tenant model, a provider's computing resources are pooled, and different physical and virtual resources are dynamically allocated and reallocated on demand. Consumers generally have no control over or knowledge of the exact location of the provided resources, but there is a sense of location independence in the sense that they can specify the location at a higher level of abstraction (e.g. country, state, or data center).
[0028] Rapid elasticity: Features can be provisioned quickly and elastically, sometimes automatically, to scale out quickly, and can be released quickly to scale in quickly. To the consumer, the features available for provisioning often appear infinite, and they can buy as much or as little as they want, at any time.
[0029] Measured service: Cloud systems automatically control and optimize resource usage by intervening in metering at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and user accounts in use). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services being utilized.
[0030] The service model is as follows:
[0031] Software as a Service (SaaS): This functionality offered to a consumer is the ability to use a provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through thin-client interfaces such as web browsers (e.g. web-based email). Except for possibly limited user-specific application configuration settings, the consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or individual application functions.
[0032] Platform as a Service (PaaS): This capability offered to consumers is the ability to deploy consumer-created or acquired applications written using provider-supported programming languages and tools on a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does have control over the deployed applications and possibly the application hosting environment configuration.
[0033] Infrastructure as a Service (IaaS): This facility provided to consumers supplies processing, storage, network and other basic computing resources on which the consumer can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but does have control over the operating systems, storage and deployed applications, and in some cases, limited control over selected network components (e.g., host firewalls).
[0034] The deployment models are:
[0035] Private Cloud: The cloud infrastructure is operated solely for an organization. The infrastructure can be managed by the organization or a third party and can exist on-premises or off-premises.
[0036] Community Cloud: The cloud infrastructure is shared by several organizations to support a specific community with shared interests (e.g., mission, security requirements, policies and compliance concerns). The infrastructure can be managed by the organizations or a third party and can exist on-premise or off-premise.
[0037] Public Cloud: The cloud infrastructure is available to the general public or large industry groups and is owned by an organization that sells cloud services.
[0038] Hybrid Cloud: This cloud infrastructure is a composite of two or more clouds (private, community or public) that maintain their own distinct entities but are joined together by standardized or proprietary technologies that allow data and application portability (e.g. cloud bursting for load balancing between clouds).
[0039] A cloud computing environment is a service-oriented environment that emphasizes statelessness, low coupling, modularity and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.
[0040] 1, an example cloud computing node is shown generally. Cloud computing node 10 is merely one example of a suitable cloud computing node and is not intended to suggest any limitation as to the scope of use or functionality of the inventive embodiments described herein. Nevertheless, cloud computing node 10 is capable of implementing and / or performing any of the functionality described above.
[0041] Cloud computing node 10 includes computer system / server 12, which is operable with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, or configurations, or combinations thereof, that may be suitable for use with computer system / server 12 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable appliances, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices.
[0042] The computer system / server 12 may be described in the general context of computer system executable instructions, such as program modules, executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types. The computer system / server 12 may be implemented in a distributed cloud computing environment where tasks are performed by remote processing devices linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media, including memory storage devices.
[0043] 1, computer system / server 12 in cloud computing node 10 is shown in the form of a general purpose computing device. Components of computer system / server 12 may include, but are not limited to, one or more processors or processing units 16, a system memory 28, and a bus 18 coupling various system components including system memory 28 to processor 16.
[0044] Bus 18 represents any one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, a high-speed graphics port, and a processor or local bus using any of a variety of bus architectures, including, by way of example and not limitation, an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect (PCI) bus.
[0045] Computer system / server 12 typically includes a variety of computer system readable media. Such media may be any available media that can be accessed by computer system / server 12 and includes both volatile and nonvolatile media, removable and non-removable media.
[0046] The system memory 28 may include computer system readable media in the form of volatile memory, such as random access memory (RAM) 30 and / or cache memory 32. The computer system / server 12 may further include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, a storage system 34 may be provided for reading from and writing to a non-removable non-volatile magnetic medium (not shown, and typically referred to as a "hard drive"). Although not shown, a magnetic disk drive may be provided for reading from and writing to a removable non-volatile magnetic disk (e.g., a "floppy disk"), and an optical disk drive may be provided for reading from or writing to a removable non-volatile optical disk, such as a CD-ROM, DVD-ROM, or other optical media. In such instances, each may be connected to the bus 18 by one or more data media interfaces. As further shown and described below, the system memory 28 may include at least one program product having a set (e.g., at least one) of program modules configured to perform the functions of an embodiment of the present invention.
[0047] A program / utility 40 having a set (at least one) of program modules 42 may be stored in the system memory 28, as well as, by way of example and not limitation, an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data, or any combination thereof, may include implementing a networking environment. The program modules 42 generally perform the functions and / or methodologies of embodiments of the present invention described herein.
[0048] The computer system / server 12 may also communicate with one or more external devices 14, such as a keyboard, pointing device, display 24, one or more devices that allow a user to interact with the computer system / server 12, or any device that allows the computer system / server 12 to communicate with one or more other computing devices (e.g., network cards, modems, etc.), or combinations thereof. Such communication may occur through an input / output (I / O) interface 22. Additionally, the computer system / server 12 may communicate with one or more networks, such as a local area network (LAN), a general wide area network (WAN), or a public network (e.g., the Internet), or combinations thereof, through a network adapter 20. As shown, the network adapter 20 communicates with other components of the computer system / server 12 through a bus 18. Although not shown, it should be understood that other hardware and / or software components may be used in conjunction with the computer system / server 12. Examples include, but are not limited to, microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archive storage systems.
[0049] 2, an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 20, with which local computing devices used by cloud consumers, such as a personal digital assistant (PDA) or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, or an automobile computer system 54N, or combinations thereof, can communicate. The nodes 10 can communicate with each other. The nodes may be physically or virtually grouped into one or more networks, such as a private, community, public, or hybrid cloud, or combinations thereof, as described above (not shown). This enables the cloud computing environment 50 to provide infrastructure, platform, or software, or combinations thereof, as a service, so that cloud consumers do not need to maintain resources on their local computing devices. It will be understood that the types of computing devices 54A-N illustrated in FIG. 2 are intended to be examples only, and that the computing nodes 10 and cloud computing environment 50 can communicate with any type of computerized device over any type of network or addressable network connection, or both (e.g., using a web browser).
[0050] Referring now to Figure 3, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 2) is shown. It should be understood in advance that the components, layers and functions shown in Figure 3 are intended to be examples only, and embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0051] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframes 61, RISC (reduced instruction set computer) architecture based servers 62, servers 63, blade servers 64, storage devices 65, and networks and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0052] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75.
[0053] In one example, the management layer 80 may provide the following functions: Resource Provisioning 81 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and Pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and charging or billing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification of cloud consumers and tasks and protection of data and other resources. User Portal 83 provides access to the cloud computing environment for consumers and system administrators. Service Level Management 84 provides allocation and management of cloud computing resources such that required service levels are achieved. Service Level Agreement (SLA) Planning and Fulfillment 85 provides proactive coordination and procurement of cloud computing resources anticipated to be needed in the future by SLAs.
[0054] The workload tier 90 provides examples of functions that can utilize a cloud computing environment. Examples of workloads and functions that can be provided from this tier include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instructional delivery 93, data analytics processing 94, transaction processing 95, and rapid data replication processing 96.
[0055] Implementations of the invention may include computer system / server 12 of Figure 1 with one or more program modules 42 configured to perform (or cause computer system / server 12 to perform) one or more functions of rapid data replication process 96 of Figure 3. For example, one or more program modules 42 may be configured to create a block mapping table that associates block identifiers having binary combinations of data to replicate a list of data blocks in primary storage, receive the list of data blocks in primary storage, use the block mapping table to generate a list of block identifiers from the list of data blocks, and send the list of block identifiers to backup storage for replicating the list of data blocks.
[0056] FIG. 4 illustrates a block diagram of an exemplary environment in accordance with an aspect of the invention. In an embodiment, the environment includes a server 400, which may be a computer system such as computer system 12 described with respect to FIG. 1, and a server memory 402, such as memory 28 described with respect to FIG. 1. In general, the server 400 provides services required for data storage, data replication, and data recovery. The server 400 includes a rapid replication module 404 having the functionality to create a block mapping table in the memory 402 that associates block identifiers with binary combinations of data, receive a list of data blocks in the primary storage, generate a list of block identifiers from the list of data blocks using the block mapping table, and send the list of block identifiers to a backup storage for replicating the list of data blocks. The rapid replication module 404 may have the functionality to update block identifiers of the updated replicated data blocks and send the updated block identifiers to the backup storage to replace the block identifiers of these replicated data blocks. The rapid replication module 404 may be capable of restoring the list of data blocks in the primary storage by obtaining a list of block identifiers from the backup storage and automatically generating data blocks for each of the block identifiers from a block mapping table.
[0057] In an embodiment, the rapid replication module 404 includes one or more program modules, such as program module 42 described with respect to FIG. 1. The server 400 may include additional or fewer modules than those shown in FIG. 4. In an embodiment, separate modules may be combined into a single module. Additionally or alternatively, a single module may be implemented as multiple modules. Furthermore, the devices and / or networks in the environment are not limited to those shown in FIG. 4. In implementations, the environment may include additional devices or networks or both, fewer devices or networks or both, different devices or networks or both, or devices or networks or both arranged differently than shown in FIG. 4.
[0058] According to an aspect of the invention, the server 400 also includes server storage 406 in memory 402, which may be computer storage such as system storage 34 described with respect to FIG. 1. In an embodiment, the server storage 406 stores information for mapping block identifiers with block data in a block storage mapping table 408, and stores files 410, which may each be divided into equal-sized data blocks in the block storage. For example, the file 410 may be divided into data blocks of a fixed size of 512 bytes. In this case, the block storage mapping table 408 may store associations of block identifiers with data blocks representing 4096-bit binary combinations. Those skilled in the art should understand that other fixed-sized data blocks, such as 128-byte data blocks, 256-byte data blocks, etc., may be used in the embodiments.
[0059] 5 illustrates an exemplary data structure for creating a block storage mapping table for fixed size data blocks of 512 bytes. For example, FIG. 5 illustrates block storage mapping table 408 represented as a table implemented as an associative array, which represents the 2× powers of 2 for a given exponent. n From 2 n The buckets of a linked list node, such as linked list node 504, which stores block identifiers stored in descending order, such as block identifier 506, and block data, such as block data 508, for a 512-byte binary combination up to -1, are indexed by powers of two exponentiation. As shown in FIG. 5, elements 502 of the associative array are n The linked list stores integers between 0 and 4095 representing buckets, where n is the number of bits in a fixed size data block of 512 bytes. Each linked list node is associated with a block identifier whose block data belongs to a bucket of a given exponent of two.
[0060] The first list node linked to each of the buckets of a given exponent of a power of two has a base 2 binary value at the given exponent of a power of two for indexing the bucket assigned to that first linked list node. For example, linked list node 504 has a base 2 05 is shown with block data 508 assigned a value of 00000001, the lowest 8 bits of the 512 bytes of the binary value of 00000001. FIG. 5 shows only the lowest 8 bits of the 512 byte data block for simplicity of illustration. A first list node linked to each of the buckets of a given exponent of a power of two has a block identifier assigned a universally unique identifier (UUID) value with the decimal value of the given exponent of a power of two appended to index the bucket. For example, linked list node 504 is shown with block identifier 506 assigned a value UUID01. In this manner, a first linked list node can be initialized for each array element in the embodiment shown in FIG. 5.
[0061] Those skilled in the art should appreciate that other values may be assigned as unique block identifiers in embodiments. For example, in an embodiment, an initial UUID with a date and timestamp may be generated and assigned the lowest binary value of 00000000. This UUID is incremented by microseconds for each subsequent UUID assigned the next sequential number of the 512-byte binary combination block data. For example, the initial UUID with a date and timestamp may be incremented by 1 microsecond and assigned the lowest binary value of 00000000. 0The lowest 8 bits of the 512-byte binary value of 00000001 are assigned as the UUID to the initial linked list node 506. In this manner, each UUID is appropriately assigned such that block identifiers are assigned in ascending order by date and timestamp increments of 1 microsecond, with a one-to-one correspondence to each block data of the 512-byte binary combination of ascending binary values. An example of such an assignment could be that 2022-01-06 08:46:31 has a UUID of block data 00000000, 2022-01-06 08:46:32 has a UUID of block data 00000001, and 2022-01-06 08:46:33 has a UUID of block data 00000010, where the 08:46:31 timestamp is incremented by microseconds to 08:46:32, then 08:46:33 for each subsequent UUID that is assigned the next sequentially numbered block data of the 512-byte binary combination.
[0062] Additionally, block data can be added to the binary storage mapping 408 initialized as shown in FIG. 5 by inserting linked list nodes for any other binary combinations of 512 byte data blocks and assigning corresponding block identifiers that maintain a one-to-one correspondence, from lowest to highest value, of the block identifiers assigned to the binary block data values arranged in ascending sequential order.
[0063] Figure 6 shows a fixed size of 512 bytes. Data Block5 shows a list of data blocks that are added to the exemplary data structure shown in FIG. 5 to create a block storage mapping table of 12 byte data blocks. For example, consider the following list of 512 byte data blocks with these low order 8 bit values: 00001110, 00111101, 00001011, 00100100, 00101111, and 00000110. The first data block in the list, 00001110, is inserted into the block storage mapping table 408 by calculating the exponent of the power of two that has the closest lower binary value (i.e., 8) than the binary value of the data block whose exponent is 3 (i.e., 14). 6 is inserted with block data assigned a binary value of 00001110 into the linked list of nodes by indexing the array element having a value of 3, traversing the linked list of nodes in the bucket of the array element, and inserting the node in the linked list of nodes in ascending binary value order. A block identifier for node 606 can be assigned to the node by incrementing the block identifier value of the first node in the linked list of nodes in that bucket of the array element by the difference between the value of the block data of the inserted node (i.e., 14) and the value of the block data of the first node (i.e., 8). Thus, node 606 is assigned a block identifier of UUID 14 as shown. In this same manner, nodes 612, 604, 608, 610 and 602 are sequentially inserted into block storage mapping table 408 with their respective 512 byte block data values having the lowest 8 bits of 00111101, 00001011, 00100100, 00101111 and 00000110. Thus, the block storage mapping table can create associated block identifiers with binary combinations of data and generate block identifiers for data blocks.
[0064] 7-9, 11-12 and 14-15 show flowcharts and / or block diagrams illustrating the architecture, functionality and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. As mentioned above, each block may represent a module, segment or a portion of instructions including one or more executable instructions for implementing a particular logical function. The functions mentioned in the blocks may be performed out of order depending on the functions involved, and two blocks shown in succession may in fact be accomplished as one step and may be performed simultaneously, substantially simultaneously, or in a partially or fully overlapping manner in time, or the blocks may sometimes be performed in reverse order. And, depending on the functions involved, some blocks shown may be performed and other blocks may not be performed.
[0065] 7 shows a flow chart of an exemplary method according to an embodiment of the present invention. The steps of the method may be performed in the environment of FIG. 4 and will be described with reference to the elements shown in FIG.
[0066] In step 702, the system creates a block storage mapping table that associates block identifiers with binary combinations of data, Data Block In an implementation with fixed size data blocks of 512 bytes, the block storage mapping table can store the association of the block identifier with the data block representing a 4096-bit binary combination. In an embodiment, the rapid replication module 404 as shown in FIG. 4 creates and stores the block storage mapping table 408 in the server storage 406.
[0067] In step 704, the system generates a list of block identifiers from the block storage mapping table, which represents the list of data blocks. The list of data blocks may represent, for example, a file divided into equal sized data blocks in block storage. In an embodiment, the file 410 shown in FIG. 4 may be divided into fixed size data blocks of 512 bytes, and then the rapid replication module 404 may generate a list of block identifiers from the block storage mapping table 408, which represents the list of data blocks. The list of block identifiers UUID14, UUID61, UUID11, UUID36, UUID47, UUID06 may be generated from the block storage mapping table 408 shown in FIG. 6, which represent 512 byte data blocks having the lowest 8 bits of 00001110, 00111101, 00001011, 00100100, 00101111, and 00000110.
[0068] In step 706, the system can store a list of block identifiers representing a list of data blocks instead of the list data blocks. For example, a list of block identifiers UUID14, UUID61, UUID11, UUID36, UUID47, UUID06 can be stored to represent 512 byte data blocks having the lowest 8 bits of 0001110, 00111101, 00001011, 00100100, 00101111, and 00000110. In an embodiment, the expedited replication module 404 as shown in FIG. 4 can store a list of block identifiers representing a list of data blocks.
[0069] In step 708, the system updates the data blocks in the list of data blocks by updating the corresponding block identifiers in the list of block identifiers. The update replaces the lower 8 bits of 00001011, 0001110, 00111101, 00001011, 00100100, 00101111 and 00000110 with 512 byte data blocks having the lower 8 bits of 10000020, resulting in a list of 512 byte data blocks having the lower 8 bits of 0001110, 00111101, 10000020, 00100100, 00101111 and 00000110, 0001110, 00111101, 00001011, Consider updating the list of 512-byte data blocks having the lowest 8 bits of 00100100, 00101111, and 00000110, the list of block identifiers UUID14, UUID61, UUID11, UUID36, UUID47, UUID06 is updated by replacing block identifier UUID11 with UUID130, resulting in an updated list of block identifiers UUID14, UUID61, UUID130, UUID36, UUID47, UUID06. In an embodiment, the expedited replication module 404 as shown in FIG. 4 may update a data block in the list of data blocks by updating the corresponding block identifier in the list of block identifiers.
[0070] In step 710, the system replicates the list of data blocks in the primary storage by storing the list of block identifiers in the recovery storage. For example, a list of block identifiers UUID14, UUID61, UUID11, UUID36, UUID47, and UUID06 may be sent to and stored in the recovery storage representing a list of 512-byte data blocks having the lowest 8 bits of 001110, 00111101, 00001011, 00100100, 00101111, and 00000110. In an embodiment, the expedited replication module 404 as shown in FIG. 4 may transmit the list of block identifiers representing the list of data blocks to the recovery storage. Those skilled in the art should appreciate the significant reduction in data transmission in the cloud by transmitting the list of block identifiers to the recovery storage instead of the list of data blocks, especially for large data blocks.
[0071] In step 712, the system restores the list of data blocks in primary storage from the list of block identifiers. For example, a list of block identifiers UUID14, UUID61, UUID11, UUID36, UUID47, UUID06, which represent a list of data blocks from a file divided into data blocks in block storage, can be obtained from recovery storage when a file needs to be restored, and each block identifier can be used to obtain block data from the block storage mapping table and build a list of data blocks to restore the file. In an embodiment, the rapid replication module 404 as shown in FIG. 4 restores the list of data blocks in primary storage from the list of block identifiers in recovery storage. The block identifier can be used to retrieve block data from the block storage mapping table 408 in FIG. 4 by computing the exponent of the power of two that has the closest lower value to the appended decimal value of the block identifier, indexing the array element with the value of the exponent, traversing the linked list of nodes in the array element's bucket to locate the node with the block identifier, and retrieving the block data assigned to that node with the block identifier.
[0072] Figure 8 illustrates a flowchart of an exemplary method according to an embodiment of the present invention. The steps of the method may be performed in the environment of Figure 4 and are described with reference to elements shown in Figures 4 and 5. In particular, the flowchart of Figure 8 illustrates an exemplary method for creating the block storage mapping table 408 shown in Figures 4 and 5.
[0073] In step 802, the system creates the table as an ordered associative array indexed by an exponentiation of a power of two with the number of array elements equal to the number of bits in the data block. nIn one embodiment, the block storage mapping table 408 may store integers from 0 to 4095, where n is the number of bits in a fixed size data block of 512 bytes. In one embodiment, the expedited replication module 404 as shown in Figure 4 creates a block storage mapping table 408 as an ordered associative array of elements 504 as shown in Figure 5, which store integers from 0 to 4095 that are used to index by powers of two exponentiation.
[0074] In step 804, the system adds a linked list node to each array element to store the block data and the block identifier in the block data. Each linked list node is associated with a block identifier whose block data belongs to a bucket of a given exponent of powers of 2. In an embodiment, the rapid replication module 404 as shown in FIG. 4 adds a linked list node 506 to each array element 504 as shown in FIG. 5 to store the block data and the block identifier in the block data.
[0075] In step 806, the system assigns to each array element a binary value that is a power of two that is used to index the array element for the block data of the first linked node of each array element. For example, linked list node 504 is assigned a power of two binary value. 0 5 having the 512 byte block of data 508 assigned a value of 00000001 in the lowest 8 bits of the binary value of 00000001. Note that for simplicity of illustration, FIG. 5 shows only the value of the lowest 8 bits of the 512 byte data block. In an embodiment, the expedited replication module 404 as shown in FIG. 4 assigns a power of 2 binary value that is used to index the linked node's array elements for each linked node's block of data.
[0076] In step 808, the system assigns a unique block identifier to each linked node. For example, the first linked node in each bucket of a given power of two exponent has a block identifier assigned in the embodiment shown in FIG. 5, where the universally unique identifier (UUID) is the decimal value of the power of two exponent appended to index that bucket. For example, linked list node 504 is shown in FIG. 5 having a block identifier assigned the value UUID01. In an alternative embodiment, an initial UUID with a date and time stamp is generated, such as 06 January 2022 08:46:31, and assigned the lowest binary value of 00000000. This UUID is incremented by microseconds for each subsequent UUID assigned to the next sequential block data of the 512-byte binary combination. For example, an initial UUID having a date and timestamp of 06 Jan 2022 08:46:31 may be assigned to the initial linked list node 506 with a block data value of 00000001 incremented by 1 microsecond, such as 06 Jan 2022 08:46:32, as the block identifier. Each subsequent UUID may be appropriately assigned such that the block identifiers are arranged in ascending order by date and timestamp incremented by 1 microsecond, with a one-to-one correspondence with each of the 512-byte binary combinations of block data arranged in ascending order by binary value. The expedited replication module 404 as shown in FIG. 4, in an embodiment, assigns a unique block identifier to each linked node.
[0077] Then, in step 810, the system saves the table in the server storage. After allocating the block identifiers and block data of the linked first list nodes of each array element, the table is initialized to generate block identifiers for the data blocks, update the data blocks in the list of data blocks by updating the corresponding block identifiers in the block identifiers, replicate the list of data blocks in the primary storage as a list of block identifiers in the recovery storage, and can be used to restore the list of data blocks in the primary storage from the list of block identifiers in the recovery storage. In an embodiment, the rapid replication module 404 shown in FIG. 4 saves the table in the server storage.
[0078] Those skilled in the art will appreciate that in embodiments for mapping block identifiers to binary combinations of block data, other data structures may be created and used to generate block identifiers for data blocks using a sorting-combination method and universally unique identifiers (UUIDs). For example, other data structures may be used to distribute block data evenly in a list of buckets, such as a list of linked nodes that maintain a one-to-one correspondence from low to high block identifier values, with the binary block data values being assigned in consecutive ascending order. Additionally, in embodiments for mapping block identifiers to binary combinations of data blocks of different fixed sizes, such as 128-byte data blocks, 256-byte data blocks, etc., other data structures may be created.
[0079] Figure 9 illustrates a flowchart of an exemplary method in accordance with an aspect of the present invention. The method steps may be performed in the environment of Figure 4 and are described with reference to elements shown in Figures 4-6. In particular, the flowchart of Figure 9 illustrates an exemplary method for generating block identifiers for data blocks using the block storage mapping table 408 shown in Figures 4-6.
[0080] In step 902, the system receives a list of data blocks in block storage. For example, a list of 512 byte data blocks having values 00001110, 00111101, 00001011, 00100100, 00101111 and 00000110 in their low-order 8 bits may represent a file 410 shown in Figure 4 that is divided into fixed size data blocks of 512 bytes. In an embodiment, the rapid replication module 404 shown in Figure 4 may receive the list of data blocks in block storage.
[0081] In step 904, the system finds the exponent of the power of two used to index the table of each data block. For example, the exponent of the power of two used to index the table of the first data block in the list, 00001110, is found by calculating the exponent of the power of two having the nearest lower binary value (i.e., 8) than the binary value of the data block (i.e., 14), whose exponent is 3. In turn, the exponents of the power of two used to index the tables of each of the remaining data blocks, 00111101, 00001011, 00100100, 00101111, and 00000110, are similarly found by calculating the exponent of the power of two having the nearest lower binary value (i.e., 5, 3, 5, 5, and 2, respectively) to the binary value of the data block (i.e., 61, 11, 36, 47, and 6, respectively). In an embodiment, the expedited replication module 404 shown in FIG. 4 may find the power of two exponent used to index the table for each data block.
[0082] In step 906, the system generates a unique block identifier for each of the data blocks. The block identifier for the data block can be generated by indexing the table by exponentiation of a power of two with the lowest binary value closest to the binary value of the data block, and incrementing the identifier value of the first node in the linked list of nodes in the bucket of the table by the difference between the value of the data block and the block data of the first node. For example, the node 606 shown in FIG. 6 is assigned a block identifier of UUID14 in the linked list of nodes in the bucket of the array element by incrementing the block identifier value UUID08 of the first node by the difference between the value of the data block (i.e., 14) and the data block value of the first node (i.e., 8). In this manner, in an embodiment, the rapid replication module 404 shown in FIG. 4 can generate the block identifier from the block storage mapping table 408 for the data block. 6, the block identifiers UUID14 assigned to node 606, UUID61 assigned to node 612, UUID11 assigned to node 604, UUID36 assigned to node 608, UUID47 assigned to node 610 and UUID06 assigned to node 602 can be generated from the block storage mapping table 408 shown in FIG. 5 of 512 byte data blocks having the lowest 8 bits of 00001110, 00111101, 00001011, 00100100, 00101111 and 00000110.
[0083] In step 908, the system updates each table of data blocks by inserting nodes with unique block identifiers in ascending order into a linked list indexed by the power of two exponentiation of each data block. For example, the linked list node 606 shown in FIG. 6 is inserted into the block identifier of UUID14 by indexing the table with a value of 3, traversing the linked list of nodes in the buckets of the table, and inserting the nodes in the linked list of binary-valued nodes in ascending order by the value of the block identifier. In an embodiment, the expedited replication module 404 shown in FIG. 4 updates the table for each data block by inserting nodes with unique block identifiers in ascending order into a linked list indexed by the power of two exponentiation of each data block.
[0084] In step 910, the system assigns the binary value of each data block to each inserted node's respective block data with a unique block identifier generated for each data block. For example, linked list node 606 shown in FIG. 6, having an assigned block identifier of data block UUID 14 with a binary value of the lower 8 bits of 00001110, is assigned a binary value of 00001110. And the block data values of each inserted node having block identifiers UUID 61 assigned to node 612, UUID 11 assigned to node 604, UUID 36 assigned to node 608, UUID 47 assigned to node 610, and UUID 06 assigned to node 602 are assigned binary values of 00111101, 00001011, 00100100, 00101111, and 00000110, respectively, as shown in FIG. 6. In an embodiment, the expedited replication module 404 shown in FIG. 4 assigns a binary value for each data block to each block of data at each inserted node with a unique block identifier generated for each data block.
[0085] In step 912, the system stores the updated table. In an embodiment, the expedited replication module 404 shown in FIG. 4 stores the updated table in server storage. In another embodiment for generating block identifiers for data blocks, an initial UUID with a date and timestamp can be generated, such as, for example, 06 Jan 2022 08:46:31, and assigned the lowest binary value of 00000000. This UUID can be incremented by microseconds for each subsequent UUID assigned to the next sequential block data of the 512-byte binary combination. For example, an initial UUID with a date and timestamp of 06 Jan 2022 08:46:31 is incremented by one microsecond, such as, for example, 06 Jan 2022 08:46:32, and assigned to the initial linked list node 506 assigned a block data value of 00000001 as the block identifier. Each subsequent UUID is assigned appropriately such that the block identifiers are assigned in ascending order by date and timestamp increments of 1 microsecond, with a one-to-one correspondence for each 512-byte block of binary combinations arranged in ascending binary order.
[0086] In step 914, the system stores a list of block identifiers representing the list of data blocks instead of the list of data blocks. Such a list of block identifiers can be stored in recovery storage to replicate the list of data blocks in the primary storage, and such a list of block identifiers stored in the primary storage can be used to restore the list of data blocks in the primary storage. In an embodiment, the rapid replication module 404 shown in FIG. 4 stores a list of block identifiers representing the list of data blocks instead of the list of data blocks.
[0087] In an embodiment for generating a block identifier for a block of data, a multiplexer may be used to generate a UUID with a date and a timestamp. In this embodiment, a block of data is input to the multiplexer with an initial UUID with a date and a timestamp, and the multiplexer outputs a 64-bit UUID with a date and a timestamp for the block of data. The multiplexer may increment the timestamp by microseconds for each subsequent UUID assigned to the next sequentially numbered block of data in the 512-byte binary combination arranged in ascending order.
[0088] FIG. 10 illustrates an exemplary circuit diagram of a multiplexer for generating a unique block identifier, according to an embodiment of the present invention. For example, FIG. 10 illustrates a circuit diagram of a digital multiplexer 1000 designed to receive a 4096-bit input 1002, pass it to MUX1, MUX2, and MUX3, and generate a 64-bit output 1004. The multiplexer may be a microchip operatively coupled to an exemplary environment of a computer system, such as computer system 12 described with respect to FIG. 1. In an embodiment, a 4096-bit data block that needs to be assigned a block identifier may be input to multiplexer 1000 with an initial UUID with a date and time stamp, and the multiplexer outputs a 64-bit UUID with a date and time stamp for that data block. This UUID may be incremented by microseconds for each subsequent UUID that is assigned to the next sequential block data of the 512-byte binary combination. In this manner, each UUID can be appropriately assigned such that the block identifiers result in an ascending assignment of date and time stamps incremented by one microsecond, which correspond one-to-one to each block data of 512-byte binary combinations in ascending binary values. Thus, the multiplexer can generate unique block identifiers for 512-byte fixed size data blocks. In other fixed size data block embodiments, for example 128-byte or 256-byte, the multiplexer can be used to receive as input 1024-bit or 2048-bit, respectively, and generate a 16-bit identifier.
[0089] Figure 11 illustrates a flowchart of an exemplary method according to an embodiment of the present invention. The method steps may be performed in the environment of Figure 4 and described with respect to Figures 4-6. In particular, Figure 11 illustrates an exemplary method for updating a data block in a list of data blocks by updating a corresponding block identifier in a list of block identifiers using block storage mapping table 408 illustrated in Figures 4-6.
[0090] In step 1102, the system receives an updated data block in a list of data blocks represented by a list of block identifiers. For example, a data block having a lower 8 bits of 10000020 may be received to replace a data block having a lower 8 bits of 00001011 in a list of 512 byte data blocks having lower 8 bits of 00001110, 00111101, 00001011, 00100100, 00101111 and 00000110. In an embodiment, the expedited replication module 404 shown in FIG. 4 receives the updated data block in a list of data blocks represented by a list of block identifiers.
[0091] In step 1104, the system finds the exponent of the power of two used to index the table of blocks of updated data. For example, the exponent of 10000020 used to index the table of blocks of updated data may be found by calculating the exponent of the power of two having the closest lower binary value (i.e., 128) to the binary value of the data block (i.e., 130). In an embodiment, the expedited replication module 404 shown in FIG. 4 may find the exponent of the power of two used to index the table of blocks of updated data.
[0092] In step 1106, the system Block Data In an embodiment, the expedited replication module 404 shown in FIG. 4 traverses the linked list of nodes in the block mapping table 408 shown in FIG. 6 indexed by an exponent of 7 to determine whether the block data is in the linked list of nodes. Block DataIf the system determines that is in the linked list of nodes, then the system continues performing the steps of the exemplary method at step 1108. If not, the system continues performing the steps of the exemplary method at step 1110.
[0093] In step 1106, the system Block Data If it is determined that the data block of the updated data block is in the linked list of the node, in step 1008, the system obtains the block identifier from the node that has the block data of the updated data block. For example, if the lower 8 bits of the block data of the updated data block are 00111101 instead of 10000020, then the rapid replication module shown in FIG. 4 checks whether the block data is in the linked list of the node, and traverses the linked list of the node in the block mapping table 408 shown in FIG. 6 indexed by index 5 in the embodiment to find the data block of 00111101 in the node 612 shown in FIG. 6. In this case, the system obtains the block identifier UUID 61 assigned to the node 612.
[0094] In step 1106, the system Block DataIf the system determines that the updated data block of 10000020 is in the linked list of nodes, then in step 1110 the system generates a unique block identifier. The block identifier of the data block can be generated by indexing the table with an exponentiation of a power of two with the lowest binary value closest to the binary value of the data block, and incrementing the block identifier value of the first node in the linked list of nodes in the bucket of the table by the difference between the value of the data block and the block data of the first node. Thus, the exponent of the power of two with the lowest binary value closest to the binary value of the updated data block of 10000020 is 7. Then, the block identifier of UUID130 is generated by indexing the table with the exponent 7, and incrementing the block identifier value UUID130 of the first node in the linked list of nodes in the bucket of the array element by the difference between the value of the data block (i.e., 130) and the value of the first node (i.e., 128). 4 may generate a block identifier from the block storage mapping table 408 for the updated data block. As noted above, in an alternative embodiment for generating a block identifier for a data block, an initial UUID with a date and time stamp may be generated, for example, on January 6, 2022 at 8:46:31, and assigned the lowest binary value of 00000000, and this UUID may be incremented by microseconds for each subsequent UUID that is assigned the next sequential block data of the 512-byte binary combination.
[0095] In step 1112, the system updates the table by inserting the node with the unique identifier into a linked list indexed by the power of two exponentiation of the updated data block in ascending order. For example, a linked list node is inserted into the block identifier of UUID 130 by indexing into the table with a value of 7, traversing the linked list of nodes in the buckets of the table, and inserting the nodes into the linked list of nodes in ascending order by the value of the block identifier. The expedited replication module 404 shown in FIG. 4 updates the table with the updated data block by inserting the node with the unique block identifier UUID 130 into a linked list indexed by the power of two exponent with the lowest binary value closest to the binary value of the updated data block of 10000020, the value of 7, in ascending order.
[0096] In step 1114, the system assigns the binary value of the updated data block to the block data of the inserted node having the unique block identifier generated for the updated data block. For example, a linked list node inserted into a table with an assigned block identifier of UUID130 for a data block having a binary value of 10000020 for the lowest 8 bits is assigned a binary value of 10000020. In an embodiment, the expedited replication module 404 shown in FIG. 4 assigns a binary value of 10000020 to a linked list node inserted into a table with an assigned block identifier of UUID130.
[0097] In step 1116, the system stores the updated table. In an embodiment, the expedited replication module 404 shown in Figure 4 stores the updated table in server storage.
[0098] In step 1118, the system replaces the block identifiers of the data blocks before updating them with the block identifiers of the updated data blocks in the list of block identifiers. Given a list of 512-byte data blocks with the lowest 8 bits of 00001110, 00111101, 00001011, 00100100, 00101111 and 00000110, and a data block with the lowest 8 bits of 10000020 replacing the data block with the lowest 8 bits of 00001011, the list of block identifiers UUID14, UUID61, UUI11, UUID36, UUID47, UUID06 is updated to UUID14, UUID61, UUI130, UUID36, UUID47, UUID06 by replacing the block identifier UUID11 with the block identifier UUID130. In an embodiment, the expedited replication module 404 shown in FIG. 4 replaces the block identifier of the data block before updating it with the block identifier of the updated data block in the list of block identifiers.
[0099] In step 1120, the system stores the updated list of block identifiers. In an embodiment, the expedited replication module 404 shown in FIG. 4 stores the updated list of block identifiers. Such an updated list of block identifiers may in an embodiment be stored in recovery storage and replace the list of data blocks replicated from the primary storage before updating the list of block identifiers. In an embodiment, the server may send the updated block identifiers to a recovery server, and the recovery server may update the list of block identifiers by replacing the corresponding block identifiers.
[0100] Figure 12 illustrates a flowchart of an exemplary method in accordance with an aspect of the present invention. The steps of the method may be performed in the environment of Figure 4 and are described with reference to elements shown in Figures 4 and 6. In particular, the flowchart of Figure 12 illustrates an exemplary method of replicating a list of data blocks in primary storage by storing a list of block identifiers in recovery storage using the block storage mapping table 408 shown in Figures 4 and 6.
[0101] In step 1202, the system receives a data block from a list of data blocks for replication. For example, a data block having a low order 8 bits of 00001011 in a list of 512 byte data blocks may be received for replication. In an embodiment, the expedited replication module 404 shown in FIG. 4 receives a data block from a list of data blocks for replication.
[0102] In step 1204, the system finds the exponent of the power of two used to index the table of data blocks. For example, the exponent of the power of two used to index the table of data blocks, 00001011, is found by calculating the exponent of the power of two that has the closest lower binary value (i.e., 8) to the binary value of the data block whose exponent is 3 (i.e., 11). In an embodiment, the expedited replication module 404 shown in FIG. 4 finds the exponent of the power of two used to index the table of data blocks.
[0103] In step 1206, the system determines whether the block data of the data block is within the linked list of nodes indexed by the power of 2 exponentiation of the data block. In an embodiment, the expedited replication module 404 shown in FIG. 4 traverses the linked list of nodes in the block mapping table 408 shown in FIG. 6 indexed by the index 3 to check whether the block data of 00001011 is within the linked list of nodes. If the system determines that the block data of the data block is within the linked list of nodes, then the system continues to perform the steps of the exemplary method in step 1208. If not, the system continues to perform the steps of the exemplary method in step 1210.
[0104] If the system determines in step 1206 that the block data of the data block is in the linked list of the node, in step 1208, the system obtains a block identifier from the node that has the block data of the data block. For example, considering the lower 8-bit block data of 00001011, the rapid replication module 404 shown in FIG. 4 traverses the linked list of the node in the block mapping table 408 shown in FIG. 6, which is indexed by index 3 in the embodiment to check whether the block data is in the linked list of the node, and finds the block data of 00001011 in the node 604 as shown in FIG. 6. Then, the system obtains the block identifier UUID11 assigned to the node 604.
[0105] If the system determines in step 1206 that the block data for the data block is not in the linked list of nodes, then in step 1210 the system generates a unique block identifier. The block identifier for the data block may be generated by indexing the table by exponentiation of a power of two with the lowest binary value closest to the binary value of the data block, and increasing the identifier value of the first node in the linked list of nodes in the bucket of the table by the difference between the value of the data block and the block data of the first node. In an embodiment, the expedited replication module 404 shown in FIG. 4 generates the block identifier from the block storage mapping table 408 for the data block. As discussed above, in an alternative embodiment for generating block identifiers for blocks of data, an initial UUID with a date and timestamp can be generated, for example, at 8:46:31 on January 6, 2022, and assigned the lowest binary value of 00000000, and this UUID can be incremented by microseconds for each subsequent UUID that is assigned the next sequentially numbered block of data in the 512-byte binary combination.
[0106] In step 1212, the system updates the table by inserting nodes with unique block identifiers in ascending order into a linked list indexed by the powers of two exponentiation of each data block. For example, the linked list node 604 shown in FIG. 6 with a block identifier of UUID 11 was inserted into the table by indexing the table with index 3, traversing the linked list of nodes within the buckets of the table, and inserting the nodes into the linked list of nodes in ascending order of the values of the block identifiers. In an embodiment, the rapid replication module 404 updates the table by inserting nodes with unique block identifiers in ascending order into a linked list indexed by the powers of two exponentiation of the data blocks.
[0107] In step 1214, the system assigns the binary value of the data block to the block data of the inserted node having the unique block identifier generated for the data block. For example, a linked list node in a table having an assigned block identifier of UUID11 for a data block having a binary value of the low order 8 bits of 00001011 is assigned a binary value of 00001011. In an embodiment, the expedited replication module 404 assigns the binary value of the data block to the block data of the inserted node having the unique block identifier generated for the data block.
[0108] In step 1216, the system stores the updated table. In an embodiment, the expedited replication module 404 stores the updated table in server storage.
[0109] If the system determines in step 1206 that the block data for the data block is not in the linked list of the node, then in step 1218 the system sends the block identifier and the block data to the recovery storage for replication. By doing so, the recovery storage can store the block identifier in a list of block identifiers for replication of the list of data blocks and store the block data in a block storage mapping table stored in the recovery storage in an embodiment. In an embodiment, the expedited replication module 404 shown in FIG. 4 sends the block identifier to the recovery storage, stores the block identifier in a list of block identifiers for replication of the list of data blocks, and sends the block data for replication in a block storage mapping table stored in the recovery storage.
[0110] If in step 1206 the system determines that the block data for the data block is in the linked list of nodes, then in step 1220 the system sends the block identifier to the recovery storage for replication without the block data. In this case, the block data was previously sent to the recovery storage. The recovery storage then stores the block identifier in a list of block identifiers for replication of the list of data blocks. In an embodiment, the expedited replication module 404 shown in FIG. 4 sends the block identifier to the recovery storage and stores the block identifier in a list of block identifiers for replication of the list of data blocks.
[0111] FIG. 13 illustrates a block diagram of an exemplary environment in accordance with an aspect of the invention. In an embodiment, the environment includes a recovery server 1300, which may be a computer system such as the computer system 12 described with respect to FIG. 1, and a recovery server memory 1302, such as the memory 28 described with respect to FIG. 1. In general, the recovery server 1300 provides services necessary for data storage and data recovery of replicated data. The recovery server 1300 includes a rapid recovery module 1304 in the recovery server memory 1302, which in an embodiment, has the functionality of creating a block mapping table associated with block identifiers having binary combinations of data, receiving a list of block identifiers in the primary storage, updating the block mapping table in the recovery storage, storing the list of block identifiers in the recovery storage, and transmitting the list of block identifiers to the primary storage to restore the list of data blocks in the primary storage. The expedited recovery module 1304, in an embodiment, may be operable to receive updated block identifiers for the updated replicated data blocks and replace block identifiers for these replicated data blocks before updating the updated block identifiers in a list of block identifiers in the recovery storage representing the replicated list of data blocks. The expedited recovery module 1304, in an embodiment, may be operable to send the list of data blocks with the list of block identifiers in the recovery storage to the primary storage and restore the list of data blocks in the primary storage.
[0112] In an embodiment, the rapid recovery module 1304 may include one or more program modules, such as program module 42 described with respect to FIG. 1. The recovery server 1300 may include additional or fewer modules than those shown in FIG. 13. In an embodiment, separate modules may be combined into a single module. Additionally or alternatively, a single module may be implemented as multiple modules. Furthermore, the devices and / or networks in the environment are not limited to those shown in FIG. 13. In an implementation, the environment may include additional devices or networks or both, fewer devices or networks or both, different devices or networks or both, or devices or networks or both arranged differently than shown in FIG. 13.
[0113] According to an aspect of the invention, the recovery server 1304 also includes within the recovery server memory 1302, a recovery server storage 1306, which may be computer storage such as the system storage 34 described with respect to FIG. 1. In an embodiment, the recovery server storage 1306 stores information for mapping block identifiers with block data in a block storage mapping table 1308, and stores recovery files 1310, each having a list of block identifiers that represent a replica of a list of data blocks of the same size in the block storage. For data blocks of a fixed size of 512 bytes, the block storage mapping table 1308 may store associations of block identifiers with data blocks that represent a 4096-bit binary combination. Those skilled in the art should understand that other fixed size data blocks, such as 128-byte data blocks, 256-byte data blocks, etc., may be used in the embodiments.
[0114] Figure 12 illustrates a flowchart of an exemplary method in accordance with an aspect of the present invention. The steps of the method may be performed in the environment of Figure 13 and will be described with reference to elements shown in Figure 13. In particular, the flowchart of Figure 14 illustrates an exemplary method of receiving a block identifier to replace a data block in primary storage and storing the block identifier in a list of block identifiers in primary storage using a block storage mapping table.
[0115] In step 1402, the system receives a block identifier from a list of block identifiers in recovery storage that replicates the list of data blocks in primary storage. For example, in an embodiment, the block identifier may be received for UUID 11. In an embodiment, the expedited recovery module shown in FIG. 13 receives a block identifier from a list of block identifiers in recovery storage that replicates the list of data blocks in primary storage.
[0116] In step 1404, the system determines whether the block data is also included in the block identifier. In an embodiment, the rapid recovery system shown in FIG. 13 determines whether the block data is also included in the block identifier. If the block data is included in the block identifier, then the block data has not been previously transmitted from the primary storage device and the block storage mapping table in the primary storage device can be updated to the received block data. If the system determines that the block data is included in the block identifier, then the system continues to perform the steps of the exemplary method in step 1408. If not, the system continues to perform the steps of the exemplary method in step 1406.
[0117] If in step 1404 the system determines that the block data is not also included in the block identifier, then in step 1406 the system finds the exponent of the power of two used to index the table of block identifiers. In this case, the block data has previously been transmitted from the primary storage device and the block data has already been stored in the block storage mapping table in an embodiment. To do so, the exponent of the power of two used to index the table of block identifiers, UUID11, can be found, for example, by calculating the exponent of the power of two having the closest lower value (i.e., 8) to the appended decimal value of the block identifier whose exponent is 3 (i.e., 11). In an embodiment, the expedited recovery module 1304 shown in FIG. 13 finds the exponent of the power of two used to index the table of block identifiers. The system continues performing the steps of the exemplary method in step 1416 and stores the block identifier in the list of block identifiers representing the block storage file in the recovery storage.
[0118] If in step 1404 the system determines that the block data is also included in the block identifier, then in step 1408 the system finds the exponent of the power of two used to index the table of block identifiers. In this case, the block data has not been previously transmitted from primary storage and in an embodiment the block storage mapping table can be updated with the received block data. To do so, the exponent of the power of two used to index the table of block identifiers, UUID11, can be found, for example, by calculating the exponent of the power of two that has the closest lower value (i.e., 8) to the appended decimal value of the block identifier whose exponent is 3 (i.e., 11). In an embodiment, the expedited recovery module 1304 shown in FIG. 13 finds the exponent of the power of two used to index the table of block identifiers.
[0119] In step 1410, the system updates the table by inserting nodes having block identifiers in ascending order into a linked list indexed by exponentiation of powers of two of the block identifier. For example, a linked list node having a block identifier of UUID 11 may be inserted into the table by indexing the table with a value of 3, traversing the linked list nodes in the buckets of the table, and inserting the nodes in the linked list in ascending order by the value of the block identifier. In an embodiment, the expedited recovery module 1304 shown in FIG. 13 updates the table by inserting nodes having block identifiers in ascending order into a linked list indexed by exponentiation of powers of two of the block identifier.
[0120] In step 1412, the system receives the Block Data For example, a binary value of 00001011 is assigned to the block data of a linked list node inserted into a table with an assigned block identifier of UUID11. In an embodiment, the expedited recovery module 1304 shown in FIG. 13 assigns the binary value of the data block contained in the block identifier to the block data of the inserted node with the block identifier.
[0121] In step 1414, the system stores the updated table in the recovery storage. In an embodiment, the expedited recovery module 1304 shown in FIG.
[0122] In step 1416, the system stores in recovery storage the block identifiers in the list of block identifiers representing the block storage file. In an embodiment, the expedited recovery module 1304 shown in FIG. 13 stores the block identifiers in the recovery file 1310 and the block identifiers in the block storage file in recovery server storage 1306. Such list of block identifiers is then stored in recovery storage to replace the list of data blocks in primary storage, and such list of block identifiers stored in recovery storage can be used to restore the list of data blocks in primary storage.
[0123] 15 illustrates an exemplary architecture in an exemplary cloud computing environment in accordance with an aspect of the invention. In an embodiment, the exemplary architecture includes a primary site 1502 that transmits block identifiers 1514, 1516, and 1518 to a disaster recovery site 1532 or public cloud storage 1534, or a combination of both, which stores these block identifiers as block identifiers 1548, 1550, and 1552 in recovery storage 1546. The primary site may include, for example, a virtual machine (VM) 1504 employing a replicator agent 1506, a physical server 1508 employing a replicator agent 1510, a cloud replicator device 1512, and a storage network 1520. The VMs 1504, the physical servers 1508, the cloud replicator device 1512, and the storage network 1520 are cloud computing nodes that can communicate with each other and are grouped physically or virtually in one or more networks, such as a private, community, public, hybrid cloud, such as the cloud computing node 10 described with respect to Figures 1 and 2. The replicator agents 1506 and 1510, in embodiments, function to provide services for replicating and recovering data files between the cloud computing nodes, the VMs 1504, and the physical servers 1508, and the cloud storage 1534 or the recovery storage 1546, or a combination thereof. The replicator agents 1506 and 1510 may include one or more program modules, such as the program module 42 described with respect to Figure 1. The VMs 1504 and the physical servers 1508 may include additional or fewer modules than those shown in Figure 15. In embodiments, separate modules may be integrated into a single module. Additionally or alternatively, a single module may be implemented as multiple modules.
[0124] The cloud replicator device 1512 may be a computer system, such as the server 400 described with respect to FIG. 4, that has the functionality to provide services necessary for data storage, data replication, and data recovery. For example, the cloud replicator device 1512 may include the expedited replication module 404 (not shown) described with respect to FIG. 4 that has the functionality to create a block mapping table that associates block identifiers with binary combinations of data, receive a list of data blocks in a primary storage device, generate a list of block identifiers from the list of data blocks using the block mapping table, and send the list of block identifiers to a backup storage device for replicating the list of data blocks. The cloud replicator device 1512 may include the functionality of the expedited replication module 404 to update the block identifiers of the replicated data blocks, for example, to update the block identifiers 1514, 1516, 1518, and send the updated block identifiers to the backup storage device to replace the block identifiers of those replicated data blocks. The cloud replicator device 1512 may further include functionality of the rapid replication module 404 to restore the list of data blocks in the primary storage device by obtaining the list of block identifiers from the backup storage device and automatically generate the data blocks from a block-by-block-identifier mapping table. The cloud replicator device 1512 may additionally include a multiplexer (not shown) operatively coupled to generate block identifiers from the data blocks, as described with respect to FIG.
[0125] Storage network 1520 communicates with storage 1522, which stores file 1524 including data blocks 1526, 1528, and 1530. Storage network 1520 may be a network of storage devices, such as storage device 65 shown in Figure 3. In an embodiment, storage network 1520 may provide block storage, for example, in a storage area network (SAN) or a cloud-based storage environment.
[0126] In an embodiment, the exemplary architecture of FIG. 15 also includes a disaster recovery site 1532 that can store the block identifiers as block identifiers 1548, 1550, 1552 in recovery storage 1546 or in public cloud storage 1534, or a combination of both. A disaster recovery (DR) site can include, for example, a cloud replicator device 1536 and a public cloud storage 1534 in communication with a recovery storage network 1544. The cloud replicator device 1536 and the public cloud storage 1534 are cloud computing nodes that can communicate with each other and are physically or virtually grouped in one or more networks, such as a private, community, public, hybrid cloud, such as the cloud computing nodes 10 described with respect to FIGS. 1 and 2.
[0127] The cloud replicator device 1536 may be a computer system, such as the server 1300 described with respect to FIG. 13, that has the functionality to provide the necessary services for data storage, data replication, and data recovery. For example, the cloud replicator device 1536 may include a rapid recovery module (not shown) described with respect to FIG. 13 that has the functionality to create a block mapping table that associates block identifiers with binary combinations of data, receive a list of block identifiers in a primary storage device, update the block mapping table in a recovery storage device, store the list of block identifiers in the recovery storage device, and transmit the list of block identifiers to the primary storage device to restore the list of data blocks in the primary storage device. The cloud replicator device 1536 may also include the functionality of the rapid recovery module 1304, in an embodiment, to receive updated block identifiers of updated replicated data blocks and replace the block identifiers of these replicated data blocks before updating the updated block identifiers in the list of block identifiers in the recovery storage device that represent the replication of the list of data blocks. Cloud replicator device 1536 may also include functionality of rapid recovery module 1304, in embodiments, sending the list of block identifiers in recovery storage to primary storage and restoring the list of data blocks in primary storage. Cloud replicator device 1536 may additionally include a multiplexer (not shown) operatively coupled to generate block identifiers from the data blocks, as described with respect to FIG.
[0128] Recovery storage network 1544 communicates with recovery storage 1546, which stores block identifiers 1548, 1550, and 1552. Recovery storage network 1544 may be a network of storage devices, such as storage device 65 shown in FIG. 3. In an embodiment, recovery storage network 1544 may provide block storage, for example, in a storage area network (SAN) or cloud-based storage environment. The amount of devices and / or networks in the architecture is not limited to those shown in FIG. 15. In implementations, an environment may include additional devices or networks or both, fewer devices or networks or both, different devices or networks or both, or devices or networks or both arranged differently than shown in FIG. 15.
[0129] Each VM 1504 or physical machine 1508 in the primary site 1502 may have a replicator agent 1506 and 1510, respectively, that stores changed blocks of a file in storage in the primary site 1502 and sends the changed blocks of the file to a cloud replicator device 1512 in the primary site 1502. The cloud replicator device 1512 may find block identifiers of the changed data blocks and send the block identifiers of the changed blocks to a cloud replicator device 1536 in the DR site 1532. The cloud replicator device 1536 in the DR site 1532 may receive the changed block identifiers and store them in a list of block identifiers in cloud storage.
[0130] For example, updating a data block of a file, such as data blocks 1526, 1528, and 1530 of file 1524 shown in the exemplary architecture shown in FIG. 15, is performed by the following exemplary method described with respect to FIG. 11, that is, by updating a data block in a list of data blocks by updating a corresponding block identifier in a list of block identifiers using a block storage mapping table. Thus, cloud replicator device 1512 can receive updated data blocks, such as each data block 1514, 1516, and 1518, find the block data of the updated data block in the linked list of nodes, or update and store a table with the generated block identifier associated with the updated data block. Cloud replicator device 1512 can obtain the block identifier of the updated data block and replace the block identifier of the data block before updating the block identifier of the updated data block in the list of block identifiers representing the list of data blocks of file 1524. The cloud replicator device 1512 can send the updated block identifier or a list of updated block identifiers to the DR site 1532, and, for example, the cloud replicator device 1536 in the DR site 1512 can receive the updated block identifier or the list of updated block identifiers and update the list of block identifiers by replacing block identifiers corresponding to the updated block identifiers with the updated block identifiers.
[0131] The cloud replicator device 1536 on the DR site 1532 can then receive the updated block identifiers or the updated list of block identifiers for the updated data blocks, such as block identifiers 1538, 1540 and 1542, respectively, and find the block identifiers for the updated data blocks in the linked list of nodes or update and store a table with the generated block identifiers associated with the updated data blocks. The cloud replicator device 1536 can replace the block identifiers of the data blocks before updating the block identifiers of the updated data blocks in the list of block identifiers, such as block identifiers 1548, 1550 and 1552 in the recovery storage 1546.
[0132] In an embodiment, a service provider could be offered to perform the processes described herein. In this case, the service provider could create, maintain, deploy, support, etc., a computer infrastructure that performs the processing steps of the invention for one or more customers. These customers could be, for example, any business that uses technology. In return, the service provider could receive payments from the customer under a subscription or payment agreement or both, or the service provider could receive payments from the sale of one or more third-party advertising content, or both.
[0133] In yet an additional embodiment, the invention provides a computer-implemented method over a network, where a computer infrastructure, such as computer system 12 (FIG. 1), is provided, and one or more systems for performing the processes of the invention can be obtained (e.g., created, purchased, used, modified, etc.) and deployed to the computer infrastructure. Deploying the systems to this extent can include one or more of: (1) installing from a computer-readable medium onto a computing device, such as computer system 12 (as shown in FIG. 1), (2) adding one or more computing devices to the computer infrastructure, and (3) incorporating and / or modifying one or more existing systems of the computer infrastructure to enable the computer infrastructure to perform the processes of the invention.
[0134] The description of various embodiments of the present invention has been presented for illustrative purposes, but is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terms used in this specification have been selected to best explain the principles of the embodiments, practical applications or technical improvements found in the market, or to enable others skilled in the art to understand the embodiments disclosed herein.
Claims
1. creating, by the computing device, a mapping associating a plurality of binary combinations of data of the block size with a plurality of block identifiers; generating, by the computing device, a list of block identifiers representing a list of data blocks in storage from the mapping associating the plurality of binary combinations of data of the block size with the plurality of block identifiers; transmitting, by the computing device, the list of block identifiers to a backup storage in a cloud-based storage environment to replicate the list of data blocks in the storage; storing, on a computer readable storage medium, the mapping associating the plurality of binary combinations of data of the block size with the plurality of block identifiers and a list of the block identifiers in the storage; A method comprising:
2. The method of claim 1 , further comprising receiving, by the computing device, a list of the data blocks in the storage.
3. 2. The method of claim 1, further comprising receiving, by the computing device, the list of block identifiers sent by the backup storage and restoring the list of data blocks in the storage from the mapping that associates the plurality of binary combinations of data of the block size with the plurality of block identifiers.
4. receiving, by the computing device, updated data blocks for data blocks in the list of data blocks in the storage; obtaining, by the computing device, a block identifier for the updated data block from the mapping that associates the plurality of binary combinations of data of the block size with the plurality of block identifiers; replacing, by the computing device, the block identifier of the data block with the block identifier of the updated data block in the list of block identifiers; The method of claim 1 further comprising:
5. transmitting, by the computing device, the block identifier of the updated data block to the backup storage. The method of claim 4 further comprising:
6. updating the mapping associating the plurality of binary combinations of data of the block size with the plurality of block identifiers, the mapping comprising the block identifiers of the updated data block, to the updated data block; The method of claim 4 further comprising:
7. ordering, by the computing device, the mapping associating the plurality of binary combinations of data of the block size with the plurality of block identifiers by exponentiation of a plurality of powers of two of the number of bits in the block size. The method of claim 1 further comprising:
8. 2. The method of claim 1, further comprising generating, by the computing device, a plurality of universally unique identifiers as the plurality of block identifiers incremented by a predetermined time period for each of the plurality of universally unique identifiers in ascending order from an initial date and timestamp.
9. 2. The method of claim 1, further comprising assigning each of the plurality of block identifiers consecutively from least to greatest, the block identifiers having each of a plurality of binary combinations of data arranged from least to greatest.
10. 2. The method of claim 1, further comprising updating the mapping associating the plurality of binary combinations of the block size data with the plurality of block identifiers to each of the data blocks in the list of data blocks, the mapping having an associated mapping for each of the block identifiers in the list of block identifiers.
11. The method of claim 1 , further comprising transmitting at least one data block in the list of block identifiers to the backup storage.
12. one or more computer readable storage media having program instructions collectively stored on said one or more computer readable storage media, said program instructions comprising: receiving, by the computing device, a block identifier for a copy of the data block; identifying, by the computing device, a block identifier in a mapping that associates a plurality of binary combinations of data of a block size with a plurality of block identifiers; storing, by the computing device, the block identifiers in a list of block identifiers for replicating a list of data blocks on a computer readable storage medium. A computer program product capable of executing the following:
13. The executable instructions include: receiving, by the computing device, block data associated with a block identifier for a backup of the data block; 13. The computer program product of claim 12 further operable to:
14. The executable instructions include: updating, by the computing device, the mapping associating the plurality of binary combinations of data of the block size with the plurality of block identifiers, the mapping having an associated mapping with the block identifiers, to the block data.
14. The computer program product of claim 13 further operable to:
15. The executable instructions include: transmitting, by the computing device, the list of block identifiers to restore the list of data blocks in primary storage.
13. The computer program product of claim 12 further operable to:
16. a processor, a computer readable memory, one or more computer readable storage media, and program instructions collectively stored on the one or more computer readable storage media, the program instructions comprising: creating, by said processor, a mapping associating a plurality of binary combinations of block size data with a plurality of block identifiers; generating, by the processor, a list of block identifiers representing a list of data blocks in storage from the mapping associating the plurality of binary combinations of data of the block size with the plurality of block identifiers; transmitting, by the processor, the list of block identifiers to a backup storage in a cloud-based storage environment to replicate the list of data blocks in the storage; storing, on a computer readable storage medium, the mapping associating the plurality of binary combinations of data of the block size with the plurality of block identifiers and a list of the block identifiers in the storage; is a viable system.
17. The program instructions include: receiving, by the processor, updated data blocks for data blocks in the list of data blocks in the storage; obtaining, by the processor, a block identifier for the updated data block from the mapping that associates the plurality of binary combinations of data of the block size with the plurality of block identifiers; replacing, by the processor, the block identifier of the data block with the block identifier of the updated data block in the list of block identifiers; sending, by the processor, the block identifier of the updated data block to the backup storage; The system of claim 16 further operable to:
18. The program instructions include: receiving the list of block identifiers sent by the backup storage and restoring the list of data blocks in the storage from the mapping that associates the plurality of binary combinations of data of the block size with the plurality of block identifiers; The system of claim 16 further operable to:
19. The program instructions include: updating the mapping associating the plurality of binary combinations of data of the block size with the plurality of block identifiers to each of the data blocks in the list of data blocks, the mapping having an associated mapping with each of the block identifiers in the list of block identifiers; The system of claim 16 further operable to:
20. The program instructions include: Sending at least one data block in the list of block identifiers to the backup storage. The system of claim 16 further operable to:
Citation Information
Patent Citations
Method of transferring file between storage device
JP2003173279A
Repair system, repair method and program
JP2013127666A
File transfer method and system
US20030200275A1