![]() METHOD, SYSTEM AND STORAGE MEDIA TO COMPATIBLELY EXTEND THE OFFLOAD TOKEN SIZE
专利摘要:
method, system, and storage medium to compatibly extend the offload token size. the present invention relates to offload technology. in aspects, a mechanism is described that allows an offload provider to use larger tokens. the larger token can be physical or virtual. in response to an offload read command, a larger token can be created and data from the larger token can be split or injected into multiple tokens of a smaller size. in response to an offload write command, data from multiple tokens can be combined into a larger token and/or extracted and used to obtain raw data. 公开号:BR112015011935B1 申请号:R112015011935-2 申请日:2013-12-14 公开日:2022-01-11 发明作者:Dustin L. Green 申请人:Microsoft Technology Licensing, Llc; IPC主号:
专利说明:
BACKGROUND [0001] One mechanism for transferring data is to read data from a file from a source location to main memory and write the data from main memory to a destination location. While in some environments this may work acceptably for relatively small data, as the data grows, the time it takes to read the data and transfer the data to another location increases. In addition, if data is accessed over a network, the network may impose additional delays in transferring the data from the source location to the destination location. Furthermore, security issues combined with the complexity of storage arrangements can complicate data transfer. [0002] The subject matter claimed here is not limited to modalities that resolve any drawbacks or that operate only in environments such as those described above. Rather, these fundamentals are only provided to illustrate an exemplary area of technology where some of the modalities described herein can be practiced. SUMMARY [0003] Briefly, the aspects of the subject described here refer to offload technology. In aspects, a mechanism is described that allows an offload provider to use larger tokens. The larger token can be physical or virtual. In response to an offload read command, a larger token can be created and the data from the larger token can be split or injected into multiple tokens of a smaller size. In response to an offload write command, data from multiple tokens can be combined into a larger token and/or extracted and used to obtain raw data. [0004] This Summary is provided to briefly identify some aspects of the matter which are further described below in the Detailed Description. This Summary is not intended to identify key or essential features of the claimed subject, nor is it intended to be used to limit the scope of the claimed subject. [0005] The phrase "subject described herein" refers to the subject described in the Detailed Description unless the context clearly dictates otherwise. The term "aspects" should be read as "at least one aspect." Identifying aspects of the subject described in the Detailed Description is not intended to identify key or essential features of the claimed subject. [0006] The aspects described above and other aspects of the subject described herein are illustrated by way of example and not limited to the accompanying figures in which like reference numbers indicate similar elements and in which: BRIEF DESCRIPTION OF THE DRAWINGS [0007] FIGURE 1 is a block diagram representing an exemplary general-purpose computing environment in which aspects of the subject matter described herein can be incorporated; [0008] FIGURES 2-4 are block diagrams depicting exemplary arrangements of system components on which aspects of the subject matter described herein may operate; [0009] FIGURE 5 is a diagram illustrating an exemplary scheme for representing a larger token with one or more smaller subtokens in accordance with aspects of the subject matter described herein; [00010] FIGURE 6 is a block diagram representing an exemplary arrangement of components of a system in which aspects of the subject matter described herein may operate; and [00011] FIGURES 7-9 are flowcharts that generally represent exemplary actions that may occur according to aspects of the subject described here. DETAILED DESCRIPTIONDEFINITIONS [00012] The phrase "subject described herein" refers to the subject described in the Detailed Description unless the context clearly dictates otherwise. The term "aspects" should be read as "at least one aspect." Identifying aspects of the subject described in the Detailed Description is not intended to identify key or essential features of the claimed subject. [00013] As used herein, the term "includes" and its variants should be read as open-ended terms meaning "includes, but is not limited to." The term "or" should be read as "and/or" unless the context clearly dictates otherwise. The term "based on" should be read as "based at least in part on". The terms "a modality" and "a modality" should be read as "at least one modality." The term "other modality" should be read as "at least one other modality". [00014] As used herein, terms such as "a," "an," and "the" are inclusive of one or more of the indicated item or action. Specifically, in claims a reference to an item generally means that at least one such item is present and a reference to an action means that at least one instance of the action is performed. [00015] Sometimes here the terms "first", "second", "third" and so on may be used. Without additional context, the use of these terms in the claims is not intended to imply an ordering, but is instead used for identification purposes. For example, the phrases "first version" and "second version" do not necessarily mean that the first version is exactly the first version or was created before the second version or even that the first version is ordered or operated before the second version. Instead, these phrases are used to identify different versions. [00016] Headers are for convenience only; information about a given topic can be found outside the section whose header indicates that topic. [00017] Other definitions, explicit or implicit, may be included below. EXEMPLARY OPERATING ENVIRONMENT [00018] FIGURE 1 illustrates an example of a suitable computing system environment 100 in which aspects of the subject matter described herein may be implemented. The computing system environment 100 is only an example of a suitable computing environment and is not intended to suggest any limitations as to the scope of use or functionality of aspects of the subject matter described herein. Nor should the computing environment 100 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment 100. [00019] Aspects of the subject described here are operational with numerous other general-purpose or special-purpose computing system environments or configurations. Examples of well-known computing systems, environments, or configurations that may be suitable for use with aspects of the subject matter described herein include personal computers, server computers - whether bare metal or as virtual machines -, portable or laptop devices, multiprocessor systems, microcontroller-based systems, set-top boxes, programmable and non-programmable consumer electronics, networked PCs, minicomputers, mainframe computers, personal digital assistants (PDAs), gaming devices, printers, appliances including a set top box, media center, or other appliances, computing devices embedded in or attached to automobiles, other mobile devices, telephone devices including cell phones, cordless phones, and corded phones, distributed computing environments that include any of the above systems or devices, and the like. [00020] Aspects of the subject described here can be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so on, which perform specific tasks or implement specific abstract data types. Aspects of the subject described here can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are connected through a communications network. In a distributed computing environment, program modules can be located on both local and remote computer storage media including memory storage devices. [00021] Alternatively, or in addition, the functionality described here may be performed, at least in part, by one or more logical hardware components. For example, and without limitation, illustrative types of hardware logic components that may be used include Field Programmable Gate Networks (FPGAs), Program-Specific Integrated Circuits (ASICs), Program-Specific Standard Products (ASSPs), System Systems on a Chip (SOCs), Complex Programmable Logic Devices (CPLDs), and the like. [00022] With reference to FIGURE 1, an exemplary system for implementing aspects of the subject matter described herein includes a general purpose computing device in the form of a computer 110. A computer may include any electronic device that is capable of executing an instruction. You. Computer components 110 may include a processing unit 120, system memory 130, and one or more system buses (represented by system bus 121) that couple various system components that include system memory in processing unit 120. System bus 121 can be any of several types of bus structures that include a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include an Industry Standard Architecture (ISA) bus, a Microchannel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, an Electronic Video Standards Association local bus (VESA), a Peripheral Component Interconnect (PCI) bus also known as a Mezzanine bus, an Extended Peripheral Component Interconnect (PCI-X) bus, an Advanced Graphics Port (AGP), and PCI express (PCIe). [00023] The processing unit 120 may be connected to a hardware security device 122. The security device 122 may store and be able to generate cryptographic keys that can be used to protect various aspects of the computer 110. In one embodiment, security device 122 may comprise a Trusted Platform Module (TPM) chip, a TPM Security Device, or the like. [00024] The computer 110 typically includes a variety of computer readable media. The computer readable medium may be any available medium that is accessible by the computer 110 and includes both volatile and non-volatile, and removable and non-removable medium. By way of example, and not limitation, the computer readable medium may comprise a computer storage medium and a communication medium. [00025] Computer storage medium includes both volatile and non-volatile, removable and non-removable medium implemented in any method or technology for storing information such as computer-readable instructions, data structures, program modules, or other data . Computer storage media include RAM, ROM, EEPROM, solid state storage, flash memory or other memory technology, CD-ROM, digital versatile discs (DVDs) or other optical disc storage, magnetic cassettes, magnetic tape, storage disk drives or other magnetic storage devices, and any other medium which can be used to store desired information and which can be accessed by the computer 110. The computer storage medium does not include the communication medium. [00026] The communication medium typically embodies computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any means of providing information. The term "modulated data signal" means a signal that has one or more of its characteristics adjusted or changed in such a way as to encode the information in the signal. By way of example, and not limitation, the communication medium includes a wired medium such as a wired network or a direct wired connection, a wireless medium such as acoustic, RF, infrared and other wireless media. Combinations of any of the above must also be included in the scope of computer-readable media. [00027] System memory 130 includes computer storage medium in the form of volatile and/or non-volatile memory such as read-only memory (ROM) 131 and random access memory (RAM) 132. An input system / basic output 133 (BIOS), which contains the basic routines that help transfer information between elements within the computer 110, such as during startup is typically stored in ROM 131. RAM 132 typically contains data and/or memory modules. program that are immediately accessible to and/or currently being operated by the processing unit 120. By way of example, and not limitation, FIGURE 1 illustrates the operating system 134, application programs 135, other program modules 136, and data from program 137. [00028] The computer 110 may also include other removable/non-removable, volatile/non-volatile computer storage media. As an example only, FIGURE 1 illustrates a hard disk drive 141 that reads from or writes to a non-removable, non-volatile magnetic medium, a magnetic disk drive 151 that reads from or writes to a removable, non-volatile magnetic disk 152, an optical disk drive 155 that reads from or writes to a removable, non-volatile optical disk 156 such as a CD ROM, DVD, or other optical medium. Other removable/non-removable, volatile/non-volatile computer storage media that may be utilized in the exemplary operating environment include magnetic tape cassettes, flash memory cards and other solid-state storage devices, digital versatile disks, other optical disks , digital video tape, solid-state RAM, solid-state ROM, and the like. Hard disk drive 141 may be connected to system bus 121 via interface 140, and magnetic disk drive 151 and optical disk drive 155 may be connected to system bus 121 by an interface for nonvolatile removable memory such as like interface 150. [00029] The units and their associated computer storage media, discussed above and illustrated in FIGURE 1, provide storage of computer-readable instructions, data structures, program modules, and other data for the computer 110. In FIGURE 1, for example, hard disk drive 141 is illustrated as storing operating system 144, application programs 145, other program modules 146, and program data 147. Note that these components may be either the same as or different from the system. operating system 134, application programs 135, other program modules 136, and program data 137. Operating system 144, application programs 145, other program modules 146, and program data 147 are given different numbers here to illustrate that, at the very least, these are different copies. [00030] A user may enter commands and information into the computer 110 through input devices such as a keyboard 162 and pointing device 161, commonly referred to as a mouse, trackball, or touch panel. Other input devices (not shown) may include a microphone (e.g. for inputting voice and other audio), joystick, gamepad, satellite dish, scanner, a touchscreen, a writing tablet, a camera ( for example, to enter gestures or other visual input), or the like. These and other input devices are often connected to the processing unit 120 through a user input interface 160 that is coupled to the system bus, but may be connected through other interfaces and bus structures, such as a parallel port, a game port or a universal serial bus (USB). [00031] By using one or more of the above-identified input devices a Natural User Interface (NUI) can be established. A NUI, can be based on voice recognition, touch and pen recognition, gesture recognition both over the screen and adjacent to the screen, air gestures, head and eye tracking, voice and speech, vision, touch, gestures, machine intelligence, and the like. Some NUI technology that can be employed to interact with a user include touch-sensitive displays, voice and speech recognition, objective intent and understanding, motion gesture detection using depth cameras (such as stereoscopic camera systems, infrared camera, RGB camera systems, and combinations thereof), motion gesture detection using accelerometers/gyroscopes, facial recognition, 3D displays, head, eye, and gaze tracking, immersive augmented reality and virtual reality systems, as well as technologies to detect brain activity using electric field sensing electrodes (EEG and related methods). [00032] A monitor 191 or other type of display device is also connected to the system bus 121 through an interface, such as a video interface 190. In addition to the monitor, computers may also include other peripheral output devices such as speakers 197 and printer 196, which may be connected via a peripheral output interface 195. [00033] Computer 110 may operate in a network environment using logical connections to one or more remote computers, such as remote computer 180. Remote computer 180 may be a personal computer, a server, a router, a networked PC , point device or other common network node, and typically includes many or all of the elements described above in relation to the computer 110, although only one memory storage device 181 has been illustrated in FIGURE 1. The logical connections shown in FIGURE 1 include a local area network (LAN) 171 and a wide area network (WAN) 173, but may also include telephone networks, near-field networks, and other networks. Such network environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. [00034] When using a LAN network environment, computer 110 is connected to LAN 171 through a network interface or adapter 170. When used in a WAN network environment, computer 110 may include a modem 172 or other means to establish communications over WAN 173, such as the Internet. Modem 172, which may be internal or external, may be connected to system bus 121 through user input interface 160 or other appropriate mechanism. In a network environment, program modules presented in connection with computer 110, or portions thereof, may be stored on the remote memory storage device. By way of example, and not limitation, FIGURE 1 illustrates remote application programs 185 as residing in a memory device 181. It will be appreciated that the network connections shown are exemplary and other means for establishing a communications connection between computers may be used. . OFFLOAD READINGS AND WRITING [00035] As mentioned earlier, some traditional data transfer operations may not be efficient or even work in today's storage environments. [00036] FIGURES 2-4 and 6 are block diagrams depicting exemplary arrangements of system components in which aspects of the subject described herein may operate. The components illustrated in FIGURES 2-4 and 6 are exemplary and are not intended to be fully inclusive of components that may be needed or included. In other embodiments, the components and/or functions described in conjunction with the FIGURES. 2-4 and 6 may be included in other components (shown or not shown) or placed in subcomponents without departing from the spirit or scope of aspects of the subject matter described herein. In some embodiments, the components and/or functions described in conjunction with FIGURES 24 and 6 may be distributed across multiple devices. [00037] Looking at FIGURE 2, the system 205 may include an initiator 210, data access components 215, token provider(s) 225, a store 220, and other components (not shown). System 205 may be implemented through one or more computing devices. Such devices may include, for example, personal computers, server computers, handheld or laptop devices, multiprocessor systems, microcontroller-based systems, set-top boxes, programmable consumer electronics, networked PCs, minicomputers, mainframe computers, cell phones, digital assistants Personal computers (PDAs), gaming devices, printers, appliances that include a set-top box, media center, or other appliances, in-car or embedded computing devices, other mobile devices, distributed computing environments that include any of the above systems or devices , and the like [00038] Where system 205 comprises a single device, an exemplary device that may be configured to act as system 205 comprises computer 110 of FIGURE 1. Where system 205 comprises multiple devices, one or more of the multiple devices may comprise the computer 110 of FIGURE 1 where the multiple devices may be configured similarly or differently. [00039] Data access components 215 may be used to transmit data to and from storage 220. Data access components 215 may include, for example, one or more of: I/O managers, filters, drivers, file server components, components on a storage area network (SAN) or other storage device, and other components (not shown). As used herein, a SAN can be implemented, for example, as a device that exposes logical storage targets, as a communication network that includes such devices, or the like. [00040] In one embodiment, a data access component may comprise any component that is given an opportunity to examine I/O between initiator 210 and storage 220 and that is capable of changing, completing, or failing the I/O or take other or no actions based on it. For example, where system 205 resides on a single device, data access components 215 may include any object in an I/O stack between initiator 210 and storage 220. Where system 205 is implemented by multiple devices, data access components 215 may include components on a device that hosts the initiator 210, components on a device that provide access to storage 220, and/or components on other devices and the like. In another embodiment, the data access components 215 may include any components (e.g., such as a service, database, or the like) used by a component through which I/O passes even if data does not flow through. of the components used. [00041] As used herein, the term component shall be read to include hardware such as all or a portion of a device, a collection of more software modules or portions thereof, some combination of one or more software modules or portions thereof, and a or more devices or portions thereof, and the like. A component can include or be represented by code. [00042] As used herein, the term computer code should be read to include instructions that dictate actions that a computer should take. These instructions may be included on any volatile or non-volatile computer-readable medium. [00043] In one embodiment, storage 220 is any storage medium capable of storing data. Storage 220 may include volatile memory (eg, a cache) and non-volatile memory (eg, persistent storage). The term data should be broadly read to include anything that can be represented by one or more computer storage elements. Logically, data can be represented as a series of 1's and 0's in volatile or non-volatile memory. On computers that have a non-binary storage medium, data can be represented according to the capabilities of the storage medium. Data can be organized into different data structures including simple data types such as numbers, letters, and the like, hierarchical, connected, or other relative data types, data structures that include multiple other data structures or data types simple, and the like. Some examples of data include information, program code, program status, program data, commands, other data, or the like. [00044] Storage 220 may comprise hard disk, solid state, or other non-volatile storage, volatile memory such as RAM, other storage, some combination of the above, and the like, and may be distributed across multiple devices (e.g., (e.g., multiple SANs, multiple file servers, a mix of heterogeneous devices, and the like). The devices used to implement storage 220 may be physically located together (eg, on a single device, in a data center, or the like) or geographically distributed. Storage 220 may be arranged in a chained storage arrangement or a non-chained storage arrangement. Storage 220 may be external, internal, or include components that are both internal and external to one or more devices implementing system 205. Storage 220 may be formatted (eg, with a file system) or unformatted (eg. example, gross). [00045] In another embodiment, storage 220 may be implemented as a storage container rather than direct physical storage. A storage container can include, for example, a file, volume, disk, virtual disk, logical drive, logical disk, writable clone, volume snapshot, logical disk snapshot, physical disk, solid state storage (SSD), disk rigid, data stream, alternate data streams, metadata stream, or the like. For example, storage 220 may be implemented by a server that has multiple physical storage devices. In this example, the server may present an interface that allows a data access component to access data from a storage that is implemented using one or more of the physical storage devices or portions thereof on the server. [00046] The abstraction level can be repeated for any arbitrary depth. For example, the server providing a storage container for data access components 215 may also rely on a storage container to access the data. [00047] In another embodiment, storage 220 may include a component that provides a view into data that may be persisted in nonvolatile storage or non-persisted in nonvolatile storage. [00048] One or more of the data access components 215 may reside on an apparatus that hosts the initiator 210 while one or more other of the data access components 215 may reside on an apparatus that hosts or provides access to the storage 220. For example, if the initiator 210 is an application running on a personal computer, one or more of the data access components 215 may reside in an operating system hosted on the personal computer. An example of this is illustrated in FIGURE 3. [00049] As another example, if the storage 220 is implemented over a storage area network (SAN), one or more of the data access components 215 may implement a storage operating system that manages and/or provides access to storage 220. When initiator 210 and storage 220 are hosted on a single appliance, all or many of the data access components 215 may also reside on the appliance. [00050] An offload read allows an initiator to obtain a token representing data from a store. Using this token, the initiator or another initiator can request an offload write. An offload write allows an initiator to have an offload provider write some or all of the data represented by the token. [00051] In one embodiment, a token includes a cryptographically secure number that is obtained through a successful offload read. In the present tense, an example of a cryptographically secure number is a 256-bit number generated in an appropriate way (eg, through creating a random number by sampling some random physical phenomenon). Some exemplary procedures for generating cryptographically secure numbers are described in Request for Comments (RFC) 1750. With advances in technology both the length of the secure number and the procedure used to generate a cryptographically secure number can change without departing from the spirit or scope of aspects of the subject described here. [00052] A token represents data that is immutable as long as the token is valid. The data that a token represents is sometimes referred to as raw data. [00053] An offload provider is an entity (possibly including multiple components dispersed across multiple devices) that provides indirect access to data associated with a token. Logically, an offload provider is able to perform an offload read and/or offload write. Physically, an offload provider can be implemented by one or more of the 215 data access components and a token provider. [00054] When serving an offload read or offload write, an offload provider can logically perform operations on storage data and/or on tokens associated with a token provider. For example, for an offload read, an offload provider can logically copy data from a logical storage container backed by data from a storage into a token (which may also be backed by data from the storage), whereas for a write offload, the offload provider can logically copy data from a token to a logical storage container backed by data from the storage. [00055] An offload provider can transfer data from a source store, write data to a destination store, and hold data to be provided upon receipt of a token associated with the data. In some implementations, an offload provider may indicate that an offload write command is complete after the data has been logically written to the target storage. In addition, an offload provider may indicate that an offload write command is complete but defer physically writing data associated with the offload write until convenient. [00056] In some implementations, an offload provider may share data between a first logical storage container and a second logical storage container, and may share data between a token and a storage container. The offload provider may stop sharing data as part of performing a write to physical storage locations of the storage which would otherwise cause more than one storage container to be modified, or otherwise cause the represented data for a token to change. [00057] In some implementations, an offload provider can perform a logical copy of a storage container to a token or a logical copy of a token to a storage container by initiating data sharing between the token and a storage container. For example, the offload provider can perform an offload read by logically copying data from the font storage container to the token initiating data sharing between the font storage container and the token. In another example, the offload provider can perform an offload write by logically copying data from the token to the target storage container initiating data sharing between the token and the target storage container. [00058] In some implementations, an offload provider may invalidate a token to, for example, avoid sharing the data and/or physically avoid copying the data. For example, the offload provider can perform an offload write by logically copying data from the token to the target storage container by updating the target storage container's data structures to refer to the physical storage locations of the storage referred to by the token, and in conjunction with this, logically invalidate at least a portion of the token. Note that this can still result in the source and destination storage containers sharing data. [00059] In some implementations, an offload provider may initiate sharing data storage locations between all tokens and storage containers that already share the data, and in addition another storage container or token. For example, to serve an offload read, an offload provider can initiate sharing between a font storage container and a token. Then, to serve an offload write using the token, the offload provider can initiate sharing between the source storage container, the token, and the destination storage container. If the token is later invalidated, sharing with the token is stopped, but sharing between the source and destination storage containers can continue (for example, until a write is received that is directed to that data). [00060] As used here, in one implementation, a token provider is part of an offload provider. In this implementation, where a token provider is described as performing actions, it should be understood that the offload provider that includes the token provider is performing these actions. In another implementation, a token provider can be separate from the offload provider. [00061] To initiate a read of offload data from storage 220, initiator 210 may send a request to obtain a token representing the data using a predefined command (e.g., via an API). In response, one or more of the data access components 215 may respond to the initiator 210 by providing one or more tokens representing the data or a subset thereof. A token can be represented by a sequence of bytes which are used to represent immutable data. The immutable data size can be larger, smaller, or the same size as the token. [00062] With a token, the initiator 210 can request that all or portions of the data represented by the token be logically written. Sometimes here this operation is called an offload write. The initiator 210 can do this by sending the token along with one or more offsets and lengths to the data access components 215. [00063] The data access components 215 can be implemented as a storage stack where each layer of the stack can perform a different function. For example, data access components can partition data, split offload read or write requests, cache data, verify data, snapshot data, and the like. [00064] One or more layers of the stack may be associated with a token provider. The token provider may include one or more components that can generate or obtain tokens representing portions of the data from storage 220 and provide these tokens to an initiator. [00065] For a portion of an offload write, for a token involved, a relative token offset may be indicated as well as a relative destination offset. Either or both offsets can be implicit or explicit. A token relative offset can represent a number of bytes (or other units) from the beginning of data represented by the token, for example. A destination relative offset can represent a number of bytes (or other units) from the start of data at the destination. A length can indicate a number of bytes (or other units) starting at the offset. [00066] If a data access component 215 fails an offload read or write, an error code may be returned that allows another data access component or initiator to try another mechanism to read or write the data. [00067] FIGURE 3 is a block diagram that generally represents an exemplary arrangement of system components in which a token provider is hosted by the device hosting the storage. As illustrated, system 305 includes initiator 210 and storage 220 of FIGURE 2. Data access components 215 of FIGURE 3 are divided between data access components 310 residing on device 330 hosting initiator 210 and data access components 315 that reside on device 335 that hosts storage 220. In another embodiment, where storage 220 is external to device 335, there may be additional data access components that provide access to storage 220. [00068] Device 335 can be considered to be an example of an offload provider as this device includes components to perform offload reads and writes and manage tokens. [00069] The 320 token provider can generate, validate, and invalidate tokens. For example, when initiator 210 requests a token for data in storage 220, token provider 320 can generate a token representing the data. This token can then be sent back to initiator 210 via data access components 310 and 315. [00070] In conjunction with generating a token, the token provider 320 can create an entry in token store 325. This entry can associate the token with data that indicates where on the store 220 the data represented by the token can be found . The input may also include other data used in managing the token such as when to invalidate a token, a lifetime for the token, other data, and the like. [00071] When the 210 initiator or any other entity provides the token to the 320 token provider, the 320 token provider can perform a query on the 325 token store to determine if the token exists. If the token exists and is valid, the token provider 320 can provide the location information to the data access components 315 so that these components can logically read or write or logically perform other operations on the data as requested. [00072] In another exemplary arrangement similar to FIGURE 3, token provider 320 and token store 325 may be included in device 330, and data access components 310 connected to token provider 320. For example, a system of Device operation (OS) 330 may include token provider 320 and token store 325. In this example, initiator 210 may assume the existence of a token provider and token store for all copies performed by initiator 210. With this assumption, initiator 210 can be implemented to omit code that returns to normal reading and writing. [00073] In the example above, the OS can implement read offload logically by reading the requested data from the data access components 315 and storing the data in the storage (volatile or non-volatile) of the device 330, creating a new token value, and associating the newly created token value with the read data. The OS can implement offload writing by copying (eg, logically writing) the data associated with the token to the destination specified by initiator 210. In this example, initiator 210 may need to retry a copy in the offload read step in some cases. scenarios, but this retry can be less cumbersome for the initiator than returning to normal reading and writing. [00074] FIGURE 4 is a block diagram that generally represents another exemplary environment in which aspects of the subject described here can be implemented. As illustrated, the environment includes a source initiator 405, a target initiator 406, a source storage container 410, a target storage container 411, a source physical store 415, a target physical store 416, a provider offload 420, and may include other components (not shown). [00075] Source initiator 405 and target initiator may be implemented similarly to initiator 210 of FIGURE 2. Source initiator 405 and target initiator 406 may be two separate entities or a single entity. [00076] If the source storage container 410 and the destination storage container 411 are implemented by a single system, the offload provider 420 can be implemented as one or more components of the system that implement the storage containers. If the source storage container 410 and the destination storage container 411 are implemented by different systems, the offload provider 420 may be implemented as one or more components that are distributed across the systems that implement the storage containers. [00077] Furthermore, there can be more than two instances of storage containers and physical stores. For example, for a given token obtained from a source, there may be more than one destination specified. For example, multiple offload writes can be issued which refer to a single token, and each offload write can successfully target any destination known to the offload provider 420. [00078] Source physical storage 415 and destination physical storage 416 can be the same storage or different storage. These physical stores store physical data that support the source and destination storage containers, and can also support the data represented by the tokens. [00079] Although illustrated as having only one storage container between the initiator and the physical storage, as previously mentioned, in other embodiments there may be multiple layers of storage containers between the initiator and the physical storage. [00080] The 405 font initiator can obtain a token by issuing an offload read. In response, the offload provider 420 can generate a token and provide it to the source initiator 405. [00081] If the source initiator 405 and the target initiator 406 are separate entities, the source initiator 405 may provide the token to the target initiator 406. The target initiator 406 may then use the token to issue a write of offload to destination storage container 411. [00082] Upon receipt of the offload write request, the offload provider 420 can validate the token and logically write data to the destination storage container 411 as indicated by the offload write request. EXTENDING TOKEN SIZE [00083] With offload technology, a standard or industry can dictate a certain fixed token size. For various reasons, some implementers may want a size that is larger than the default fixed size. [00084] To accommodate larger token sizes, the default can be modified to allow multiple tokens. A token larger than the fixed size can then be represented by multiple subtokens smaller than the fixed size. For example, a standard requires a token to be 512 bytes long. In an implementation for this pattern, the subtokens can each be exactly 512 bytes long while the largest token can be greater than 512 bytes (eg, 995, 2000, 4096, or some other number of bytes). [00085] FIGURE 5 is a diagram illustrating an exemplary scheme for representing a larger token with one or more smaller subtokens in accordance with aspects of the subject matter described herein. As illustrated, an exemplary large 505 token can have standard required fields H, a provider ID P, random data R, provider data V, and other data X. [00086] The H pattern required field can include any required or other fields specified by a pattern. For example, the H pattern required fields can include one or more of: data indicating when a token was generated, data indicating when the token is supposed to expire, data indicating where a token came from, or other data specified by a pattern . [00087] Provider ID P can indicate an instance of an offload provider that generated the token. The provider ID P can be used in a threshold test to determine whether the token should be ignored or not. If the provider ID P is not a provider ID that would have been provided by the offload provider, the offload provider may reject the token in full. Otherwise, the offload provider may take additional actions to validate the token. [00088] Vendor data V can include any data that a vendor implementing an offload provider might want. As an example, a provider might include addressing information that indicates an address of an offload provider that provided the 505 token. As other examples, provider V data might include a hash key, a synopsis, a lookup key, metadata, data relating to the raw data, data that helps identify or locate portions of the raw data, other data, or the like. [00089] The other X data can include any other data that is included in the 505 token. [00090] Subtokens can be transmitted over virtually any protocol. For example, in one example, subtokens can be transmitted over a Small Computer System Interface (SCSI) protocol. In another example, the subtokens can be transmitted over a file sharing protocol that transfers file data via server message blocks. An exemplary file sharing protocol includes the Server Message Block (SMB) protocol. In another example, subtokens can be passed through a distributed file system protocol that relies on remote procedure calls to access files. An example of a protocol based on remote procedure calls includes the Network File System (NFS) protocol. [00091] The examples not above are not intended to be fully inclusive or exhaustive of protocols that may be used. Indeed, based on the teachings herein, those skilled in the art can recognize many other protocols that can be used without departing from the spirit or scope of aspects of the subject matter described herein. [00092] Subtokens 510-515 can be tokens of a fixed size (eg dictated by default) that represent token 505. Subtokens 510-515 can include multiple fields. For example, a subtoken can include fields (H0, HN1, H...) required by a pattern, a provider ID field (P), a token ID (T), string data (S0, SN1, S ...), a number that indicates how many subtokens represent the 505 token, and data that corresponds to the data of the 505 token. This other data is represented by H, R0 to RN1, V0 to VN2, and X0 to XN3, where H corresponds standard required fields H in token 505, H0 through HN1 correspond to random data R in token 505, V0 through VN2 correspond to provider data V in token 505, and X0 through XN3 correspond to other X data in token 505. [00093] Fields (H0, HN1, H...) can include any data required or otherwise specified by a pattern. These can include, for example, a header or other fields specified by any version of the SCSI protocol. The fields (H0, HN1, H...) can occur before and/or after any other fields indicated in FIGURE 5. [00094] Where the SCSI protocol is used, the fields (H0, HN1, H...) can include, for example, a header or other fields specified by any version of the SCSI protocol. Some exemplary fields include: token creation timestamp, token type (e.g. point-in-time copy), source address, data identifying a token type representation of data, data identifying each of the subtokens as a token to transfer raw data without requiring the raw data to pass through an initiator of a command that requested the transfer, other fields specified by the SCSI protocol, or the like. [00095] Where other protocols are used the fields (H0, HN1, H...) can include, for example, fields required or allowed by these protocols. In an implementation, the fields (H0, HN1, H...) can be omitted at all. [00096] In some implementations, the fields (H0, HN1, H...) may also include, for example, the above data types with respect to the standard H required fields of the 505 token. [00097] Provider ID P can indicate an instance of an offload provider that generated the token and can be used in the same way as above. [00098] The token ID T can be data that identifies a subtoken as belonging to a group of subtokens that represent a larger token. For example, a token ID of "ABCD" in each of the T fields of subtokens 510-515 can identify subtokens 510-515 as belonging to a group of subtokens representing token 505. If a subtoken has a different token ID , the offload provider may determine that the subtoken is not part of the group of subtokens representing the 505 token. [00099] Sequence data (S0, SN1, S...) may include data indicating an ordering of the subtokens. For example, string data can include an increasing number (eg, 1, 2, 3, 4, etc.) that indicates an order of subtokens. The order can be used to combine subtokens 510-515 to reconstruct token 505 or its portions. [000100] In one implementation, the data from the fields of subtokens 510-515 can be combined to build all the data included in the 505 token. For example, in this implementation, the combined data of subtokens 510-515 can include at least the data included in the 505 token. [000101] In another implementation, the 510-515 subtokens do not include all the data that is included in the 505 token. For example, the 510-515 subtokens may include enough data to identify (for example, through a lookup table or other data structure) data in the 505 token. For example, subtokens 510-515 can be combined to get R and address information. R and the address information can then be used by an offload provider to query the other information included in the 505 token. [000102] In another example, one or more of the subtokens 510-515 may include data that can be used to map to the random data R. In this example, the random data R cannot be reconstructed from the data found only in the subtokens 510-515 , but the random data R can be found (for example, in a lookup table) from the random data included in one or more of the subtokens 510-515. In this example, other data (for example, the 505 token address data) may be included in one or more of the 510-515 subtokens. The address data can then be used to find a mapping table, for example, which can be used to find the other data included in the 505 token. [000103] A similar mechanism can also be used to find other omitted data that is not physically found in subtokens 510-515, but can be found using data that maps to the omitted data. [000104] In one example, one of the subtokens (sometimes referred to here as the master subtoken) may include all R random data while the other subtokens may not include any data that corresponds to the R random data. In another example, the subtokens 510-515 can each include data corresponding to the random data R. [000105] Various mechanisms can be used to validate the 505 token. In one example, after the 505 token is reconstructed from subtokens 510-515, a bitwise comparison is performed to determine if the 505 token is exactly a token generated by the offload provider. If the bits in the token are the same as the bits found for a token that has R in the token store, the 505 token can be determined to be valid. [000106] In another example, a synopsis of the 505 token can be computed and the synopsis can be compared to synopsis of tokens generated by the offload provider. In this example, a synopsis can be selected that has little or no chance of colliding with other synopses. In this example, if the synopsis equals a synopsis of a token generated by the offload provider, the 505 token can be determined to be valid. [000107] In another example, the 505 token can be determined to be valid if R equals an R of a token stored by the offload provider. [000108] In one implementation, the larger 505 token is a token that is provided and actually exists and is implemented as one or more data structures. The larger token 505 can be physically split into multiple subtokens 510 which can also be recombined to form the larger token 505. [000109] In another implementation, the larger 505 token comprises a virtual offload token that logically includes the fields illustrated for the 505 token, but where all the fields may not actually be in the same data structure. In this implementation, the 505 token does not pass through a period where a single chunk of data includes all fields of the 505 token. Instead, the subtokens 510-515 include data that matches the 505 token (or data usable to find token 505) but subtokens 510-515 are not actually combined to form a monolithic chunk of data that includes the fields of token 505. Likewise, in this implementation, token 505 is not first created and then split into subtokens 510-515 The larger 505 token is referred to as a virtual offload token because it does not physically exist independently of subtokens 510-515, but exists virtually in the data of subtokens 510-515. It should be understood that when the 505 token is described here that both implementations are contemplated. [000110] FIGURE 6 is a block diagram representing an exemplary arrangement of components of a system in which aspects of the subject described herein may operate. As illustrated, the system includes an initiator 605, a source storage stack 610, a target storage stack 611, a splitter/injector 615, a combiner/extractor 616, and an offload provider 630. [000111] The offload provider 630 as illustrated is separated into a source offload provider 635 and a destination offload provider 636 to indicate that the offload provider 630 components can be on different machines that communicate with each other to perform the functions of the 630 offload provider. In another example, however, the 635 source offload provider and the 636 target offload provider can be merged and placed on a single computer. In one implementation, the source offload provider 635 and the destination offload provider 636 are different total offload providers that can negotiate the transmission of offload data in response to an offload write command. [000112] Initiator 605 initiates an offload read or write. In one example, the initiator 605 can be separated into a source initiator and target initiator (as illustrated in FIGURE 4) where the source initiator initiates an offload read and obtains multiple subtokens in response to this and then provides the subtokens to the target initiator which subsequently initiates an offload write. In another example, the initiator 605 can directly initiate both the offload read and the offload write. [000113] It should be understood that an offload write is an offload write regardless of form. For example, transferring a token to a different machine which in turn issues an offload write is really just a different way for an offload read initiator to initiate an offload write. [000114] The source storage stack 610 and the destination storage stack 611 can each be implemented by one or more components arranged in layers where each layer can perform a different function. [000115] Splitter/injector 615 may include one or more components. The splitter/injector 615 may receive a read offload command from the font storage stack 610. In response, the splitter/injector 615 may send a read offload command to the font offload provider 635. In response to the command offload read, the 635 font offload provider can provide a large token. After receiving a large token, the splitter/injector 615 can split the token into a plurality of smaller tokens and provide these smaller tokens to the font storage stack 610. The subtokens can, for example, be a fixed standardized size as mentioned above. . [000116] In one implementation, an offload read command may include a number that indicates how many subtokens can be provided in response to the offload read. This number can originate from initiator 605 or a component of font storage stack 610. [000117] If the splitter/injector 615 determines that the number is large enough, the splitter/injector 615 can provide the subtokens as requested by the font storage stack 610. Otherwise, in one example, the splitter/injector 615 may return a message that indicates how many subtokens are needed to respond to the offload read request. In another example, the divider/injector 615 might return an error that the number is not large enough and might allow the initiator 605 to try a higher number if the initiator 605 determines to do so. [000118] In another implementation, an offload read command may omit a number that indicates how many subtokens can be provided in response to the offload read. In this implementation, the component sending the offload read command may request subtokens until the splitter/injector 615 indicates that all subtokens for the offload read command have been provided. [000119] In another implementation, the splitter/injector 615 may indicate a number of subtokens that were generated in response to the offload read command. The component that sent the offload read command can then be responsible for getting the 615 splitter/injector subtokens. [000120] On an offload write command with multiple subtokens, the initiator 605 can send the subtokens to the destination storage stack 611 which can send the subtokens to combiner/extractor 616. Combiner/extractor 616 can then combine subtokens into a single large token and provide the single large token to the target offload provider 636. [000121] Subtokens can be provided in a single message or in multiple messages depending on the implementation. [000122] In one implementation, splitter/injector 615 can be combined with source offload provider 635 and combiner/extractor 616 can be combined with target offload provider 636. In at least this implementation, splitter/ injector 615 can inject data from a virtual offload token into subtokens while combiner/extractor 616 can extract data from subtokens without the larger token ever existing with a physical data structure. [000123] FIGURES 7-9 are flowcharts that generally represent exemplary actions that may occur according to aspects of the subject described here. For simplicity of explanation, the methodology described in conjunction with FIGURES 7-9 is presented and described as a series of acts. It should be understood and appreciated that the subject matter described herein is not limited by the acts illustrated and/or the order of acts. In one embodiment, the acts occur in an order as described below. In other modalities, however, the acts may occur in parallel, in another order, and/or with other acts not presented and described here. Furthermore, not all illustrated acts may be required to implement the methodology in accordance with aspects of the subject described herein. Furthermore, those skilled in the art will understand and appreciate that the methodology could alternatively be represented as a series of interrelated states via a state diagram or as events. [000124] FIGURE 7 is a flowchart that generally represents exemplary actions that can occur at a destination offload provider according to the subject aspects described here. At block 705, actions begin. [000125] At block 710, a message is received that indicates that two or more subtokens represent a larger token. The subtokens are each of a fixed size (for example, a size specified by a pattern). The larger token is larger in size than the fixed size. This means that the larger token included data is more than can fit in one of the subtokens. Data that matches the larger token is held by an offload provider. Data can be held in a single data structure that matches the larger token, or in multiple data structures (eg, that are not merged). The larger token represents data that is immutable while the data in the larger token is valid. [000126] For example, referring to FIGURE 6, combiner/extractor 616 may receive subtokens from target storage stack 611. Subtokens may be provided by initiator 605 in conjunction with an offload write directed to target storage stack 611. [000127] In block 715, data data is extracted from subtokens. Extracting the data can include, for example, combining the subtokens into a larger token before getting the data, or getting the data from the subtokens without combining the subtokens into a larger token. For example, referring to FIGURE 6, combiner/extractor 616 can combine/extract data from subtokens. For example, some of the extracted data might include a number that associates the token with the data that the token represents. This number is sometimes referred to as a key. [000128] At block 720, the key is obtained from one or more of the subtokens. For example, referring to FIGURE 6, after the combiner/extractor 616 combines the subtokens to form a larger token, the target offload provider 636 can obtain the key of the larger token. As another example, without physically combining the data from the subtokens, the combiner/extractor 616 can extract the key of a virtual token (eg, one or more of the subtokens) without physically combining all the data from the subtokens. [000129] At block 725, an evidence of the key is provided for an offload provider component. Using evidence, the key can be validated as part of block 725 actions or as a separate set of actions. Providing evidence of the key may include, for example:1. Provide your own key; 2. Provide the key and other data (one or more fields) of the larger token;3. Provide a synopsis (eg a hash function) of the key;4. Provide a synopsis derived from the key and other data (one or more fields) of the larger token; or 5. Provide others with evidence of the key and/or larger token. [000130] FIGURE 8 is a flowchart that they generate generally represents exemplary actions that can occur in a font offload provider according to the aspects of the subject described here. At block 805, actions begin. [000131] At block 810, an offload read request is received. For example, referring to FIGURE 6, font offload provider 635 receives an offload read request initiated by initiator 605. [000132] At block 815, in response to the offload read message, a key is generated to return in response to the offload read message. The key is placed in a token (physical or virtual), the data of which will be placed in subtokens to return in response to the offload read message. For example, referring to FIGURE 6, the font offload provider 635 can generate a token that includes the key. [000133] At block 820, token data is split/injected into subtokens. For example, referring to FIGURE 6, the splitter/injector 615 takes the data from the token generated in block 815 and splits/injects the data into subtokens which are provided to the font storage stack 610 for provision to the initiator 605. [000134] At block 825, key evidence is received. For example, referring to FIGURE 6, a font offload provider component 635 receives key evidence. In one example, this evidence may be received as the offload provider 630 obtains the key of subtokens received from combiner/extractor 616. In another example, an offload provider component at a target of an offload write (for example, the target offload provider 636) can obtain the key included in the subtokens, read an address contained therein, use the address to contact a component (e.g. source offload provider 635) of the offload provider that generated the key, and provide the key to the component. In another example, a target offload provider that is a different offload provider than the source offload provider may receive the key and addressing information, contact the source offload provider, and provide the key. Using the evidence, the key can be validated as part of block 825 actions or as a separate set of actions. [000135] At block 830, raw data corresponding to the token is provided. For example, referring to FIGURE 6, source offload provider 635 may provide a portion or all of the raw data that corresponds to the token to destination offload provider 636. [000136] In block 835, other actions, if any, can be performed. [000137] FIGURE 9 is a flowchart that generally represents exemplary actions that can occur in an offload initiator according to aspects of the subject described here. At block 905, actions begin. [000138] At block 910, an offload read request is initiated to communicate with a component of a font storage stack. For example, referring to FIGURE 6, initiator 605 may send an offload read request to font storage stack 610. In conjunction with the offload read request, a number may be sent that indicates a maximum number of subtokens. which are allowed to be returned in response to the offload read request. [000139] At block 915, in response to the message, subtokens are received. Subtokens represent a token (physical or virtual) that is larger than any of the subtokens individually. The larger token represents data that is immutable as long as the larger token is valid. For example, referring to FIGURE 6, in response to the offload read request, the initiator receives multiple subtokens. In conjunction with receiving the subtokens, a number may be received that indicates how many subtokens were generated in response to the offload read request. [000140] At block 920, the initiator provides the subtokens for a component of a target storage stack. For example, referring to FIGURE 6, the initiator 605 provides the subtokens for a component of the destination storage stack 611. [000141] In block 925, other actions, if any, can be performed. [000142] As can be seen from the detailed description above, aspects related to the offload technology were described. While aspects of the subject matter described herein are susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described in detail above. It should be understood, however, that there is no intention to limit the aspects of the claimed subject to the specific forms described, but rather, the intention is to cover all modifications, alternative constructions, and equivalents that fall within the spirit and scope of the various aspects. of the subject described here.
权利要求:
Claims (8) [0001] 1. Method implemented by at least one computer, the method comprising: receiving (710) two or more subtokens, each of a fixed size, characterized in that the subtokens together represent a larger token of a size greater than the fixed size , where the data corresponding to the larger token is held by a transfer provider, the larger token represents the raw data which is immutable as long as the larger token is valid, the provider being an entity that provides indirect access to the raw data; combine (715) data from the two or more subtokens to create the larger token, the two or more subtokens including at least all data included in the larger token; get (720) a key of the larger token; and provide (725) evidence of the key to a component of the transfer provider, at least to obtain a portion of the raw data represented by the larger token without the portion of the raw data passing through an initiator that provided the subtokens. [0002] 2. Method according to claim 1, characterized in that obtaining (720) of the key comprises obtaining a cryptographically secure number of one or more of the subtokens and also comprises obtaining addressing information of one or more of the subtokens, the addressing information identifying a source from which the raw data represented by the larger token can be obtained. [0003] 3. Method according to claim 1, characterized in that the subtokens are each exactly 512 bytes and one or more of the subtokens include a field required by a standard, the field identifying a representation of the data token type. [0004] 4. Method according to claim 1, characterized in that the subtokens are transmitted through a file sharing protocol that transfers file data through server message blocks. [0005] 5. Method according to claim 1, characterized in that the subtokens are transmitted through a distributed file system protocol that is based on remote procedure calls to access files. [0006] 6. System, in a computing environment, comprising: one or more computers implementing an offload provider (420), the offload provider (420) being an entity providing indirect access to raw data, and a splitter/injector ( 615), one or more computers having computer storage elements structured to store a method characterized in that it comprises: receiving a download read message initiated by an initiator (605), the download read message being directed to allow the initiator (605) obtains a token representing raw data from a store; in response to the offload read message, generating a key and providing subtokens (510-515), each subtoken (510-515) of a fixed size, the subtokens (510-515) together representing a larger token (505) of a size larger than the fixed size, where the data corresponding to the larger token (505) is held by the offload provider (420), the token n largest (505) representing the raw data which is immutable as long as the largest token (505) is valid, the largest token (505) including the key, where the key is a number that associates the largest token (505) with the raw data represented by the larger token (505), and where the data combination of two or more subtokens (519 -515) creates the larger token (505), the two or more subtokens (510-515) including at least all the data included in the larger token (505). [0007] 7. Computer storage medium having a method characterized in that it comprises: initiating an offload read request by communicating with a component of a source storage stack (610), the offload read request being directed to allow an initiator (605) to obtain a token representing raw data from a store; in response to the offload read request, receiving subtokens (510-515), the subtokens (510-515) together representing a larger token (505) which is larger than any of the subtokens (510-515) individually, the larger token (505) representing the raw data which is immutable as long as the larger token (505) is valid; einitiating a write transfer request by supplying the subtokens (510-515) to a target storage stack (611), the write transfer request being directed to allow an initiator (605) to cause an offload provider ( 420) write some or all of the raw data represented by the larger token (505), the larger token (505) including a key, where the key is a number that associates the larger token (505) with the raw data represented by the larger token (505), and where combining data from two or more subtokens (519-515) creates the larger token (505), the two or more subtokens (510-515) including at least all data included in the larger token ( 505). [0008] 8. Computer storage medium, according to claim 7, characterized in that it also comprises, together with the download reading request, sending a number that indicates a maximum number of subtokens (510-515) that may be returned in response to the offload read request.
类似技术:
公开号 | 公开日 | 专利标题 BR112015011935B1|2022-01-11|METHOD, SYSTEM AND STORAGE MEDIA TO COMPATIBLELY EXTEND THE OFFLOAD TOKEN SIZE BR112015027040B1|2022-01-25|Method, computing device and computer storage medium US9817582B2|2017-11-14|Offload read and write offload provider TWI582593B|2017-05-11|Sector map-based rapid data encryption policy compliance US9606748B2|2017-03-28|Importing pre-existing data of a prior storage solution into a storage pool for use with a new storage solution US9071585B2|2015-06-30|Copy offload for disparate offload providers US20060112267A1|2006-05-25|Trusted platform storage controller US11153094B2|2021-10-19|Secure data deduplication with smaller hash values JP6324494B2|2018-05-16|Storage system and alias memory US10210191B2|2019-02-19|Accelerated access to objects in an object store implemented utilizing a file storage system US20190238560A1|2019-08-01|Systems and methods to provide secure storage US20170039164A1|2017-02-09|Extending remote direct memory access operations for storage class memory access US10860481B2|2020-12-08|Data recovery method, data recovery system, and computer program product US11243899B2|2022-02-08|Forced detaching of applications from DMA-capable PCI mapped devices US9442860B2|2016-09-13|Providing record level sharing | to individual catalogs US10268384B2|2019-04-23|File transfers between machines without target CPU intervention US20160048582A1|2016-02-18|Dynamic alternate keys for use in file systems utilizing a keyed index US20160004442A1|2016-01-07|Managing a storage system US11016684B1|2021-05-25|System and method for managing data and metadata where respective backing block devices are accessed based on whether request indicator indicates the data or the metadata and accessing the backing block devices without file system when the request indicator is not included in request US10868805B2|2020-12-15|Enhanced management of passwords for printing applications and services US10678463B2|2020-06-09|Storage management method, device and computer-readable medium US20210149863A1|2021-05-20|Systems and methods for improving indexer performance by multiplexing data of an underlying index US11283604B2|2022-03-22|Sharing encrypted data with enhanced security by removing unencrypted metadata US20160352517A1|2016-12-01|Sharing encrypted data with enhanced security
同族专利:
公开号 | 公开日 US9251201B2|2016-02-02| EP2932692B1|2017-02-01| BR112015011935A8|2019-10-08| WO2014093952A1|2014-06-19| RU2015122660A|2016-12-27| US20140172811A1|2014-06-19| BR112015011935A2|2017-07-11| JP6420253B2|2018-11-07| JP2016505960A|2016-02-25| CN104995895A|2015-10-21| CN104995895B|2019-04-19| RU2672789C2|2018-11-19| EP2932692A1|2015-10-21|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 US5043866A|1988-04-08|1991-08-27|International Business Machines Corporation|Soft checkpointing system using log sequence numbers derived from stored data pages and log records for database recovery| US5355477A|1991-12-23|1994-10-11|International Business Machines Corporation|Method for updating a block using record-level locks by committing the update if the block has not been updated by another process otherwise spinning| JPH06215160A|1992-08-25|1994-08-05|Texas Instr Inc <Ti>|Method and apparatus for data processing| US5528594A|1994-12-22|1996-06-18|International Business Machines Corporation|Method and system for implementing sub-tokens on a token ring network| US5668958A|1995-09-12|1997-09-16|International Business Machines Corporation|Heterogeneous filing system with common API and reconciled file management rules| US6275867B1|1995-09-12|2001-08-14|International Business Machines Corporation|Operation-partitioned off-loading of operations in a distributed environment| US6161145A|1997-05-08|2000-12-12|International Business Machines Corporation|Updating server-related data at a client| US8631066B2|1998-09-10|2014-01-14|Vmware, Inc.|Mechanism for providing virtual machines for use by multiple users| US6141705A|1998-06-12|2000-10-31|Microsoft Corporation|System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed| US6434620B1|1998-08-27|2002-08-13|Alacritech, Inc.|TCP/IP offload network interface device| US6304983B1|1998-09-30|2001-10-16|International Business Machines Corporation|Checkpoint logging without checkpoint display device availability| US6385701B1|1999-11-19|2002-05-07|International Business Machines Corporation|Method, system and program products for sharing data between varied clients using token management| US7412462B2|2000-02-18|2008-08-12|Burnside Acquisition, Llc|Data repository and method for promoting network storage of data| US6785743B1|2000-03-22|2004-08-31|University Of Washington|Template data transfer coprocessor| US6804755B2|2000-06-19|2004-10-12|Storage Technology Corporation|Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme| EP1179793A1|2000-08-09|2002-02-13|Indatex GmbH|Portal for providers of financial services| US7475199B1|2000-10-19|2009-01-06|Emc Corporation|Scalable network file system| US7895445B1|2001-04-26|2011-02-22|Nokia Corporation|Token-based remote data access| US6961055B2|2001-05-09|2005-11-01|Free Radical Design Limited|Methods and apparatus for constructing virtual environments| US6697881B2|2001-05-29|2004-02-24|Hewlett-Packard Development Company, L.P.|Method and system for efficient format, read, write, and initial copy processing involving sparse logical units| US20040139125A1|2001-06-05|2004-07-15|Roger Strassburg|Snapshot copy of data volume during data access| US6938002B2|2001-06-20|2005-08-30|International Business Machines Corporation|System and method for product evaluation| US7016982B2|2002-05-09|2006-03-21|International Business Machines Corporation|Virtual controller with SCSI extended copy command| US7107385B2|2002-08-09|2006-09-12|Network Appliance, Inc.|Storage virtualization by layering virtual disk objects on a file system| US20040049603A1|2002-09-05|2004-03-11|International Business Machines Corporation|iSCSI driver to adapter interface protocol| US7121456B2|2002-09-13|2006-10-17|Visa U.S.A. Inc.|Method and system for managing token image replacement| US7340486B1|2002-10-10|2008-03-04|Network Appliance, Inc.|System and method for file system snapshot of a virtual logical disk| WO2004046957A2|2002-11-15|2004-06-03|Creo Inc.|Methods and systems for sharing data| US7167905B2|2003-01-31|2007-01-23|Sierra Wireless, Inc.|Token-based Web browsing with visual feedback of disclosure| US7194462B2|2003-02-27|2007-03-20|Bea Systems, Inc.|Systems and methods for implementing an XML query language| JP4271967B2|2003-03-10|2009-06-03|株式会社日立製作所|Distributed file system and distributed file system operation method| US7406501B2|2003-03-24|2008-07-29|Yahoo! Inc.|System and method for instant messaging using an e-mail protocol| US7461080B1|2003-05-09|2008-12-02|Sun Microsystems, Inc.|System logging within operating system partitions using log device nodes that are access points to a log driver| US20040267672A1|2003-06-26|2004-12-30|Gray William J.|System and method for conducting secure electronic transactions| US7373548B2|2003-08-29|2008-05-13|Intel Corporation|Hardware recovery in a multi-threaded architecture| DE60309706T2|2003-09-19|2007-03-29|Harman Becker Automotive Systems Gmbh|Data transmission interface| US7698361B2|2003-12-31|2010-04-13|Microsoft Corporation|Lightweight input/output protocol| US7633955B1|2004-02-13|2009-12-15|Habanero Holdings, Inc.|SCSI transport for fabric-backplane enterprise servers| JP4646526B2|2004-02-18|2011-03-09|株式会社日立製作所|Storage control system and control method thereof| US8042163B1|2004-05-20|2011-10-18|Symatec Operating Corporation|Secure storage access using third party capability tokens| US7512721B1|2004-05-25|2009-03-31|Qlogic, Corporation|Method and apparatus for efficient determination of status from DMA lists| US7383405B2|2004-06-30|2008-06-03|Microsoft Corporation|Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity| EP1650923B1|2004-10-22|2011-05-18|Software AG|Authentication method and devices| US7464124B2|2004-11-19|2008-12-09|International Business Machines Corporation|Method for autonomic data caching and copying on a storage area network aware file system using copy services| US20080104039A1|2004-11-24|2008-05-01|Linda Lowson|System and method for resource management| US7275139B1|2004-12-02|2007-09-25|Tormasov Alexander G|Secure deletion of information from hard disk drive| US7603555B2|2004-12-07|2009-10-13|Microsoft Corporation|Providing tokens to access extranet resources| US7565526B1|2005-02-03|2009-07-21|Sun Microsystems, Inc.|Three component secure tunnel| US8370819B2|2005-03-25|2013-02-05|Microsoft Corporation|Mechanism to store information describing a virtual machine in a virtual disk image| US7475167B2|2005-04-15|2009-01-06|Intel Corporation|Offloading data path functions| US8713180B2|2005-06-22|2014-04-29|Cisco Technology, Inc.|Zero-copy network and file offload for web and application servers| US7480908B1|2005-06-24|2009-01-20|Azul Systems, Inc.|Segmented virtual machine transport mechanism| JP4776307B2|2005-08-31|2011-09-21|株式会社日立製作所|Storage system, data transfer method and program| US7617216B2|2005-09-07|2009-11-10|Emc Corporation|Metadata offload for a file server cluster| US7725620B2|2005-10-07|2010-05-25|International Business Machines Corporation|Handling DMA requests in a virtual memory environment| US7877485B2|2005-12-02|2011-01-25|International Business Machines Corporation|Maintaining session states within virtual machine environments| US7676607B2|2005-12-08|2010-03-09|Electronics And Telecommunications Research Institute|Hardware acceleration apparatus for iSCSI target system using TOE and method for performing read/write command using the apparatus| US7702843B1|2006-04-27|2010-04-20|Vmware, Inc.|Determining memory conditions in a virtual machine| US7653794B2|2006-05-08|2010-01-26|Microsoft Corporation|Converting physical machines to virtual machines| US8332370B2|2006-05-09|2012-12-11|Hewlett-Packard Development Company, L.P.|Maintaining commonly named client-specific file content in hard disk drive emulation| US20080065835A1|2006-09-11|2008-03-13|Sun Microsystems, Inc.|Offloading operations for maintaining data coherence across a plurality of nodes| US8082231B1|2006-09-22|2011-12-20|Emc Corporation|Techniques using identifiers and signatures with data operations| US7765361B2|2006-11-21|2010-07-27|Microsoft Corporation|Enforced transaction system recoverability on media without write-through| US8239674B2|2006-11-21|2012-08-07|Kabushiki Kaisha Toshiba|System and method of protecting files from unauthorized modification or deletion| US8213583B2|2006-11-22|2012-07-03|Verizon Patent And Licensing Inc.|Secure access to restricted resource| US7778020B2|2006-12-06|2010-08-17|Fusion Multisystems, Inc.|Apparatus, system, and method for a modular blade| US8495292B2|2006-12-06|2013-07-23|Fusion-Io, Inc.|Apparatus, system, and method for an in-server storage area network| US9189265B2|2006-12-21|2015-11-17|Vmware, Inc.|Storage architecture for virtual machines| US20080155051A1|2006-12-23|2008-06-26|Simpletech, Inc.|Direct file transfer system and method for a computer network| US7941812B2|2007-01-30|2011-05-10|Hewlett-Packard Development Company, L.P.|Input/output virtualization through offload techniques| US8397038B2|2007-03-22|2013-03-12|Vmware, Inc.|Initializing file data blocks| US8347373B2|2007-05-08|2013-01-01|Fortinet, Inc.|Content filtering of remote file-system access protocols| US7831720B1|2007-05-17|2010-11-09|Chelsio Communications, Inc.|Full offload of stateful connections, with partial connection offload| US7886115B2|2007-07-13|2011-02-08|Hitachi Global Storage Technologies Netherlands, B.V.|Techniques for implementing virtual storage devices| US7730034B1|2007-07-19|2010-06-01|Amazon Technologies, Inc.|Providing entity-related data storage on heterogeneous data repositories| US7801852B2|2007-07-31|2010-09-21|Oracle International Corporation|Checkpoint-free in log mining for distributed information sharing| US7694105B2|2007-08-22|2010-04-06|Hitachi Global Storage Technologies Netherlands, B.V.|Data storage systems that implement sector sets| EP2238535A4|2007-12-20|2011-03-09|Virtual Computer Inc|Virtual computing management systems and methods| US8051111B2|2008-01-31|2011-11-01|Prowess Consulting, Llc|Method and system for modularizing windows imaging format| WO2009103824A1|2008-02-18|2009-08-27|Microelectronica Española S.A.U.|Secure data transfer| US20090248835A1|2008-03-31|2009-10-01|Subhankar Panda|Offloading data transfers between a local and remote network| US8074014B2|2008-03-31|2011-12-06|Microsoft Corporation|Storage systems using write off-loading| US8745336B2|2008-05-29|2014-06-03|Vmware, Inc.|Offloading storage operations to storage hardware| US20090327621A1|2008-06-27|2009-12-31|Microsoft Corporation|Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager| JP5146174B2|2008-07-28|2013-02-20|富士通株式会社|Virtual machine monitor device and program, and virtual machine memory sharing management method| US8307177B2|2008-09-05|2012-11-06|Commvault Systems, Inc.|Systems and methods for management of virtualization data| US9323681B2|2008-09-18|2016-04-26|Avere Systems, Inc.|File storage system, cache appliance, and method| US8086585B1|2008-09-30|2011-12-27|Emc Corporation|Access control to block storage devices for a shared disk based file system| US7904914B2|2008-09-30|2011-03-08|Microsoft Corporation|On-the-fly replacement of physical hardware with emulation| US8250267B2|2008-10-31|2012-08-21|Netapp, Inc.|Control I/O offload in a split-path storage virtualization system| TWI405211B|2008-11-04|2013-08-11|Phison Electronics Corp|Flash memory storage system, controller and data protecting method thereof| US8566821B2|2008-11-11|2013-10-22|Netapp Inc.|Cloning virtual machines| TWI393143B|2008-12-05|2013-04-11|Phison Electronics Corp|Flash memory storage system, and controller and method for anti-falsifying data thereof| US8443166B2|2009-03-06|2013-05-14|Vmware, Inc.|Method for tracking changes in virtual disks| US8370835B2|2009-03-12|2013-02-05|Arend Erich Dittmer|Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device| US8397046B2|2009-03-26|2013-03-12|Hitachi, Ltd.|Method and apparatus for deploying virtual hard disk to storage system| WO2010138628A1|2009-05-28|2010-12-02|Marvell World Trade Ltd.|Metadata management for virtual volumes| US8281149B2|2009-06-23|2012-10-02|Google Inc.|Privacy-preserving flexible anonymous-pseudonymous access| WO2011023134A1|2009-08-28|2011-03-03|Beijing Innovation Works Technology Company Limited|Method and system for managing distributed storage system through virtual file system| WO2011038352A1|2009-09-26|2011-03-31|Cisco Technology, Inc.|Providing offloads in a communication network| US8627000B2|2010-02-08|2014-01-07|Microsoft Corporation|Virtual disk manipulation operations| US9147081B2|2010-07-27|2015-09-29|Infinidat Ltd.|Method of access control to stored information and system thereof| US20120079583A1|2010-09-23|2012-03-29|Microsoft Corporation|Offload reads and writes| US20120079229A1|2010-09-28|2012-03-29|Craig Jensen|Data storage optimization for a virtual platform| US20120102561A1|2010-10-26|2012-04-26|International Business Machines Corporation|Token-based reservations for scsi architectures| US9092149B2|2010-11-03|2015-07-28|Microsoft Technology Licensing, Llc|Virtualization and offload reads and writes| US20120144501A1|2010-12-03|2012-06-07|Salesforce.Com, Inc.|Regulating access to protected data resources using upgraded access tokens| US9146765B2|2011-03-11|2015-09-29|Microsoft Technology Licensing, Llc|Virtual disk storage techniques| US20120324560A1|2011-06-17|2012-12-20|Microsoft Corporation|Token data operations| US20130041985A1|2011-08-10|2013-02-14|Microsoft Corporation|Token based file operations| US20130179959A1|2012-01-05|2013-07-11|Microsoft Corporation|Zero Token| US9817582B2|2012-01-09|2017-11-14|Microsoft Technology Licensing, Llc|Offload read and write offload provider| US9071585B2|2012-12-12|2015-06-30|Microsoft Technology Licensing, Llc|Copy offload for disparate offload providers|US9092149B2|2010-11-03|2015-07-28|Microsoft Technology Licensing, Llc|Virtualization and offload reads and writes| US9146765B2|2011-03-11|2015-09-29|Microsoft Technology Licensing, Llc|Virtual disk storage techniques| US9054992B2|2011-12-27|2015-06-09|Solidfire, Inc.|Quality of service policy sets| US9838269B2|2011-12-27|2017-12-05|Netapp, Inc.|Proportional quality of service based on client usage and system metrics| US9817582B2|2012-01-09|2017-11-14|Microsoft Technology Licensing, Llc|Offload read and write offload provider| US9380114B1|2013-06-27|2016-06-28|Emc Corporation|Techniques for peer messaging across multiple storage processors of a data storage array| US10205666B2|2013-07-29|2019-02-12|Ampere Computing Llc|End-to-end flow control in system on chip interconnects| US9798728B2|2014-07-24|2017-10-24|Netapp, Inc.|System performing data deduplication using a dense tree data structure| JP6189267B2|2014-08-20|2017-08-30|株式会社東芝|Information processing apparatus, method, and program| US9671960B2|2014-09-12|2017-06-06|Netapp, Inc.|Rate matching technique for balancing segment cleaning and I/O workload| US10133511B2|2014-09-12|2018-11-20|Netapp, Inc|Optimized segment cleaning technique| US9836229B2|2014-11-18|2017-12-05|Netapp, Inc.|N-way merge technique for updating volume metadata in a storage I/O stack| US9720601B2|2015-02-11|2017-08-01|Netapp, Inc.|Load balancing technique for a storage array| US9762460B2|2015-03-24|2017-09-12|Netapp, Inc.|Providing continuous context for operational information of a storage system| US9710317B2|2015-03-30|2017-07-18|Netapp, Inc.|Methods to identify, handle and recover from suspect SSDS in a clustered flash array| US9740566B2|2015-07-31|2017-08-22|Netapp, Inc.|Snapshot creation workflow| US10929022B2|2016-04-25|2021-02-23|Netapp. Inc.|Space savings reporting for storage system supporting snapshot and clones| US10642763B2|2016-09-20|2020-05-05|Netapp, Inc.|Quality of service policy sets| CN110837633B|2019-10-16|2021-10-08|支付宝信息技术有限公司|Intelligent certificate implementation method and system and readable storage medium|
法律状态:
2018-11-21| B06F| Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]| 2020-08-18| B06U| Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]| 2021-10-26| B09A| Decision: intention to grant [chapter 9.1 patent gazette]| 2022-01-11| B16A| Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]|Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 14/12/2013, OBSERVADAS AS CONDICOES LEGAIS. |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 US13/714,413|US9251201B2|2012-12-14|2012-12-14|Compatibly extending offload token size| US13/714,413|2012-12-14| PCT/US2013/075212|WO2014093952A1|2012-12-14|2013-12-14|Compatibly extending offload token size| 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|