The subject matter disclosed herein relates to network storage and more particularly relates to asset management in network storage.
An abundance of data is created and used individually and by groups such as companies and businesses. Server-based storage networks are one solution to providing flexible and efficient storage for a wide variety of applications. One such storage network is a server storage area network (or server SAN). A server SAN is a network which can incorporate one or more commodity servers with storage devices such as hard disks, tapes, solid-state drives, etc. attached to the servers. A server SAN may include software to allow a remote server, user terminal, or other device to access the server's devices through an operating system (OS) which can present the devices as if they were locally attached storage devices even if they are remote to the accessing device. Server SANs can be further incorporated with other storage systems and access systems to provide additional features and functionality.
A network asset management system is disclosed. The system includes a load calculator, a workload analyzer, and a decision module. The load calculator generates an input/output (IO) record for an asset. The IO record includes a count of read operations and write operations corresponding to the asset from each of a plurality of sites. The workload analyzer collects the IO record and generates at least one of a write threshold and a read threshold. The decision module generates a request for at least one of a promotion and a copy of the asset in response to a determination that an operation has reached at least one of the write threshold and the read threshold for the asset.
A method is also disclosed. The method includes tracking a number of read operations for an asset independently from a number of write operations for the asset. The read operations and write operations for the asset originate from each of a plurality of sites. The method also includes generating a request in response to a determination that at least one of the number of read operations and the number of write operations tracked for the asset from at least one of the plurality of servers exceeds a corresponding threshold. The method also includes executing the request on the asset.
A computer program product for providing network asset management is also disclosed. The computer program product includes a computer readable storage medium having program instructions embodied therewith. The program instructions readable/executable by a processor to cause the processor to track a number of read operations for an asset independently from a number of write operations for the asset. The read operations and write operations for the asset originate from each of a plurality of sites. The program instructions readable/executable by the processor are further to generate a request in response to a determination that at least one of the number of read operations and the number of write operations tracked for the asset from at least one of the plurality of servers exceeds a corresponding threshold. The program instructions readable/executable by the processor are further to execute the request on the asset.
In order that the advantages of the embodiments of the invention will be readily understood, a more particular description of the embodiments briefly described above will be rendered by reference to specific embodiments that are illustrated in the appended drawings. Understanding that these drawings depict only some embodiments and are not therefore to be considered to be limiting of scope, the embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings, in which:
Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment, but mean “one or more but not all embodiments” unless expressly specified otherwise. The terms “including,” “comprising,” “having,” and variations thereof mean “including but not limited to” unless expressly specified otherwise. An enumerated listing of items does not imply that any or all of the items are mutually exclusive and/or mutually inclusive, unless expressly specified otherwise. The terms “a,” “an,” and “the” also refer to “one or more” unless expressly specified otherwise.
Furthermore, the described features, advantages, and characteristics of the embodiments may be combined in any suitable manner. One skilled in the relevant art will recognize that the embodiments may be practiced without one or more of the specific features or advantages of a particular embodiment. In other instances, additional features and advantages may be recognized in certain embodiments that may not be present in all embodiments.
The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (“RAM”), a read-only memory (“ROM”), an erasable programmable read-only memory (“EPROM” or Flash memory), a static random access memory (“SRAM”), a portable compact disc read-only memory (“CD-ROM”), a digital versatile disk (“DVD”), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general-purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer or other programmable apparatus or device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
Many of the functional units described in this specification have been labeled as modules to emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like.
Modules may also be implemented in software for execution by various types of processors. An identified module of program instructions may, for instance, comprise one or more physical or logical blocks of computer instructions which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.
The computer program product may be deployed by manually loading directly in the client, server, and proxy computers via loading a computer readable storage medium such as a CD, DVD, etc., the computer program product may be automatically or semi-automatically deployed into a computer system by sending the computer program product to a central server or a group of central servers. The computer program product is then downloaded into the client computers that will execute the computer program product. Alternatively, the computer program product is sent directly to the client system via e-mail. The computer program product is then either detached to a directory or loaded into a directory by a button on the e-mail that executes a program that detaches the computer program product into a directory. Another alternative is to send the computer program product directly to a directory on the client computer hard drive. When there are proxy servers, the process will, select the proxy server code, determine on which computers to place the proxy servers' code, transmit the proxy server code, then install the proxy server code on the proxy computer. The computer program product will be transmitted to the proxy server and then it will be stored on the proxy server.
The computer program product, in one embodiment, may be shared, simultaneously serving multiple customers in a flexible, automated fashion. The computer program product may be standardized, requiring little customization and scalable, providing capacity on demand in a pay-as-you-go model.
The computer program product may be stored on a shared file system accessible from one or more servers. The computer program product may be executed via transactions that contain data and server processing requests that use Central Processor Unit (CPU) units on the accessed server. CPU units may be units of time such as minutes, seconds, hours on the central processor of the server. Additionally, the accessed server may make requests of other servers that require CPU units. CPU units are an example that represents but one measurement of use. Other measurements of use include but are not limited to network bandwidth, memory usage, storage usage, packet transfers, complete transactions etc.
When multiple customers use the same computer program product via shared execution, transactions are differentiated by the parameters included in the transactions which identify the unique customer and the type of service for that customer. All of the CPU units and other measurements of use that are used for the services for each customer are recorded. When the number of transactions to any one server reaches a number that begins to affect the performance of that server, other servers are accessed to increase the capacity and to share the workload. Likewise, when other measurements of use such as network bandwidth, memory usage, storage usage, etc. approach a capacity so as to affect performance, additional network bandwidth, memory usage, storage etc. are added to share the workload.
The measurements of use used for each service and customer are sent to a collecting server that sums the measurements of use for each customer for each service that was processed anywhere in the network of servers that provide the shared execution of the computer program product. The summed measurements of use units are periodically multiplied by unit costs and the resulting total computer program product service costs are alternatively sent to the customer and or indicated on a web site accessed by the customer which then remits payment to the service provider.
In one embodiment, the service provider requests payment directly from a customer account at a banking or financial institution. In another embodiment, if the service provider is also a customer of the customer that uses the computer program product, the payment owed to the service provider is reconciled to the payment owed by the service provider to minimize the transfer of payments.
The computer program product may be integrated into a client, server, and network environment by providing for the computer program product to coexist with applications, operating systems and network operating systems software and then installing the computer program product on the clients and servers in the environment where the computer program product will function.
In one embodiment software is identified on the clients and servers including the network operating system where the computer program product will be deployed that are required by the computer program product or that work in conjunction with the computer program product. This includes the network operating system that is software that enhances a basic operating system by adding networking features.
In one embodiment, software applications and version numbers are identified and compared to the list of software applications and version numbers that have been tested to work with the computer program product. Those software applications that are missing or that do not match the correct version will be upgraded with the correct version numbers. Program instructions that pass parameters from the computer program product to the software applications will be checked to ensure the parameter lists match the parameter lists required by the computer program product. Conversely parameters passed by the software applications to the computer program product will be checked to ensure the parameters match the parameters required by the computer program product. The client and server operating systems including the network operating systems will be identified and compared to the list of operating systems, version numbers and network software that have been tested to work with the computer program product. Those operating systems, version numbers and network software that do not match the list of tested operating systems and version numbers will be upgraded on the clients and servers to the required level.
In response to determining that the software where the computer program product is to be deployed, is at the correct version level that has been tested to work with the computer program product, the integration is completed by installing the computer program product on the clients and servers.
The computer program product, in one embodiment, may be deployed, accessed, and executed using a virtual private network (VPN), which is any combination of technologies that can be used to secure a connection through an otherwise unsecured or untrusted network. The use of VPNs is to improve security and for reduced operational costs. The VPN makes use of a public network, usually the Internet, to connect remote sites or users together. Instead of using a dedicated, real-world connection such as leased line, the VPN uses “virtual” connections routed through the Internet from the company's private network to the remote site or employee. Access to the software via a VPN can be provided as a service by specifically constructing the VPN for purposes of delivery or execution of the computer program product (i.e. the software resides elsewhere) wherein the lifetime of the VPN is limited to a given period of time or a given number of deployments based on an amount paid.
The computer program product may be deployed, accessed, and executed through either a remote-access or a site-to-site VPN. When using the remote-access VPNs the computer program product is deployed, accessed, and executed via the secure, encrypted connections between a company's private network and remote users through a third-party service provider. The enterprise service provider (ESP) sets up a network access server (NAS) and provides the remote users with desktop client software for their computers. The telecommuters can then dial a toll-free number or attach directly via a cable or DSL modem to reach the NAS and use their VPN client software to access the corporate network and to access, download and execute the computer program product.
When using the site-to-site VPN, the computer program product is deployed, accessed, and executed through the use of dedicated equipment and large-scale encryption that are used to connect a company's multiple fixed sites over a public network such as the Internet.
The computer program product is transported over the VPN via tunneling which is the process of placing an entire packet within another packet and sending it over a network. The protocol of the outer packet is understood by the network and both points, called tunnel interfaces, where the packet enters and exits the network.
Furthermore, the described features, structures, or characteristics of the embodiments may be combined in any suitable manner. In the following description, numerous specific details are provided, such as examples of programming, software modules, user selections, network transactions, database queries, database structures, hardware modules, hardware circuits, hardware chips, etc., to provide a thorough understanding of embodiments. One skilled in the relevant art will recognize, however, that embodiments may be practiced without one or more of the specific details, or with other methods, components, materials, and so forth. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of an embodiment.
The description of elements in each figure may refer to elements of proceeding figures. Like numbers refer to like elements in all figures, including alternate embodiments of like elements.
As shown in
Bus 18 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus.
Computer system/server 12 typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server 12, and it includes both volatile and non-volatile media, removable and non-removable media.
System memory 28 can include computer system readable media in the form of volatile memory, such as random access memory (RAM) 30 and/or cache memory 32. Computer system/server 12 may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, storage system 34 can be provided for reading from and writing to a storage media (not shown and typically called a “drive”).
Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile solid state drive, magnetic disk (e.g., a “floppy disk”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM, or other optical media can be provided. In such instances, each can be connected to bus 18 by one or more data media interfaces. As will be further depicted and described below, memory 28 may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of embodiments of the disclosure.
Program/utility 40, having a set (at least one) of program modules 42, may be stored in memory 28 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data, or some combination thereof, may include an implementation of a networking environment. Program modules 42 generally carry out the functions and/or methodologies of embodiments of the disclosure as described herein.
Computer system/server 12 may also communicate with one or more external devices 14 such as a keyboard, a pointing device, a display 24, etc.; one or more devices that enable a user to interact with computer system/server 12; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server 12 to communicate with one or more other computing devices. Such communication can occur via input/output (I/O) interfaces 22.
Still yet, computer system/server 12 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter 20. As depicted, network adapter 20 communicates with the other components of computer system/server 12 via bus 18. While not shown, other hardware and/or software components could be used in conjunction with computer system/server 12. Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.
In one embodiment, the computer system/server 12 is part of or is in communication with a network such as a server storage area network (server SAN). Communication with other devices, apparatuses, or systems on the network may be handled by the I/O interfaces 22 or the network adapter 20. In some embodiments, the computer system/server 12 includes various modules, described in greater detail below, to manage one or more assets stored on the network. In some embodiments, the computer system/server 12 requests to read or write to an asset stored on the server SAN. In other embodiments, the computer system/server 12 independently or in conjunction with other systems or devices, tracks operations on a stored asset, creates thresholds for operations corresponding to the asset, generates requests for management of the asset, analyzes requests for the asset, and/or executes requests to manage the asset on the network. Fewer or more than these functions and other functions may be accomplished wholly or in part by the computer system/server 12.
In some embodiments, host 208 (host A) includes one or more servers. For example, host A 208 may include one or more of a computer system/server 12 of
In other embodiments, host A 208 is located at a separate location from the first and second storage volumes 210 and 212. For example, host A 208 may be located at a central server location, away from the first and second storage volumes 210 and 212, but is associated with the first and second storage volumes 210 and 212 through assignment, network priority, connection/access speed, or other characteristics or specific associations.
In some embodiments, the first storage volume 210 includes at least a portion of one or more storage devices. In one embodiment, the first storage volume 210 includes at least a portion of a solid-state drive. In another embodiment, the first storage volume 210 includes at least a portion of one or more hard disk drives, solid-state drives, tape drives, or other permanent or rewritable storage devices.
In some embodiments, the first storage volume 210 makes up at least a portion of a first or higher performance storage location or tier while the second storage volume 212 makes up at least a portion of a second or lower performance storage location or tier. In some embodiments, the second storage volume 212 is a lower performance storage location in relation to the first storage volume 210 of the first site 202 or relative to other storage volumes on other sites. Similarly, in some embodiments, the first storage volume 210 is a higher performance storage location relative to the second storage volume 212 on the first site 202 or relative to other storage volumes on other sites.
In some embodiments, the performance of a storage volume (i.e. first storage volume 210 or second storage volume 212) is based on speed of reading and/or writing operations. In other embodiments, the performance is based upon cost to carry out the operation. In another embodiment, the performance of each storage volume is based upon one or more other qualities of the volume. For example, the first storage volume 210 may be one or more solid-state drives with relatively faster read/write speeds while the second storage volume 212 may be one or more hard disk drives with relatively slower read/write speeds. In another embodiment, the second storage volume 212 includes a solid-state drive that is slower than a solid-state drive of the first storage volume 210.
In the illustrated embodiment, an asset 214 is stored to the second storage volume 212. As described above, some embodiments of the second storage volume 212 include a hard disk drive or other type of storage device having a relatively lower performance. The asset 214 is accessed for operations by host A 208 of the first site 202, host B 216 of the second site 204, and host C 222 of the third site 206. In some embodiments, the operations include reading and writing operations. Other embodiments include other operations requested or executed with respect to the asset 214.
In some embodiments, the asset 214 is the target of read, write, or other requests from host B 216 and host C 222 because no available copies of the asset exist on the second site 204 and the third site 206 or because asset 214 on the second storage volume 212 is the only instance of the asset 214 that is available or has associated permissions for the operation (open for writing, reading, etc.).
In some embodiments, more traffic associated with the asset 214 comes from one host than comes from another. If that high traffic host is not the local host (host A 208 for asset 214 in the illustrated embodiment) but is a remote host, facilitating the remote traffic may result in a penalty or resource cost to the network 200 that may be higher than is acceptable. Identifying high cost traffic situations such as this can enable solutions described below to reduce the costs for the network 200. As described below with reference to
Correlating the information in the record 300 to the network 200 illustrated in
In the illustrated embodiment of
In one embodiment, the record 300 is generated by a load calculator (described in greater detail below with reference to
In some embodiments, a threshold is established based on the several values included in the record 300. In some embodiments, the threshold is generated based on the values of multiple records for multiple assets.
In some embodiments, the threshold includes separate read and write thresholds. Some embodiments of the threshold establish acceptable upper limits for read operations and write operations. In some embodiments, the thresholds are specific to a particular asset. In other embodiments, the thresholds are applied to more than one asset across one or more storage locations.
While embodiments discussed herein relate to upper limits for traffic at an asset (hot asset), other embodiments also handle management of assets with traffic falling below a lower threshold (cold assets) to more efficiently allocate network resources.
For example, the read threshold for the asset 214 may be set at one-hundred while the write threshold is set at fifty. As such, in the illustrated embodiment of the record 300, both the remote hosts, host B 216 and host C 222, exceed the read threshold of one-hundred while the local host, host A 208, does not. None of the hosts exceeds the write threshold of fifty.
In some embodiments, in response to a determination that the read operations have reached or exceeded the read threshold, a request for promotion or copy of the asset 214 occurs. If the request is approved, the promotion or copy is completed.
In the illustrated embodiment of the record 300, both host B 216 and host C 222 have exceeded the read threshold. In some embodiments, because it is the read threshold that has been exceeded and not the write threshold, a copy request is generated. In some embodiments, a remote host penalty is applied which provides a preference to local hosts over remote hosts to account for the network resource cost of moving the asset 214 from the current host to a remote host.
In the illustrated embodiment, upon approval (discussed in more detail below in relation to
In some embodiments, if the host A 208 of the first site 202 has a sufficient read operation count, the copy on the first site 202 is left in place and other copies are made at the other sites 204 and 206 or the copy on the first site 202 is promoted to the first storage volume 210 and other copies are made at the higher or lower performance storage location of the other sites 204 and 206. Other situations and copy/promotion arrangements are contemplated.
In the illustrated embodiment, the thirty read operations of host A 208 of the first site on the asset 214, as shown on the record 300 of
In some embodiments, subsequent operations by host A 208 on the asset 214 are randomly or alternatingly directed to both the copy of the asset 214 at the second site 204 and the copy of the asset 214 at the third site 206. In other embodiments, the operations from host A 208 are directed to either the second site 204 or the third site 206 based on current network traffic and/or resource availability. Some embodiments provide other access patterns or rules to allow the host A 208 to access the asset 214.
In the illustrated embodiment, host B 216 and host C 222 both have access to corresponding local copies of the asset 214. In some embodiments, this reduces network traffic, improves the time required to carry out the operations, or improves other aspects of network efficiency.
In the illustrated embodiment of
In some embodiments, the asset 214 is stored to the higher performance storage locations in response to a trend in the number of operations corresponding to the asset 214. For example, the trend may predict that the number of operations on the asset 214 will continue to increase and the move to the higher performance storage locations provides an advantage to the network over the lower performance storage locations based on the predicted number of operations.
In some embodiments, the asset 214 is stored to the higher performance storage volume 218 of the second site 204 and the lower performance storage volume 226 of the third site 206. Other storage arrangements may be selected based on the number of operations from each host or site, the performance metrics of each storage volume at each site, or other variables or characteristics.
In some embodiments, the network penalty (or remote host penalty) is a percentage penalty applied to the operation counts. For example, the network penalty may be a 15% penalty. A 15% penalty to the count for host C 222 on the record 500 may result in a penalized count of 93.5 which is less than the count for host A 208. In other embodiments, different penalty types or manners of applying different penalties are incorporated.
In some embodiments, the penalty is applied before determining if the number of operations exceeds the corresponding threshold. In other embodiments, the penalty is applied in situations in which both local and remote hosts are determined to have exceeded the threshold. In other words, some embodiments apply the network penalty as a conflict resolution, tie-breaker, or ranking criterion after the hosts have been determined to have exceeded the threshold.
In the illustrated embodiment, a promotion request is generated in response to a determination that one or more hosts have exceeded the write threshold. In some embodiments, upon approval of the promotion request, the asset 214 is copied from the lower performance second storage volume 212 to the higher performance first storage volume 210 and the copy at the second storage volume 212 is deleted. In some embodiments, the associated mapping for the asset is updated. In some embodiments, only one copy of the asset is maintained to preserve data continuity during the frequent write operations.
In some embodiments, if both the read operations count and the write operations count exceed the corresponding thresholds, a promotion request is generated to avoid data consistency issues. Other embodiments include other strategies for handling read counts and write counts that exceed the corresponding thresholds.
As described above, some embodiments of the first storage volume 210 include a solid-state drive having read and/or write times faster than that of the second storage volume 212 which includes a hard disk drive or other device which has a performance aspect lesser than that of the first storage volume 210. In other embodiments, the first storage volume 210 includes any drive or storage device or volume having a read or write time faster than that of the second storage volume 212.
In some embodiments, after the promotion of the asset 214 from the second storage volume 212 to the first storage volume 210, further read operations for the asset 214 are directed, by the corresponding host to the asset 214 at the new location. In some embodiments, further write operations are saved to the site corresponding to the accessing host and other copies on the same site are deleted to preserve data consistency at the site. In other embodiments, further write operations are saved to the site corresponding to the accessing host and all other copies at the same and other sites are deleted to preserve data consistency across the network.
In some embodiments, previous versions or copies of the asset 214 are deleted and the mapping updated while in other embodiments, previous versions of the asset 214 are listed as available for overwrite or rewrite and the mapping associated with the asset 214 is updated to the new storage location.
The first site 702 also includes a first storage volume 714, a second storage volume 716, and a third storage volume 718. The first, second, and third storage volumes 714, 716, and 718 are accessed by the servers 708, 710, and 712.
In the illustrated embodiment, each of the first, second, and third servers 708, 710, and 712 includes a load calculator. In one embodiment, the load calculator operates as a unity across the servers 708, 710, and 712 of the first site 701. In some embodiments, the load calculator tracks the number of operations for an asset stored one or more of the storage volumes 714, 716, and 718 of the first site 702.
In the illustrated embodiment, the load calculator of each site communicates with the decision module of the site and the workload analyzer communicates across multiple sites 702 and 704. In other embodiments, more or fewer communication connections exist between the components at each site 702 and 704.
In some embodiments, the load calculator generates an input/output (I/O) record (such as those shown and described in
In the illustrated embodiment, the third server 712 includes a workload analyzer. In some embodiments, the workload analyzer operates on multiple sites 702 and 704 as a unity. For example, the workload analyzer may be a cluster distributed across the first and second sites 702 and 704. In some embodiments, the workload analyzer collects the record of input/output operations for each asset on each site and determines a threshold for each operation. In some embodiments, the thresholds include a write threshold and a read threshold for assets on the multiple sites 702 and 704.
In the illustrated embodiment, the second server 710 includes a decision module. In some embodiments, the decision module analyses the record generated by the load calculator for each asset and determines whether the record for an asset has exceeded the threshold set by the workload analyzer. In some embodiments, in response to a determination that an operation has reached a corresponding threshold, the decision module sends a request to the workload analyzer requesting a promotion or copy of the asset.
In some embodiments, the workload analyzer reconciles the request from the decision module on the first site 702 with one or more requests from the decision module of the second site 704. In some embodiments, the workload analyzer resolves conflicts in the requests. In other embodiments, the workload analyzer determines priority among the requests received from the corresponding decision modules of the sites 702 and 704.
In some embodiments, the workload analyzer determines if a potential storage location for the asset has sufficient storage space or processing capacity to fulfill the request. In other embodiments, the workload analyzer resolves a conflict by applying a network penalty (as described above) to a promotion or copy request.
In some embodiments, in response to receipt of an approval sent from the workload analyzer to the decision module corresponding to the request, the decision module executes the requested promotion and/or copy. In some embodiments, the decision module updates mapping information corresponding to the affected asset after the promotion or copy is completed. In some embodiments, the decision module also deletes a previous version of the asset upon completion of the promotion or copy.
In some embodiments, the requested copy includes copying the asset to another storage location corresponding to another server or site in response to a read count on the record exceeding the threshold set by the workload analyzer. In some embodiments, the requested promotion includes promoting the asset from a lower performance storage volume (such as the third storage volume 718) to a higher performance storage volume (such as the second or first storage volumes 716 or 714) in response to a determination that the write threshold set by the workload analyzer or both the write threshold and the read threshold set by the workload analyzer has been exceeded for the asset.
In some embodiments, the asset is copied from a lower performance storage location on the first site 702 to a higher performance storage location on the second site 704 which may be identified as both a copy and a promotion of the asset. In some embodiments, the above copy and promotion is executed as separate processes. For example, the asset may be copied from the lower performance storage volume of the first site 702 to a lower performance storage volume of the second site 704 and then separately promoted from the lower performance storage location of the second site 704 to a higher performance storage location on the second site 704. Other manners of completing a corresponding request are contemplated.
In some embodiments, the number of read and write operations for an asset are tracked independently to provide an appropriate response to the number of read and write operations as different solutions (copy, promote, etc.) may be better for situations of high read counts for an asset while others are better for situations of high write counts for an asset. In some embodiments, the numbers of read and write operations are tracked based on the server performing the various operations, while other embodiments are tracked based on the site performing the various operations.
In some embodiments, the record tracks operations corresponding to multiple copies of the same asset stored at different locations. In other embodiments, the record tracks operations corresponding to a single instance of the asset.
At block 804, the method 800 includes generating a request in response to the operations exceeding a corresponding threshold. In some embodiments, the request is in response to at least one of a determination that the number of read operations for the asset from at least one of the plurality of servers exceeds a read threshold and a determination that the number of write operation for the asset from at least one of the plurality of servers exceeds a write threshold.
In some embodiments, the request generated in response to a determination that the read operations for the asset exceeds the read threshold includes a request to copy the asset. In other embodiments, the request generated in response to the determination that the read operations for the asset exceeds the read threshold includes a request to promote the asset to a higher performance tier storage volume or device. In other embodiments, the request includes a request to copy and a request to promote. In some embodiments, the request includes a request to make multiple copies of the asset and promote at least one of the resulting instances of the asset.
At block 806, the method 800 includes executing the request. In some embodiments, executing the request is completed in response to receipt of conflict resolution approval in view of at least one other request corresponding to another asset on the plurality of sites. In some embodiments, multiple requests are received which may involve the same server, asset, storage volume, or site. In some embodiments, one or more of the multiple requests may conflict with another of the multiple requests.
In some embodiments, the conflict resolution approval is reached by prioritizing the multiple requests. In other embodiments, the conflict resolution approval is reached by determining an effect on the resources of the plurality of sites. In some embodiments, the conflict resolution approval is reached by forecasting network traffic or loads from current or historical trends. Other factors or criteria may be applied in resolving conflicts between requests.
The embodiments may be practiced in other specific forms. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.
Number | Name | Date | Kind |
---|---|---|---|
6237086 | Koppala | May 2001 | B1 |
6289413 | Rogers | Sep 2001 | B1 |
7693877 | Zasman | Apr 2010 | B1 |
7818489 | Karamcheti | Oct 2010 | B2 |
7913055 | Karamcheti | Mar 2011 | B2 |
7930513 | Karamcheti | Apr 2011 | B2 |
8068360 | Anholt | Nov 2011 | B2 |
8156302 | Karamcheti | Apr 2012 | B2 |
8205061 | Karamcheti | Jun 2012 | B2 |
8230123 | Chiu | Jul 2012 | B2 |
8239543 | Ramany | Aug 2012 | B1 |
8266407 | Karamcheti | Sep 2012 | B2 |
8555024 | Karamcheti | Oct 2013 | B2 |
8606997 | Cypher | Dec 2013 | B2 |
8639910 | Karamcheti | Jan 2014 | B2 |
8730721 | Camp | May 2014 | B2 |
8782373 | Karamcheti | Jul 2014 | B2 |
8874835 | Davis | Oct 2014 | B1 |
8943263 | Frost | Jan 2015 | B2 |
9047087 | Antony | Jun 2015 | B2 |
9055044 | Takagi | Jun 2015 | B2 |
9122613 | Lacourba | Sep 2015 | B2 |
9177670 | Derbeko | Nov 2015 | B1 |
9189344 | Kono | Nov 2015 | B2 |
9215476 | Gladwin | Dec 2015 | B2 |
9218183 | Kishore | Dec 2015 | B2 |
9223719 | Karamcheti | Dec 2015 | B2 |
9229638 | Bora | Jan 2016 | B1 |
9244617 | Bux | Jan 2016 | B2 |
9244618 | Martin et al. | Jan 2016 | B1 |
9250991 | Frost | Feb 2016 | B2 |
9262315 | Meir | Feb 2016 | B2 |
9262334 | Karamcheti | Feb 2016 | B2 |
9285994 | Bish et al. | Mar 2016 | B2 |
9292451 | Dong | Mar 2016 | B2 |
9298606 | Ramanujan | Mar 2016 | B2 |
9335948 | Kirac | May 2016 | B1 |
9395936 | Sakata | Jul 2016 | B2 |
9419655 | Cai | Aug 2016 | B2 |
9430149 | Slik | Aug 2016 | B2 |
9430152 | Slik | Aug 2016 | B2 |
9471450 | Best | Oct 2016 | B2 |
9501235 | Frost | Nov 2016 | B2 |
9557938 | Slik | Jan 2017 | B2 |
9563377 | Takagi | Feb 2017 | B2 |
9588686 | Baptist | Mar 2017 | B2 |
9594507 | Gladwin | Mar 2017 | B2 |
9612953 | Davis | Apr 2017 | B1 |
9971548 | Talwar | May 2018 | B1 |
20040073831 | Yanai | Apr 2004 | A1 |
20080082596 | Gorobets | Apr 2008 | A1 |
20080109592 | Karamcheti | May 2008 | A1 |
20080109593 | Karamcheti | May 2008 | A1 |
20080177978 | Karamcheti | Jul 2008 | A1 |
20100161904 | Cypher | Jun 2010 | A1 |
20110022788 | Karamcheti | Jan 2011 | A1 |
20110167205 | Karamcheti | Jul 2011 | A1 |
20110173371 | Karamcheti | Jul 2011 | A1 |
20120198141 | Karamcheti | Aug 2012 | A1 |
20120233391 | Frost | Sep 2012 | A1 |
20120260030 | Karamcheti | Oct 2012 | A1 |
20130007338 | Karamcheti | Jan 2013 | A1 |
20130080725 | Usui | Mar 2013 | A1 |
20130198468 | Antony | Aug 2013 | A1 |
20140095775 | Talagala | Apr 2014 | A1 |
20140173017 | Takagi | Jun 2014 | A1 |
20140258622 | Lacourba | Sep 2014 | A1 |
20140258653 | Karamcheti | Sep 2014 | A1 |
20140301140 | Camp | Oct 2014 | A1 |
20150012721 | Karamcheti | Jan 2015 | A1 |
20150067284 | Antony | Mar 2015 | A1 |
20150100662 | Kaczmarek | Apr 2015 | A1 |
20150100697 | Baptist | Apr 2015 | A1 |
20150100726 | Gladwin | Apr 2015 | A1 |
20150100727 | Baptist | Apr 2015 | A1 |
20150100846 | Gladwin | Apr 2015 | A1 |
20150100966 | Baptist | Apr 2015 | A1 |
20150101024 | Leggette | Apr 2015 | A1 |
20150113341 | Frost | Apr 2015 | A1 |
20150186223 | Kono | Jul 2015 | A1 |
20150199268 | Davis | Jul 2015 | A1 |
20150286439 | Takagi | Oct 2015 | A1 |
20150286528 | Cai | Oct 2015 | A1 |
20150324120 | Wu | Nov 2015 | A1 |
20150331610 | Slik | Nov 2015 | A1 |
20150331617 | Slik | Nov 2015 | A1 |
20150331621 | Slik | Nov 2015 | A1 |
20150347038 | Monteleone | Dec 2015 | A1 |
20160019210 | O'Brian | Jan 2016 | A1 |
20160098206 | Kishore | Apr 2016 | A1 |
20160103744 | Antony | Apr 2016 | A1 |
20160117258 | Karamcheti | Apr 2016 | A1 |
20160162211 | Frost | Jun 2016 | A1 |
20160216903 | Joshi | Jul 2016 | A1 |
20160216904 | Joshi | Jul 2016 | A1 |
20160224244 | Gensler, Jr. | Aug 2016 | A1 |
20160224278 | Gensler, Jr. | Aug 2016 | A1 |
20160315635 | Cai | Oct 2016 | A1 |
20170041394 | Mortazavi | Feb 2017 | A1 |
20170060675 | Alnafoosi | Mar 2017 | A1 |
Entry |
---|
Micron, “Technical Note: Wear-Leveling Techniques in NAND Flash Devices”, 2008, pp. 1-8, https://www.micron.com/-/media/client/global/documents/products/technical-note/nand-flash/tn2942_nand_wear_leveling.pdf (Year: 2008). |
Number | Date | Country | |
---|---|---|---|
20180293004 A1 | Oct 2018 | US |