In some embodiments, an object store is an internet-scale, high-performance storage platform that offers reliable and cost-efficient data durability. The object store can store an unlimited amount of unstructured data of any content type, including analytic data and rich content, like images and videos.
Aspects of the present disclosure relate generally to a computing environment, and more particularly to a system and method for performing a shallow copy.
An illustrative embodiment disclosed herein is an apparatus including a processor having programmed instructions to create a global region that is associated with a first bucket partition and a second bucket partition different from the first bucket partition, provide, to the global region, region information of a source region in which a source object is stored, create a destination region in which a destination object is stored, and provide, to the destination region, from the global region, the region information of the source region. In some embodiments, the source region is in the first bucket partition and the destination region is in the second bucket partition.
In some embodiments, the programmed instructions further cause the processor to copy, from the source object to the destination object, object metadata using the region information of the source region. In some embodiments, the region information of the source region includes a bucket identifier, a partition identifier, and a region identifier. In some embodiments, the programmed instructions further cause the processor to determine that the destination region is in a different partition than the partition of the source region, and create the global region in response to determining that the destination region is in the different partition than the partition of the source region. In some embodiments, providing, to the global region, the region information of the source region includes creating a pointer pointing from the global region to the source region, and providing, to the destination region, from the global region, the region information of the source region includes creating a pointer pointing from the destination region to the global region. In some embodiments, the programmed instructions further cause the processor to determine that the global region points to the source region in response to deletion of the source object in the source region, and, based on the determination, preserve the source region, such that a memory of the source region is not reclaimed. In some embodiments, the region information of the source region includes a physical disk location.
Another illustrative embodiment disclosed herein is a non-transitory computer readable storage medium including instructions stored thereon that, when executed by a processor, cause the processor to create a global region that is associated with a first bucket partition and a second bucket partition different from the first bucket partition, provide, to the global region, region information of a source region in which a source object is stored, create a destination region in which a destination object is stored, and provide, to the destination region, from the global region, the region information of the source region. In some embodiments, the source region is in the first bucket partition and the destination region is in the second bucket partition.
In some embodiments, the programmed instructions further cause the processor to copy, from the source object to the destination object, object metadata using the region information of the source region. In some embodiments, the region information of the source region includes a bucket identifier, a partition identifier, and a region identifier. In some embodiments, the programmed instructions further cause the processor to determine that the destination region is in a different partition than the partition of the source region, and create the global region in response to determining that the destination region is in the different partition than the partition of the source region. In some embodiments, providing, to the global region, the region information of the source region includes creating a pointer pointing from the global region to the source region, and providing, to the destination region, from the global region, the region information of the source region includes creating a pointer pointing from the destination region to the global region. In some embodiments, the programmed instructions further cause the processor to determine that the global region points to the source region in response to deletion of the source object in the source region, and, based on the determination, preserve the source region, such that a memory of the source region is not reclaimed. In some embodiments, the region information of the source region includes a physical disk location.
Another illustrative embodiment disclosed herein is a method including creating a global region that is associated with a first bucket partition and a second bucket partition different from the first bucket partition, providing, to the global region, region information of a source region in which a source object is stored, creating a destination region in which a destination object is stored, and providing, to the destination region, from the global region, the region information of the source region. In some embodiments, the source region is in the first bucket partition and the destination region is in the second bucket partition.
In some embodiments, the method includes causing the processor to copy, from the source object to the destination object, object metadata using the region information of the source region. In some embodiments, the region information of the source region includes a bucket identifier, a partition identifier, and a region identifier. In some embodiments, the method includes determining that the destination region is in a different partition than the partition of the source region, and creating the global region in response to determining that the destination region is in the different partition than the partition of the source region. In some embodiments, providing, to the global region, the region information of the source region includes creating a pointer pointing from the global region to the source region, and providing, to the destination region, from the global region, the region information of the source region includes creating a pointer pointing from the destination region to the global region. In some embodiments, the method includes determining that the global region points to the source region in response to deletion of the source object in the source region, and, based on the determination, preserving the source region, such that a memory of the source region is not reclaimed. In some embodiments, the region information of the source region includes a physical disk location.
Further details of aspects, objects, and advantages of the disclosure are described below in the detailed description, drawings, and claims. Both the foregoing general description and the following detailed description are exemplary and explanatory, and are not intended to be limiting as to the scope of the disclosure. Particular embodiments may include all, some, or none of the components, elements, features, functions, operations, or steps of the embodiments disclosed above. The subject matter which can be claimed comprises not only the combinations of features as set out in the attached claims but also any other combination of features in the claims, wherein each feature mentioned in the claims can be combined with any other feature or combination of other features in the claims. Furthermore, any of the embodiments and features described or depicted herein can be claimed in a separate claim and/or in any combination with any embodiment or feature described or depicted herein or with any of the features of the attached claims.
The foregoing and other features of the present disclosure will become apparent from the following description and appended claims, taken in conjunction with the accompanying drawings. Understanding that these drawings depict only several embodiments in accordance with the disclosure and are, therefore, not to be considered limiting of its scope, the disclosure will be described with additional specificity and detail through use of the accompanying drawings.
In the following detailed description, reference is made to the accompanying drawings, which form a part hereof. In the drawings, similar symbols typically identify similar components, unless context dictates otherwise. The illustrative embodiments described in the detailed description, drawings, and claims are not meant to be limiting. Other embodiments may be utilized, and other changes may be made, without departing from the spirit or scope of the subject matter presented here. It will be readily understood that the aspects of the present disclosure, as generally described herein, and illustrated in the figures, can be arranged, substituted, combined, and designed in a wide variety of different configurations, all of which are explicitly contemplated and make part of this disclosure.
In some embodiments lacking the improvements disclosed herein, a copy object application programming interface (API) is implemented as a deep object copy, meaning that the underlying object data is copied. A deep copy can be an inefficient copy mechanism that wastes a significant amount of cluster throughput, especially when copying large objects. In particular, deep copies can be costly with Hadoop workloads or any legacy application that might use file system “move” semantics. What is needed is to perform a shallow copy, which is a metadata-only copy, to improve copy workflow latency and avoid unnecessarily consuming additional storage.
Disclosed herein are embodiments of a system and method for performing a shallow copy of an object. In some embodiments, a region location is copied from a source object to a destination object. Advantageously, object data of the source object need not be copied. The shallow copy speeds up copy time and reduces an amount of storage consumed. In some embodiments, in translating file system operations to object storage operations, such as translating a move operation to a copy operation and a delete operation, the shallow copy can be used to implement the copy operation. In some embodiments, the shallow copy can be used to implement a native object copy operation. Additionally, shallow copying can be applied to composable objects.
In some embodiments, objects are partitioned into different bucket partitions. Each bucket partition has its own garbage collection workflow. In some embodiments lacking the improvements disclosed herein, implementing shallow copies across bucket partitions results in the underlying object data being deleted after garbage collection is performed on the reference bucket partition. After the underlying object data is deleted, the destination object can be left with dangling pointers and no underlying object data to point to. What is needed is a shallow copy implementation that does not result in deletions of the underlying object data or dangling pointers.
Disclosed herein are embodiments of a system and method for performing a shallow copy of an object across bucket partitions. In some embodiments, a global region is created that is associated with multiple bucket portions. In some embodiments, the global region points to the source region in the source bucket partition. In some embodiments, a destination region in the destination bucket partition is created that points to the global region. In some embodiments, via the global region, the source object can be copied to the destination object using source region information provided via the global region. Advantageously, embodiments of the system and method are compliant with the metadata being separated by bucket partitions and allow for cross reference across partitions without permitting dangling pointers or expensive data copies.
The object store 105 can have a flat hierarchy (e.g., no directory, sub-folders, or sub-buckets). The object store 105 can have a single namespace or a unique namespace for each of multiple tenants (e.g., users). Objects can be managed using a representational state transfer (RESTful) application programming interface (API) build on hypertext transfer protocol (HTTP) verbs (e.g., standard HTTP verbs such as GET, PUT, DELETE). Users can define object names when they upload an object. The object store 105 can prepend an object store namespace string and a bucket name to the object name. A directory structure can be simulated by adding a prefix string that includes a forward slash.
In some embodiments, the object store environment 100 includes the object store 105 and a vdisk controller 110 coupled to the object store 105. The vdisk controller 110 can be executed in a hypervisor that virtualizes resources of one or more nodes (e.g., hosts, machines, servers, storage nodes, hyperconverged nodes, etc.). The vdisk controller 110 can be executed in user space or kernel space of the hypervisor. The vdisk controller 110 can be executed in a virtual machine or container. In some embodiments, the object store 105 includes an object controller 115, a region manager 120, a metadata service 125, and a metadata store 130.
The object controller 115 may include a processor having programmed instructions (hereinafter, the object controller 115 may include programmed instructions) to receive and serve object requests from a client, including requests to create, read, write, and delete. The object controller 115 may serve object requests corresponding to multiple buckets or bucket partitions. The client object request may be in accordance with REST API protocol. The client object request may include parameters associated with the object such as an object identifier, a bucket identifier, and/or a bucket partition identifier.
The object controller 115 may include programmed instructions to store any object data associated with the client request in memory. The memory may on the node that is hosting the object controller 115. The memory may be physical or virtual. In some embodiments, the object controller 115 maintains a checksum for the object data. In some embodiments, the object controller 115 computes an MD5sum of the data.
The object controller 115 may include programmed instructions to send a request to the region manager 120 to allocate a region (e.g. a space/portion/chunk of one or more vdisks) to a bucket. The allocated region may be allocated for writing and reading objects of the bucket. Responsive to the region manager 120 allocating the region to the bucket, an endpoint vdisk controller, such as the vdisk controller 110, or a component thereon, may include programmed instructions to write to and read from the region. The object controller 115 may include programmed instructions to send a request to the region manager 120 to receive an identifier of (and/or identifier of a node associated with) the endpoint vdisk controller for requesting vdisk reads and vdisk writes.
Once the endpoint vdisk controller is determined, the object controller 115 may include programmed instructions to send a request to the endpoint vdisk controller. The endpoint vdisk controller may be the vdisk controller that hosts the vdisk. The request may include a request to open the vdisk, to read an object from the vdisk, and/or to write an object to the vdisk. In some embodiments, the object controller 115 populates metadata associated with the object and writes the metadata to a metadata server (e.g. the metadata service 125 and/or the metadata store 130). The metadata may include an object identifier, a bucket identifier, a region identifier, a partition identifier, an object handle, an object key, an object key-value pair, a life-cycle policy, a retention policy, other object or region attributes, a vdisk location and/or identifier, and/or a physical disk location and/or identifier, among others.
The object controller 115 may include programmed instructions to send a second request to the region manager 120 to close the region. Responsive to the region being in a closed state, the endpoint vdisk controller may deny further write requests from the object controller 115. The object controller 115 may include programmed instructions to request vdisk reads of closed vdisks from a second vdisk controller, for example, through a proxy vdisk controller on the second vdisk controller.
The region manager 120 may include a processor having programmed instructions (hereinafter, the region manager 120 may include programmed instructions) to manage region allocations for a cluster of one or more vdisks. The region manager 120 may include programmed instructions to load balance vdisk allocations across vdisk controllers and region allocations across vdisks. The region manager 120 may include programmed instructions to provide APIs for region allocation to the object controller 115.
In some embodiments, the region manager 120 runs as a part of a metadata service acting in a master slave model where all the region allocations and vdisk allocations are handled centrally by the master. The object controller 115 may issue remote procedure calls (RPCs) to the region manager 120 to perform a region allocation. In some embodiments, the region manager 120 runs inside an object store 105 process. In some embodiments, region manager 120 running inside the object store 105 process handles vdisk allocations and region allocations for the object store 105 locally.
The metadata service 125 may include a processor having programmed instructions (hereinafter, the metadata service 125 may include programmed instructions) to serve requests for looking up/reading) or writing (e.g., updating) metadata associated with an object read request or an object write request from the object controller 115, respectively. The metadata service 125 may be assigned to metadata of objects that reside in a subset of buckets or bucket partitions. The metadata service 125 may include programmed instructions to serve the metadata update request by storing the metadata in a data structure in the metadata store 130. The metadata service 125 may include programmed instructions to serve the metadata lookup or update request by looking up or updating a metadata entry that is located at an index in the data structure in the metadata store 130. The index may be a key derived from a hash of one or more object parameters associated with the object. The metadata service 125 may receive from the object controller 115 the index associated with the metadata lookup.
The metadata store 130 is a log-structured-merge (LSM) based key-value store including key-value data structures in memory and/or persistent storage. The data structures may be implemented as indexed arrays including metadata entries and corresponding indices. The indices may be represented numerically or strings. Each metadata entry includes a key-value pair including a key and one or more values. The key may be a hash of an object handle associated with an object whose metadata is stored in the metadata entry. The object handle may include the object identifier, the bucket identifier, the bucket partition identifier, and the like. The data structures may be implemented as separate arrays for each object. The data structures may be implemented as multi-dimensional arrays, where each object is assigned to a row and each version of the object is assigned to a column in that row. In some embodiments, the metadata store 130 stores metadata in persistent storage by sending a request to the vdisk controller 110 to write the metadata to a vdisk. In some embodiments, the metadata store 130 reads metadata from the persistent storage by sending a request to the vdisk controller 110 to read the metadata from the vdisk.
Although one object store 105, one vdisk controller 110, one object controller 115, one region manager 120, one metadata service 125, and one metadata store 130 are shown in the object store environment 100, in other embodiments, greater than any of the one vdisk controller 110, one object controller 115, one region manager 120, one metadata service 125, and one metadata store 130 may be used.
In some embodiments, the bucket 202 includes metadata 210. In some embodiments, the metadata 210 includes object info 212 (e.g., object metadata) of the object 204. The object info 212 can include attributes of the object data 206. For example, the object info 212 includes region location 214 (e.g., one or more of a partition identifier, a bucket identifier, a region identifier), the object handle, time stamps (e.g., time created, time of expiry), policies (e.g., object life-cycle policy, retention policy), a check sum, permissions, a key (e.g., including a partition identifier, a bucket identifier), a key-value pair, etc. In some embodiments, the region location 214 points to (e.g., identifies, locates, etc.) the region 208, or a portion thereof, as shown with pointer 218. A pointer here can refer to an address or other reference where the data of interest (e.g., the object data 206) can be found. In some embodiments, a location of the object data 206 can be determined from the region location 214. In some embodiments, a garbage collection workflow includes scanning all of the region locations (e.g., the region location 214) in a bucket partition and using the region locations to reclaim space partially or completely from the regions (e.g., the region 208) in that partition. Bucket partitions are further described with respect to
In some embodiments, the metadata 210 includes region info 216. Region info 216 can include attributes of the region 208. For example, the region info 216 includes one or more attributes of the region location 214, time stamps, policies (e.g., region life-cycle policy, retention policy), a check sum, permissions, etc. In some embodiments, the region info 216 points to the region 208 as shown with pointer 220. In some embodiments, a location of the object data 206 can be determined from the region info 216.
The bucket partition 301 includes the bucket 202 of
Garbage collection is a process in which memory of a region is reclaimed after an object (e.g., object metadata) or its associated region (e.g., region metadata) is deleted. In some embodiments, if object 204 (e.g., object info 212) is deleted, garbage collection is not triggered to reclaim memory of the region 208 since there is a reference in the partition 301 to the region 208.
In some embodiments, the bucket partition 351 includes a global region 370 and global region info 372, which can include attributes of the global region 370. A global region info can be region metadata that isn't associated with any one partition-bucket pair. In some embodiments, the region info 366 associated with the region 358 includes a pointer to the global region info (see pointer 374). In some embodiments, the region info 226 includes a pointer to a global region (see pointer 376). Region info 226 can include region attributes such as life-cycle and retention policies. In some embodiments, the global region info 372 includes a pointer to the region info 226 (see pointer 378). The pointer 378 can be referred to as a back-pointer. Global region info 372 can include metadata that represents physical data locations. Global region info 372 can be stored as a separate column family (e.g., in the metadata store 130) than that of region info 366 or region info 226.
The region info 226 and the region info 366 can be referred to as pointer region info or symlink region info. The region info 226 and the region info 366 can act as proxies for a region in a different partition. In some embodiments, via the pointer represented by 378, the region info 226 can provide a location of the region 208 (e.g., the object data 206) to the global region info 372 and, via the pointer represented by 374, the global region info 372 can provide a location of the region 208 (e.g., the object data 206) to the region info 366. The object info 362 can be copied from the object info 212 using the region info 366.
In some embodiments, if the object 204 is deleted but the object 354 has not yet been deleted, garbage collection is not triggered to reclaim memory of the region 208 since the object store 105 (e.g., the region manager 120 or the object controller 115) can detect that the global region 372 still has at least one reference (e.g., the pointer 374, the region info 366, or a pointer from global region info 372 pointing to the region info 366). Therefore, in some embodiments, the object 354 does not include a dangling pointer. In some embodiments, if the object 204 and the object 354 are deleted, the object store 105 determines that the object data in the region is un-referenced, which can trigger garbage collection to reclaim memory of the region 208. In some embodiments, the garbage collection to reclaims memory of the global region 370. In some embodiments, the garbage collection deletes the pointers (e.g., pointer 374, pointer 376, and/or the pointer 378).
In some embodiments, the metadata service 125 grabs a lock of the object 204. This fences (e.g., prevents) any deletes of the object 204. In some embodiments, the metadata service 401 acknowledges and confirms performance of the requested action. In some embodiments, the metadata service 125 looks up the object info 212 to determine that the object 204 is stored in the region 208. In some embodiments, at 406-410, the metadata service 125 facilitates copies/clones region info 226 of the object 204 to preserve object/region metadata locality and avoid dangling pointers.
In some embodiments, at 406, the metadata service 125 sends a request to the metadata service 401 (e.g., of the bucket partition 351) to create a global region 370. In some embodiments, the request is sent/forwarded to a region manager associated with the bucket partition 351. In some embodiments, the metadata service 401 or the region manager acknowledges and confirms performance of the requested action. In some embodiments, the metadata service 125 or the region manager creates an entry in global region info 372 that is a clone of, and having a back-pointer (378) to, the region info 226. In some embodiments the entry in the global region info 372 returns a region identifier. In some embodiments, if an entry of the region info 226 is a pointer 376, the pointer 376 is traversed and returns the global region 370. In some embodiments, the metadata locality of the global region 370 is determined by the region identifier.
In some embodiments, at 408, the metadata service 125 sends a request to the metadata service 401 or the region manager to link the region 208 to the global region 370. In some embodiments, the metadata service 401 or the region manager acknowledges and confirms performance of the requested action. In some embodiments, the metadata service 401 or the region manager converts the region info 216 (e.g., a legacy region info) associated with the region 208 of
In some embodiments, at 410, the metadata service 125 sends a request to the metadata service 401 or the region manager to allocate the linked region 358. In some embodiments, the metadata service 401 or the region manager allocates a region identifier and create a region info 366 that includes an entry that points to the global region 370 (e.g., the global region info 372). In some embodiments, the metadata service 401 or the region manager acknowledges and confirms performance of the requested action.
In some embodiments, at 412, the metadata service 125 sends a request to the metadata service 401 to write object info 362 of the object 354. In some embodiments, the metadata service 401 acknowledges and confirms performance of the requested action. In some embodiments, the metadata service 401 writes the object info 362 using the region info 226 (e.g., global region info 372, region info 366, etc.) of the region 208. In some embodiments, the metadata service 401 locates the object info 212 using the region info of the region 208 and copies the object info 212 to the object info 362. In some embodiments, the metadata service 125 acknowledges and confirms performance of the shallow copy to the object controller 115.
In some embodiments, at operation 505, a processor (e.g., a processor associated with the object store 105) determines whether a source object and a destination object are in a same bucket partition. In some embodiments, at operation 510, responsive to determining that the source object and destination object are in the same bucket partition, the processor performs one or more of the operations of the method 600 described below. In some embodiments, at operation 515, responsive to determining that the source object and destination object are not in the same bucket partition, the processor performs one or more of the operations of the method 700 described below. In some embodiments, the processor determines whether the source object is below a threshold amount of data. In some embodiments, responsive to determining whether the source object is below the threshold amount of data, the processor performs a deep copy.
In some embodiments, at operation 605, a processor (e.g., a processor associated with the object store 105) copies, from a source object (e.g., object 204) to a destination object (e.g., object 304), a location identifier (e.g., the region location 214) identifying a location of a region in which the source object is stored, wherein the source object and the destination object are in a same bucket partition. In some embodiments, copying the region location 214 generates a region location 314 in the destination object. In some embodiments, the location identifier includes a bucket identifier, a partition identifier, and a region identifier. In some embodiments, at operation 610, the processor copies, from the source object to the destination object, object metadata using the location identifier.
In some embodiments, at operation 705, a processor (e.g., a processor associated with the object store 105) creates a global region (e.g., global region 370) that is associated with multiple bucket partitions (e.g., the bucket partitions 301 and 351). In some embodiments, at operation 710, the processor provides, to the global region, region information of (e.g., associated with) a source region (e.g., the region 208) in which a source object (e.g., object 204) is stored. In some embodiments, the region information of the source region includes a bucket identifier, a partition identifier, and a region identifier. In some embodiments, at operation 715, the processor creates a destination region (e.g., region 358) in which a destination object (e.g., object 354) is stored. In some embodiments, the destination region is created in a different (e.g., separate) partition (e.g., partition 351) than a partition (e.g., partition 301) that includes the source region. In some embodiments, at operation 720, the processor provides, to the destination region, from the global region, the region information (e.g., region info 226) of the source region. In some embodiments, the processor copies, from the source object to the destination object, object metadata (e.g., object info 212) using the region information of the source region.
The central processing unit 818 is any logic circuitry that responds to and processes instructions fetched from the main memory unit 820. The central processing unit 818 can be provided by a microprocessor unit. The computing device 800 can be based on any of these processors, or any other processor capable of operating as described herein. The central processing unit 818 can utilize instruction level parallelism, thread level parallelism, different levels of cache, and multi-core processors. A multi-core processor can include two or more processing units on a single computing component.
Main memory unit 820 can include one or more memory chips capable of storing data and allowing any storage location to be directly accessed by the microprocessor 818. Main memory unit 820 can be volatile and faster than storage 836 memory. Main memory units 820 can be Dynamic random access memory (DRAM) or any variants, including static random access memory (SRAM). The memory 820 or the storage 836 can be non-volatile; e.g., non-volatile read access memory (NVRAM). The memory 820 can be based on any type of memory chip, or any other available memory chips. In the example depicted in
A wide variety of I/O devices 828 can be present in the computing device 800. Input devices 828 can include keyboards, mice, trackpads, trackballs, touchpads, touch mice, multi-touch touchpads and touch mice, microphones, multi-array microphones, drawing tablets, cameras, or other sensors. Output devices 828 can include video displays, graphical displays, speakers, headphones, or printers.
I/O devices 828 can have both input and output capabilities, including, e.g., haptic feedback devices, touchscreen displays, or multi-touch displays. Touchscreen, multi-touch displays, touchpads, touch mice, or other touch sensing devices can use different technologies to sense touch, including, e.g., capacitive, surface capacitive, projected capacitive touch (PCT), in-cell capacitive, resistive, infrared, waveguide, dispersive signal touch (DST), in-cell optical, surface acoustic wave (SAW), bending wave touch (BWT), or force-based sensing technologies. Some multi-touch devices can allow two or more contact points with the surface, allowing advanced functionality including, e.g., pinch, spread, rotate, scroll, or other gestures. Some touchscreen devices, including, e.g., Microsoft PIXELSENSE or Multi-Touch Collaboration Wall, can have larger surfaces, such as on a table-top or on a wall, and can also interact with other electronic devices. Some I/O devices 828, display devices 830 or group of devices can be augmented reality devices. The I/O devices can be controlled by an I/O controller 822 as shown in
In embodiments, display devices 830 can be connected to I/O controller 822. Display devices can include, e.g., liquid crystal displays (LCD), electronic papers (e-ink) displays, flexile displays, light emitting diode displays (LED), or other types of displays. In some embodiments, display devices 830 or the corresponding I/O controllers 822 can be controlled through or have hardware support for OPENGL or DIRECTX API or other graphics libraries. Any of the I/O devices 828 and/or the I/O controller 822 can include any type and/or form of suitable hardware, software, or combination of hardware and software to support, enable or provide for the connection and use of one or more display devices 830 by the computing device 800. For example, the computing device 800 can include any type and/or form of video adapter, video card, driver, and/or library to interface, communicate, connect or otherwise use the display devices 830. In embodiments, a video adapter can include multiple connectors to interface to multiple display devices 830.
The computing device 800 can include a storage device 836 (e.g., one or more hard disk drives or redundant arrays of independent disks) for storing an operating system or other related software, and for storing application software programs such as any program related to the systems, methods, components, modules, elements, or functions depicted in
The computing device 800 can include a network interface 834 to interface to the network through a variety of connections including, but not limited to, standard telephone lines LAN or WAN links (e.g., 802.11, T1, T3, Gigabit Ethernet, Infiniband), broadband connections (e.g., ISDN, Frame Relay, ATM, Gigabit Ethernet, Ethernet-over-SONET, ADSL, VDSL, BPON, GPON, fiber optical including FiOS), wireless connections, or some combination of any or all of the above. Connections can be established using a variety of communication protocols (e.g., TCP/IP, Ethernet, ARCNET, SONET, SDH, Fiber Distributed Data Interface (FDDI), IEEE 802.11a/b/g/n/ac/ax, CDMA, GSM, WiMax and direct asynchronous connections). The computing device 800 can communicate with other computing devices 800 via any type and/or form of gateway or tunneling protocol e.g. Secure Socket Layer (SSL), Transport Layer Security (TLS) or QUIC protocol. The network interface 834 can include a built-in network adapter, network interface card, PCMCIA network card, EXPRESSCARD network card, card bus network adapter, wireless network adapter, USB network adapter, modem or any other device suitable for interfacing the computing device 800 to any type of network capable of communication and performing the operations described herein.
A computing device 800 of the sort depicted in
The computing device 800 can be any workstation, telephone, desktop computer, laptop or notebook computer, netbook, ULTRABOOK, tablet, server, handheld computer, mobile telephone, smartphone or other portable telecommunications device, media playing device, a gaming system, mobile computing device, or any other type and/or form of computing, telecommunications or media device that is capable of communication. The computing device 800 has sufficient processor power and memory capacity to perform the operations described herein. In some embodiments, the computing device 800 can have different processors, operating systems, and input devices consistent with the device.
In embodiments, the status of one or more machines (e.g., machines associated with the object store 105) in the network can be monitored as part of network management. In embodiments, the status of a machine can include an identification of load information (e.g., the number of processes on the machine, CPU and memory utilization), of port information (e.g., the number of available communication ports and the port addresses), or of session status (e.g., the duration and type of processes, and whether a process is active or idle). In another of these embodiments, this information can be identified by a plurality of metrics, and the plurality of metrics can be applied at least in part towards decisions in load distribution, network traffic management, and network failure recovery as well as any aspects of operations of the present solution described herein.
The processes, systems and methods described herein can be implemented by the computing device 800 in response to the CPU 818 executing an arrangement of instructions contained in main memory 820. Such instructions can be read into main memory 820 from another computer-readable medium, such as the storage device 836. Execution of the arrangement of instructions contained in main memory 820 causes the computing device 800 to perform the illustrative processes described herein. One or more processors in a multi-processing arrangement may also be employed to execute the instructions contained in main memory 820. Hard-wired circuitry can be used in place of or in combination with software instructions together with the systems and methods described herein. Systems and methods described herein are not limited to any specific combination of hardware circuitry and software.
Although an example computing system has been described in
It is to be understood that any examples used herein are simply for purposes of explanation and are not intended to be limiting in any way.
The herein described subject matter sometimes illustrates different components contained within, or connected with, different other components. It is to be understood that such depicted architectures are merely exemplary, and that in fact many other architectures can be implemented which achieve the same functionality. In a conceptual sense, any arrangement of components to achieve the same functionality is effectively “associated” such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as “associated with” each other such that the desired functionality is achieved, irrespective of architectures or intermedial components. Likewise, any two components so associated can also be viewed as being “operably connected,” or “operably coupled,” to each other to achieve the desired functionality, and any two components capable of being so associated can also be viewed as being “operably couplable,” to each other to achieve the desired functionality. Specific examples of operably couplable include but are not limited to physically mateable and/or physically interacting components and/or wirelessly interactable and/or wirelessly interacting components and/or logically interacting and/or logically interactable components.
With respect to the use of substantially any plural and/or singular terms herein, those having skill in the art can translate from the plural to the singular and/or from the singular to the plural as is appropriate to the context and/or application. The various singular/plural permutations may be expressly set forth herein for sake of clarity.
It will be understood by those within the art that, in general, terms used herein, and especially in the appended claims (e.g., bodies of the appended claims) are generally intended as “open” terms (e.g., the term “including” should be interpreted as “including but not limited to,” the term “having” should be interpreted as “having at least,” the term “includes” should be interpreted as “includes but is not limited to,” etc.). It will be further understood by those within the art that if a specific number of an introduced claim recitation is intended, such an intent will be explicitly recited in the claim, and in the absence of such recitation no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases “at least one” and “one or more” to introduce claim recitations. However, the use of such phrases should not be construed to imply that the introduction of a claim recitation by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim recitation to disclosures containing only one such recitation, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an” (e.g., “a” and/or “an” should typically be interpreted to mean “at least one” or “one or more”); the same holds true for the use of definite articles used to introduce claim recitations. In addition, even if a specific number of an introduced claim recitation is explicitly recited, those skilled in the art will recognize that such recitation should typically be interpreted to mean at least the recited number (e.g., the bare recitation of “two recitations,” without other modifiers, typically means at least two recitations, or two or more recitations). Furthermore, in those instances where a convention analogous to “at least one of A, B, and C, etc.” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention (e.g., “a system having at least one of A, B, and C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). In those instances where a convention analogous to “at least one of A, B, or C, etc.” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention (e.g., “a system having at least one of A, B, or C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). It will be further understood by those within the art that virtually any disjunctive word and/or phrase presenting two or more alternative terms, whether in the description, claims, or drawings, should be understood to contemplate the possibilities of including one of the terms, either of the terms, or both terms. For example, the phrase “A or B” will be understood to include the possibilities of “A” or “B” or “A and B.” Further, unless otherwise noted, the use of the words “approximate,” “about,” “around,” “substantially,” etc., mean plus or minus ten percent.
The foregoing description of illustrative embodiments has been presented for purposes of illustration and of description. It is not intended to be exhaustive or limiting with respect to the precise form disclosed, and modifications and variations are possible in light of the above teachings or may be acquired from practice of the disclosed embodiments. It is intended that the scope of the disclosure be defined by the claims appended hereto and their equivalents.
This application claims priority to U.S. Provisional Application No. 63/282,094, filed Nov. 22, 2021, which application is hereby incorporated by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
5802309 | Cook et al. | Sep 1998 | A |
5960194 | Choy | Sep 1999 | A |
6209128 | Gerard et al. | Mar 2001 | B1 |
6775673 | Mahalingam et al. | Aug 2004 | B2 |
7260563 | Priyadarshi et al. | Aug 2007 | B1 |
7395279 | Iyengar et al. | Jul 2008 | B2 |
7461912 | Kamiyama et al. | Dec 2008 | B2 |
7653668 | Shelat et al. | Jan 2010 | B1 |
7685109 | Ransil et al. | Mar 2010 | B1 |
7721044 | Chatterjee et al. | May 2010 | B1 |
7774329 | Peddy | Aug 2010 | B1 |
8019732 | Paterson-Jones et al. | Sep 2011 | B2 |
8166128 | Faulkner et al. | Apr 2012 | B1 |
8250033 | De Souter et al. | Aug 2012 | B1 |
8311859 | Patoureaux et al. | Nov 2012 | B2 |
8312027 | Lamb et al. | Nov 2012 | B2 |
8352424 | Zunger et al. | Jan 2013 | B2 |
8429242 | Todd | Apr 2013 | B1 |
8533181 | Hu | Sep 2013 | B2 |
8549518 | Aron et al. | Oct 2013 | B1 |
8554724 | Zunger | Oct 2013 | B2 |
8601473 | Aron et al. | Dec 2013 | B1 |
8683112 | Drobychev et al. | Mar 2014 | B2 |
8799222 | Marathe et al. | Aug 2014 | B2 |
8849759 | Bestler et al. | Sep 2014 | B2 |
8850130 | Aron et al. | Sep 2014 | B1 |
8863124 | Aron | Oct 2014 | B1 |
8930693 | Holt et al. | Jan 2015 | B2 |
8997088 | Gurikar et al. | Mar 2015 | B2 |
9003335 | Lee et al. | Apr 2015 | B2 |
9009106 | Aron et al. | Apr 2015 | B1 |
9043372 | Makkar et al. | May 2015 | B2 |
9043567 | Modukuri et al. | May 2015 | B1 |
9052942 | Barber et al. | Jun 2015 | B1 |
9069708 | Gill et al. | Jun 2015 | B2 |
9069983 | Nijjar | Jun 2015 | B1 |
9110882 | Overell et al. | Aug 2015 | B2 |
9256498 | Leibowitz et al. | Feb 2016 | B1 |
9336132 | Aron et al. | May 2016 | B1 |
9342253 | Muthukkaruppan et al. | May 2016 | B1 |
9350623 | Shadi et al. | May 2016 | B2 |
9405806 | Lysne et al. | Aug 2016 | B2 |
9652265 | Narayanasamy et al. | May 2017 | B1 |
9705970 | Pomerantz et al. | Jul 2017 | B2 |
9747287 | Bhardwaj et al. | Aug 2017 | B1 |
9772866 | Aron et al. | Sep 2017 | B1 |
9805054 | Davis et al. | Oct 2017 | B2 |
10003650 | Shetty et al. | Jun 2018 | B2 |
10095549 | Needham et al. | Oct 2018 | B1 |
10120902 | Erdogan et al. | Nov 2018 | B2 |
10152428 | Alshawabkeh et al. | Dec 2018 | B1 |
10176225 | Naidu et al. | Jan 2019 | B2 |
10296255 | Tummala | May 2019 | B1 |
10380078 | Kumar et al. | Aug 2019 | B1 |
10409837 | Schmidt et al. | Sep 2019 | B1 |
10430084 | Goss et al. | Oct 2019 | B2 |
10528262 | Shmuylovich et al. | Jan 2020 | B1 |
10565230 | Zheng et al. | Feb 2020 | B2 |
10592495 | Shami et al. | Mar 2020 | B1 |
10659520 | Sethuramalingam et al. | May 2020 | B1 |
10691464 | Drego et al. | Jun 2020 | B1 |
10725826 | Sagar et al. | Jul 2020 | B1 |
10740302 | Slik et al. | Aug 2020 | B2 |
10747752 | Krishnaswamy et al. | Aug 2020 | B2 |
10802975 | Gottin et al. | Oct 2020 | B2 |
10915497 | Bono et al. | Feb 2021 | B1 |
11048545 | Kedem | Jun 2021 | B2 |
11086545 | Dayal et al. | Aug 2021 | B1 |
11099938 | Desai et al. | Aug 2021 | B2 |
20010034733 | Prompt et al. | Oct 2001 | A1 |
20020065776 | Calder et al. | May 2002 | A1 |
20020078065 | Agulhon | Jun 2002 | A1 |
20030023587 | Dennis et al. | Jan 2003 | A1 |
20030145310 | Thames et al. | Jul 2003 | A1 |
20030172094 | Lauria et al. | Sep 2003 | A1 |
20030191745 | Jiang et al. | Oct 2003 | A1 |
20040186826 | Choi et al. | Sep 2004 | A1 |
20050273571 | Lyon et al. | Dec 2005 | A1 |
20060041661 | Erickson et al. | Feb 2006 | A1 |
20060047636 | Mohania et al. | Mar 2006 | A1 |
20060080443 | Kruglick et al. | Apr 2006 | A1 |
20060080646 | Aman | Apr 2006 | A1 |
20060161704 | Nystad et al. | Jul 2006 | A1 |
20070088744 | Webber et al. | Apr 2007 | A1 |
20080034307 | Cisler et al. | Feb 2008 | A1 |
20080263222 | Matsuzawa | Oct 2008 | A1 |
20090171697 | Glauser et al. | Jul 2009 | A1 |
20090327621 | Kliot et al. | Dec 2009 | A1 |
20100042673 | Dayley | Feb 2010 | A1 |
20100050173 | Hensbergen | Feb 2010 | A1 |
20100293174 | Bennett et al. | Nov 2010 | A1 |
20110082962 | Horovitz et al. | Apr 2011 | A1 |
20110137966 | Srinivasan et al. | Jun 2011 | A1 |
20110185355 | Chawla et al. | Jul 2011 | A1 |
20110213884 | Ferris et al. | Sep 2011 | A1 |
20110258297 | Nightingale et al. | Oct 2011 | A1 |
20120096052 | Tolia et al. | Apr 2012 | A1 |
20120096205 | Velayudhan et al. | Apr 2012 | A1 |
20120210095 | Nellans et al. | Aug 2012 | A1 |
20120293886 | Abe et al. | Nov 2012 | A1 |
20120331065 | Aho et al. | Dec 2012 | A1 |
20120331243 | Aho et al. | Dec 2012 | A1 |
20130054523 | Anglin et al. | Feb 2013 | A1 |
20130103884 | Cho | Apr 2013 | A1 |
20130198472 | Fang et al. | Aug 2013 | A1 |
20130246431 | Ahuja et al. | Sep 2013 | A1 |
20130332608 | Shiga et al. | Dec 2013 | A1 |
20140095459 | Eshel et al. | Apr 2014 | A1 |
20140115154 | Mack-Crane | Apr 2014 | A1 |
20140173227 | Min et al. | Jun 2014 | A1 |
20140279838 | Tsirogiannis et al. | Sep 2014 | A1 |
20140282626 | Muguda | Sep 2014 | A1 |
20140339117 | Quan et al. | Nov 2014 | A1 |
20140379840 | Dao | Dec 2014 | A1 |
20150012571 | Powell et al. | Jan 2015 | A1 |
20150046586 | Zhang et al. | Feb 2015 | A1 |
20150046600 | Kim | Feb 2015 | A1 |
20150079966 | Govindarajeswaran et al. | Mar 2015 | A1 |
20150208985 | Huang | Jul 2015 | A1 |
20150254325 | Stringham | Sep 2015 | A1 |
20150286413 | Olson et al. | Oct 2015 | A1 |
20150378767 | Tarasuk-Levin et al. | Dec 2015 | A1 |
20160011805 | Nakagawa | Jan 2016 | A1 |
20160048408 | Madhu et al. | Feb 2016 | A1 |
20160092326 | Wu et al. | Mar 2016 | A1 |
20160117226 | Hetrick et al. | Apr 2016 | A1 |
20160162547 | Morris | Jun 2016 | A1 |
20160188407 | Bronnikov et al. | Jun 2016 | A1 |
20160207673 | Shlonsky et al. | Jul 2016 | A1 |
20160275125 | Drobychev et al. | Sep 2016 | A1 |
20160306643 | Klee et al. | Oct 2016 | A1 |
20170075909 | Goodson et al. | Mar 2017 | A1 |
20170091235 | Yammine et al. | Mar 2017 | A1 |
20170109348 | Nagaraj | Apr 2017 | A1 |
20170109421 | Stearn et al. | Apr 2017 | A1 |
20170235764 | Sharpe et al. | Aug 2017 | A1 |
20170235818 | Gorski et al. | Aug 2017 | A1 |
20170242746 | King et al. | Aug 2017 | A1 |
20170344575 | Naylor et al. | Nov 2017 | A1 |
20170351450 | Brandl et al. | Dec 2017 | A1 |
20180165161 | Slater et al. | Jun 2018 | A1 |
20180205791 | Frank et al. | Jul 2018 | A1 |
20180287996 | Tripathy | Oct 2018 | A1 |
20180292999 | Nadkarni | Oct 2018 | A1 |
20180349463 | Bernhardy et al. | Dec 2018 | A1 |
20190004863 | Mainali et al. | Jan 2019 | A1 |
20190050296 | Luo et al. | Feb 2019 | A1 |
20190102256 | Murphy | Apr 2019 | A1 |
20190196885 | Song et al. | Jun 2019 | A1 |
20190207929 | Koorapati et al. | Jul 2019 | A1 |
20190213175 | Kong et al. | Jul 2019 | A1 |
20190213179 | McHugh et al. | Jul 2019 | A1 |
20190227713 | Parthasarathy | Jul 2019 | A1 |
20190243547 | Duggal et al. | Aug 2019 | A1 |
20190286465 | Cui et al. | Sep 2019 | A1 |
20190324874 | Gill et al. | Oct 2019 | A1 |
20190354544 | Hertz et al. | Nov 2019 | A1 |
20190370043 | Olderdissen | Dec 2019 | A1 |
20190370362 | Mainali et al. | Dec 2019 | A1 |
20190384678 | Samprathi et al. | Dec 2019 | A1 |
20190391843 | Franciosi et al. | Dec 2019 | A1 |
20200004570 | Glade et al. | Jan 2020 | A1 |
20200036787 | Gupta et al. | Jan 2020 | A1 |
20200042364 | Kumar Shimoga Manjunatha et al. | Feb 2020 | A1 |
20200104222 | Ramamoorthi et al. | Apr 2020 | A1 |
20200117637 | Roy et al. | Apr 2020 | A1 |
20200195743 | Jiang et al. | Jun 2020 | A1 |
20200201724 | Saito et al. | Jun 2020 | A1 |
20200250044 | Sharma et al. | Aug 2020 | A1 |
20200310859 | Gupta et al. | Oct 2020 | A1 |
20200310915 | Alluboyina et al. | Oct 2020 | A1 |
20200310980 | Gupta | Oct 2020 | A1 |
20200311116 | Anvaripour et al. | Oct 2020 | A1 |
20200314174 | Dailianas et al. | Oct 2020 | A1 |
20200319909 | Jawahar et al. | Oct 2020 | A1 |
20200326876 | Tian | Oct 2020 | A1 |
20200387510 | Ransil et al. | Dec 2020 | A1 |
20200394078 | Taneja et al. | Dec 2020 | A1 |
20210026661 | Sulcer et al. | Jan 2021 | A1 |
20210034350 | Chen et al. | Feb 2021 | A1 |
20210064585 | Chen | Mar 2021 | A1 |
20210072917 | Surla | Mar 2021 | A1 |
20210124651 | Srinivasan et al. | Apr 2021 | A1 |
20210181962 | Dai et al. | Jun 2021 | A1 |
20210294499 | Wang et al. | Sep 2021 | A1 |
20210406224 | Neufeld | Dec 2021 | A1 |
20220067011 | Yue et al. | Mar 2022 | A1 |
Number | Date | Country |
---|---|---|
113406169 | Sep 2021 | CN |
4 006 737 | Jun 2022 | EP |
WO-2020146043 | Jul 2020 | WO |
WO-2021119546 | Jun 2021 | WO |
WO-2021232109 | Nov 2021 | WO |
Entry |
---|
“Adding Objects to Versioning—Enabled Buckets”, from https://docs.aws.amazon.com/AmazonS3/latest/dev/AddingObjectstoVersioningEnabledBuckets.html, (Oct. 2, 2019). |
“Adding objects to versioning-enabled buckets—Amazon Simple Storage Service.pdf,” https://docs.aws.amazon.com/AmazonS3/latest/userguide/AddingObjectstoVersioningEnabledBuckets.html, pp. 1-2. |
“AWS Pricing”; Amazon Web Services; https://aws.amazon.com/pricing/; Webpage accessed on Jun. 23, 2021; pp. 1-9. |
“Cloud & Hosting Services—Building a Cloud Infrastructure”; NetApp; https://www.netapp.com/hybrid-cloud/service-provider-infrastructure/; webpage accessed on Jun. 23, 2021; pp. 1-11. |
“Configure a Pod to Use a ConfigMap”, from https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/,(Oct. 2, 2019). |
“Creating an NFS file share”; AWS Storage Gateway—User Guide; https://docs.aws.amazon.com/storagegateway/latest/userguide/CreatingAnNFSFileShare.html; webpage accessed on Oct. 28, 2020; pp. 1-10. |
“Deployments”, from https://kubernetes.io/docs/concepts/workloads/controllers/deployment/, (Oct. 2, 2019). |
“How to use Indexing to Improve Database Queries,” https://dataschool.com/sql-optimization/how-indexing-works/, pp. 1-12. |
“IT Service Provider Technology Solutions and Services”; HPE—Hewlett Packard; https://www.hpe.com/us/en/solutions/service-providers.html?parentPage=/us/en/solutions/service-providers; Webpage accessed on Jun. 23, 2021; pp. 1-6. |
“Managed VMware Cloud Services”; VMware; https://cloud.vmware.com/providers/managed-services-provider; Webpage accessed on Jun. 23, 2021; pp. 1-5. |
“Managing your storage lifecycle”; Amazon Simple Storage Service; https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html; webpage accessed on Jun. 18, 2021; pp. 1-2. |
“Method:disks.get|Compute Engine Documentation|Google Cloud.pdf,” https://cloud.google.com/compute/docs/reference/rest/v1/disks/get, pp. 1-17. |
“NetApp ONTAP 9.7 Announced—StorageReview.com,” (Jun. 14, 2019), https://www.peakresources.com/netapp-ontap-9-6-release-notes-and-thoughts/, pp. 1-5. |
“Nutanix Solution for Service Providers”; Nutanix, Inc. Solution Brief; https://aemstage.nutanix.cn/viewer?type=pdf&path=/content/dam/nutanix/resources/solution-briefs/sb-service-provider-solution-brief.pdf&icid=67VMYKPR6K6O; 2020; pp. 1-3. |
“Per Virtual Machine Licensing”; VMware Per VM Pricing & Licensing Help; https://www.vmware.com/support/support-resources/licensing/per-vm.html; Webpage accessed on Jun. 23, 2021; pp. 1-7. |
“PUT Object|Cloud Storage|Google Cloud,” https://cloud.google.com/storage/docs/XML-api/put-object, pp. 1-3. |
“Retrieving object versions from a versioning-enabled bucket—Amazon Simple Storage Service.pdf,” https://docs.aws.amazon.com/AmazonS3/latest/userguide/RetrievingObjectVersions.html, pp. 1-3. |
“Retrieving Object Versions”, from https://docs.aws.amazon.com/AmazonS3/latest/dev/RetrievingObjectVersions.html, (Oct. 2, 2019). |
“Set up Cluster Federation with Kubefed—Kubernetes”, from https://v1-14.docs.kubernetes.io/docs/tasks/federation/set-up-cluster-federation-kubefed/, (Apr. 17, 2020). |
“Storage Tiering”; Vmware Docs; https://docs.vmware.com/en/VMware-Validated-Design/5.0/com.vmware.vvd.sddc-design.doc/GUID-20D2BC02-4500-462F-A353-F9B613CC07AC.html; webpage accessed on Jun. 18, 2021; pp. 1-3. |
“SwiftOnFile”; Object Storage-Gluster Docs; v: release3.7.0beta1; https://staged-gluster-docs.readthedocs.io/en/release3.7.0beta1/Administrator%20Guide/Object%20Storage/; webpage accessed on Oct. 28, 2020; pp. 1-2. |
“Transitioning objects using Amazon S3 Lifecycle”; Amazon Simple Storage Service; https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html; Webpage was accessed on Jun. 18, 2021; pp. 1-5. |
“Using Amazon S3 storage classes”; Amazon Simple Storage Service; https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html; Webpage accessed on Jun. 16, 2021; pp. 1-6. |
“Volumes”, from https://kubernetes.io/docs/concepts/storage/volumes/, (Oct. 2, 2019). |
“Xml and More: OCI?Knowing Object Storage Basics” (Jan. 13, 2019), http://xmlandmore.blogspot.com/2019/01/ociknowing-object-storage-basics.html, pp. 1-6. |
Amazon S3, “Retrieving object versions from a versioning-enabled bucket,” https://docs.aws.amazon.com/AmazonS3/latest/userguide/RetrievingObjectVersions.html. |
Amazon Simple Storage Service User Guide API Version Mar. 1, 2006 (Year: 2006). |
B Tree Indexes. http://web.csulb.edu/-amonge/classes/common/db/B TreeIndexes.html, Aug. 4, 2018, pp. 1-7 (2018). |
Ballard, Brit, “Back to Basics: Writing SQL Queries,” (Apr. 21, 2014), https://thoughtbot.com/blog/back-to-basics-sql, 1-17 pages. |
Cano, Ignacio, et al. “Curator: Self-Managing Storage for Enterprise Clusters” (Mar. 27, 2017), from https://www.usenix.org/conference/nsdi17/. |
Dellemc, “Elastic Cloud Storage (ECS),” (Aug. 2017), https://repository.usc.edu/sites/repository.usc.edu/files/ecs_overview.pdf. pages 1-57. |
Dubinsky Leon, “Behind the scenes of Cloud Spanner's ExecuteQuery request|Google Cloud Blog,” (Jan. 7, 2021), https://cloud.google.com/blog/topics/developers-practitioners/behind-the-scenes-of-cloud-spanners-executequery-request, pp. 1-7. |
F5, “Enable Single Namespace for VMware Horizon with View Deployments,” https://www.f5.com/pdf/solution-center/vmware-single-namespace-overview.pdf, pp. 1-2. |
FireEye, “Building Scalable and Responsive Big Data Interfaces with AWS Lambda | AWS Big Data Blog,” (Jul. 10, 2015), https://aws.amazon.com/blogs/big-data/building-scalable-and-responsive-big-data-interfaces-with-aws-lambda/, pp. 1-10. |
Foreign Search Report on EP 21210465.7 Dtd Apr. 14, 2022. |
Foreign Search Report on EP 21210465.7 Dtd Apr. 7, 2022. |
Gowri Balasubramanian; “Should Your DynamoDB Table Be Normalized or Denormalized?”; AWS Database Blog; https://aws.amazon.com/blogs/database/should-your-dynamodb-table-be-normalized-or-denormalized/; Dec.-May 2016; pp. 1-5. |
Guess A.R., “Cloudian HyperStore 7 Multi-Cloud Data Management Unifies Public Cloud and On-Premises Storage—Dataversity,” (Jan. 29, 2018), https://www.dataversity.net/cloudian-hyperstore-7-multi-cloud-data-management-unifies-public-cloud-premises-storage/, pp. 1-4. |
Luis Ayuso; “How to Report Monthly Usage with the Flex Pricing Model”; VMware Cloud Provider Blog; May 20, 2019; pp. 1-6. |
Luis Ayuso; “How to Sign Up for the new VCPP Flex Pricing Model”; VMware Cloud Provider Blog; May 20, 2019; pp. 1-6. |
Luis Ayuso; “New VCPP Pricing Model Simplifies Delivering Services”; VMware Cloud Provider Blog; May 20, 2019; pp. 1-6. |
Michael Bose; “A Guide on How to Mount Amazon S3 as a Drive for Cloud File Sharing”; Nakivo Blog-Cloud-Backup to Cloud; https://www.nakivo.com/blog/mount-amazon-s3-as-a-drive-how-to-guide/; Published Jun. 17, 2020; pp. 1-27. |
Mike Deck; “Building and Maintaining an Amazon S3 Metadata Index without Servers”; AWS Big Data Blog; https://aws.amazon.com/blogs/big-data/building-and-maintaining-an-amazon-s3-metadata-index-without-servers/; Aug.-Dec. 2015; pp. 1-6. |
NetApp, “A Unified Platform for Cloud Storage Infrastructure,” (Oct. 26, 2020), https://cloud.netapp.com/blog/cvo-blg-one-unified-platform-for-cloud-storage-infrastructure-and-data-services, pp. 1-8. |
NetApp, “StorageGRID Solves Your Unstructured Data Management Problems|NetApp Blog,” (Apr. 17, 2019), https://www.netapp.com/blog/storagegrid-solves-your-unstructured-data-management-problems/, pp. 1-6. |
Oracle Multimedia User's Guide, 12c Release 1 (12.1), E17697-09 Jul. 2014 (Year 2014). |
Oracle SQL Developer User's Guide, Release 1.5, E12152-08, Jul. 2014 (Year: 2014); pp. 1-128. |
Patel Kiran, Goynes Eddie, “Lower latency with AWS Elemental MediaStore chunked object transfer|AWS Media Blog,” (Jul. 2, 2019), https://aws.amazon.com/blogs/media/lower-latency-with-aws-elemental-mediastore-chunked-object-transfer/, pp. 1-6. |
Poitras, Steven. “The Nutanix Bible” (Jan. 11, 2014), from http://stevenpoitras.com/the-nutanix-bible/ (Publication date based on indicated capture date by Archive.org; first publication date unknown). |
Poitras, Steven. “The Nutanix Bible” (Oct. 15, 2013), from http://stevenpoitras.com/the-nutanix-bible/ (Publication date based on indicated capture date by Archive.org; first publication date unknown). |
Poitras, Steven. “The Nutanix Bible” (Sep. 17, 2019), from https://nutanixbible.com/. |
Poitras, Steven. “The Nutanix Bible” (Jun. 20, 2014), from http://stevenpoitras.com/the-nutanix-bible/ (Publication date based on indicated capture date by Archive.org; first publication date unknown). |
Poitras, Steven. “The Nutanix Bible” (Jan. 7, 2015), from http://stevenpoitras.com/the-nutanix-bible/ (Publication date based on indicated capture date by Archive.org; first publication date unknown). |
Poitras, Steven. “The Nutanix Bible” (Jun. 9, 2015), from http://stevenpoitras.com/the-nutanix-bible/ (Publication date based on indicated capture date by Archive.org; first publication date unknown). |
Pritchard, Stephen, “Object Storage: On Prem, in the cloud and hybrid,” (Sep. 27, 2018), https://www.computerweekly.com/news/252449283/Object-storage-On-prem-in-the-cloud-and-hybrid, pp. 1-8. |
Rupprecht Lukas, Zhangz Rui, Owen Bill, Pietzuch Peter, Hildebrandz Dean, “SwiftAnalytics: Optimizing Object Storage for Big Data Analytics,” https://lsds.doc.ic.ac.uk/sites/default/files/swift-analytics_ic2e17_crv.pdf, pp. 1-7. |
Sonobuoy Overview, https://sonobuoy.io/docs/v0.56.10/. |
Sonobuoy, “Sonobuoy,” https://sonobuoy.io/, 1-6 pages. |
Stopford. Log Structured Merge Trees. http://www.benstopford.com/2015/02/14/ log-structured-merge-trees, 2015, pp. 1-8 (2015). |
The Nutanix Bible; from https://nutanixbible.com/; accessed on Jan. 12, 2016. |
The Nutanix Bible; from https://nutanixbible.com/; accessed on Jun. 25, 2018. |
The Nutanix Bible; from https://nutanixbible.com/; accessed on Jan. 3, 2017. |
The Nutanix Bible; from https://nutanixbible.com/; accessed on Jan. 3, 2018. |
The Nutanix Bible; from https://nutanixbible.com/; accessed on Sep. 4, 2015. |
The Nutanix Bible; from https://nutanixbible.com/; accessed on Jan. 8, 2019. |
The Nutanix Bible; from https://nutanixbible.com/; accessed on Jun. 8, 2017. |
The Nutanix Bible; from https://nutanixbible.com/; accessed on Jun. 9, 2016. |
VM ware, “VMware Cloud Director Object Storage Extension Documentation.pdf,” https://docs.vmware.com/en/VMware-Cloud-Director-Object-Storage-Extension/index.html, pp. 1-3. |
VMware, “Introducing HCX Enterprise—Cloud Blog—VMware,” (Aug. 8, 2019), https://blogs.vmware.com/cloud/2019/08/08/introducing-hcx-enterprise/, pp. 1-6. |
VMware, “VMware HCX Enterprise: Non-vSphere to vSphere Workload Migration—Cloud Blog—VMware,” (Aug. 8, 2019), https://blogs.vmware.com/cloud/2019/08/08/vmware-hcx-enterprise-non-vsphere-vsphere-workload-migration/, pp. 1-7. |
VMware, “VMware Object Storage Interoperability Service-Development Guide,” (Sep. 2021), https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/docs/vmware-object-storage-interoperability-service-development-guide.pdf, pp. 1-19. |
Wambler, Choosing a Primary Key: Natural or Surrogate? http://www.agiledata.org/essays/keys.html, 2018, pp. 1-4 (2018). |
Wikipedia, “Chunked transfer encoding,” https://en.wikipedia.org/wiki/Chunked_transfer_encoding, pp. 1-4/. |
Woodward Liz, “What Is Elastic Cloud Storage—A Guide to ECS in 2022,” https://www.cloudwards.net/what-is-elastic-cloud-storage/, pp. 1-8. |
“Choosing a load balancer for your object storage environment”, NetApp 2020. |
“NetApp StorageGRID”, NetApp 2022. |
“Tutorial: Transferring data from on-premises storage to Amazon S3 in a different AWS account”, https://docs.aws.amazon.com/datasync/latest/userguide/s3-cross-account-transfer.html, accessed Dec. 12, 2022. |
“What is AWS Data Sync?”, https://docs.aws.amazon.com/datasync/latest/userguide/what-is-datasync.html, accessed Dec. 12, 2022. |
Amazon, “Copy your data between on premises object storage and AWS using AWS DataSync”, Jul. 27, 2020, https://aws.amazon.com/about-aws/whats-new/2020/07/copy-your-data-between-on-premises-object-storage-and-aws-using-aws-datasync/. |
Cloudian, “HyperBalance Load Balancer”, https://cloudian.com/products/hyperbalance/, accessed Dec. 12, 2022. |
Cloudian, “On-Premises Object Storage: Building S3 in Your Backyard”, https://cloudian.com/guides/hybrid-it/on-premises-object-storage/, accessed Dec. 12, 2022. |
Cloudian, “S3 Backup: The Complete Guide”, https://cloudian.com/blog/s3-backup-the-complete-guide/, accessed Dec. 12, 2022. |
Cloudian, “Simple, Secure, Scalable. S3-Compatible, Cloud Native Data Management”, https://cloudian.com/products/hyperstore/, accessed Dec. 12, 2022. |
NetApp, “StorageGRID: Smart, fast, future-proof object storage”, https://www.netapp.com/data-storage/storagegrid/, accessed Dec. 12, 2022. |
OpenStack. Openstack Object Storage API V1 Reference—API V1 .<https://docs.huinoo.com/openstack/archive/api/openstack-object-storage/1.0/os-objectstorage-devguide-1.0.pdf>.2014. (Year: 2014). |
Rivkind, Yael. Object Storage: Everything You Need To Know. <https://lakefs.io/blog/object-storage/>Nov. 25, 2020. (Year: 2020). |
Foreign Search Report on EP dated Feb. 14, 2024. |
Final Office Action on U.S. Appl. No. 17/358,967 Dtd Feb. 22, 2023. |
Number | Date | Country | |
---|---|---|---|
20230161505 A1 | May 2023 | US |
Number | Date | Country | |
---|---|---|---|
63282094 | Nov 2021 | US |