Data protection scheduling, such as providing a flexible backup window in a data protection system

Information

  • Patent Grant
  • 12105598
  • Patent Number
    12,105,598
  • Date Filed
    Monday, March 28, 2022
    2 years ago
  • Date Issued
    Tuesday, October 1, 2024
    4 months ago
Abstract
A data protection scheduling system provides a flexible or rolling data protection window that analyzes various criteria to determine an optimal or near optimal time for performing data protection or secondary copy operations. While prior systems may have scheduled backups at an exact time (e.g., 2:00 a.m.), the system described herein dynamically determines when to perform the backups and other data protection storage operations, such as based on network load, CPU load, expected duration of the storage operation, rate of change of user activities, frequency of use of affected computer systems, trends, and so on.
Description
BACKGROUND

Computer systems contain large amounts of information. This information includes personal information, such as financial information, customer/client/patient contact information, business information, audio/visual information, and much more. This information also includes information related to the correct operation of the computer system, such as operating system files, application files, user settings, and so on. With the increased reliance on computer systems to store critical information, the importance of protecting information has grown. Traditional storage systems receive an identification of a file to protect, and then create one or more secondary copies, such as backup files, containing the contents of the file. These secondary copies can then later be used to restore the original data should anything happen to the original data.


In corporate environments, protecting information is generally part of a routine process that information technologists perform for many computer systems within an organization. For example, a company might back up critical computing systems related to e-commerce such as databases, file servers, web servers, and so on as part of a daily, weekly, or monthly maintenance schedule. The company may also protect computing systems used by each of its employees, such as those used by an accounting department, marketing department, engineering department, and so forth.


Often, these systems are required to store large amounts of data (e.g. all of a company's data files) during a time period known as a “storage window.” The storage window defines a duration and actual time period when the system may perform storage operations. For example, a storage window may be for twelve hours, between 6 PM and 6 AM (that is, twelve non-business hours).


Often, storage windows are rigid and unable to be modified. Therefore, when data storage systems attempt to store increasing data loads, they may need to do so without increasing the time in which they operate. Additionally, many systems perform daily stores, which may add further reliance on completing storage operations during allotted storage windows.


Additionally, or alternatively, current systems may attempt to store a large number of distinct jobs, or groups of data, chunks of data, and so on. The system may look at each job as a separate storage operation, which often leads to fragmentation on secondary storage devices (tapes, magnetic disks, and so on) that receive data stores as the storage devices develop small gaps of unused space between spaces containing data. In these cases, the system may inefficiently restore stored data because of the fragmentation that occurs during the data storage process.


The foregoing examples of some existing limitations are intended to be illustrative and not exclusive. Other limitations will become apparent to those of skill in the art upon a reading of the Detailed Description below. These and other problems exist with respect to data storage management systems.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1A is a block diagram illustrating an example of components used in data storage operations.



FIG. 1B is a block diagram illustrating an alternative example of components used in data storage operations.



FIG. 1C is a block diagram illustrating an alternative example of components used in data storage operations.



FIG. 2 is a block diagram illustrating an example of a data storage system.



FIG. 3 is a block diagram illustrating an example of components of a server used in data storage operations.



FIG. 4 is a flow diagram illustrating an example of a routine for selecting storage resources in a data storage operation.



FIG. 5 is a flow diagram illustrating an example of a routine for performing a selected storage operation.



FIG. 6 is a flow diagram illustrating the overall process performed in scheduling data storage operations.



FIG. 7 is a table illustrating criteria used in scheduling a data storage operation.





DETAILED DESCRIPTION
Overview

Described in detail below is a system for dynamically providing a flexible or “rolling” data protection window that analyzes various criteria to determine an (optimal or near optimal) time for performing data protection or secondary copy operations within certain parameters. While prior systems may have scheduled backups at an exact time (e.g., 2:00 a.m.), the system described herein dynamically determines when to perform the backups and other data storage operations, such as based on network load, CPU load, expected duration of the storage operation, rate of change of user activities, frequency of use of affected computer systems, trends, data priority, compliance factors, and so on.


In some examples, the system first receives a request to perform a storage operation. For example, a data storage system may receive a request to protect all of the data from a particular computer system. The request may include, among other things, a deadline to complete data protection of the data, an identification of storage processes to be used in protecting the data, and/or other criteria used to guide the storage operation.


The system may then review the criteria included in the request as well as performance and other metrics tied to the storage operation to determine how and when to perform the storage operation. For example, the metrics may indicate the use capacity of storage operation components, may predict when a storage network is under (or over) a threshold, may indicate when a media library to which data will be transferred is not in use, and so on.


Then, the system may schedule the data storage operation based on the reviewed metrics. In some cases, the system changes or modifies a previously determined schedule of operations based on other scheduled storage operations, new information about network load, or other factors that may affect the successful completion or timing of the storage operation. Also, by dynamically scheduling storage operations, the system is able to avoid at least some conflicts between computer systems over resources needed to perform the storage operations and reduces the impact on primary storage resources. Thus, the system can provide a dynamically determined schedule for data storage operations, such as a schedule that is more likely to be able to accommodate most or all of the desired operations within a storage window.


Therefore, the system dynamically determines a time to perform the storage operation and the components used to facilitate the storage operation based on criteria included in a request to protect data and based on (predicted) characteristics of the storage operation used to carry out the request. That is, the system may review a dynamic storage policy, a policy that provides storage operation instructions to the system based on the needs of a storage request and the characteristics of the system.


In some cases, the dynamic storage policy may be part of a flexible priority system for performing storage operations, or jobs. The priority system may instruct a storage system to perform certain categories of jobs in a predetermined order, while allowing the system to dynamically determine the order of other categories of jobs. For example, the priority system may instruct a storage system to perform all hard coded jobs first (jobs that must be completed within a time window), to perform all soon to expire jobs second (that is, any jobs having a deadline of completion less than a threshold deadline, or previously postponed jobs), and to perform all other jobs based on a flexible and dynamically determined schedule of operations.


Various examples of the system will now be described. The following description provides specific details for a thorough understanding and enabling description of these examples. One skilled in the art will understand, however, that the system may be practiced without many of these details. Additionally, some well-known structures or functions may not be shown or described in detail, so as to avoid unnecessarily obscuring the relevant description of the various examples.


The terminology used in the description presented below is intended to be interpreted in its broadest reasonable manner, even though it is being used in conjunction with a detailed description of certain specific examples of the system. Certain terms may even be emphasized below; however, any terminology intended to be interpreted in any restricted manner will be overtly and specifically defined as such in this Detailed Description section.


Suitable System


Referring to FIG. 1A, a block diagram illustrating components of a data storage system with which the data protection scheduling system can be used is shown. The data storage system 110 may include a client 111, a media agent 112, and a secondary storage device 113. For example, in storage operations, the system may store, receive and/or prepare data to be stored, copied or backed up at a server or client 111. The system may then transfer the data to be stored to media agent 112, which may then refer to storage policies, schedule policies, and/retention policies (and other policies) to choose a secondary storage device 113 for storage of the data. Secondary storage devices may be magnetic tapes, optical disks, USB, SSD and other similar media, disk and tape drives, and so on. The combination of all of the components (or a device containing all the components) needed to perform a storage operation (e.g., a client, media agent, and secondary storage device) may be referred to as a data stream.


Referring to FIG. 1B, a block diagram illustrating components of multiple selectable data streams is shown. Client 111 and any one of multiple media agents 112 may form a stream 110. For example, one stream may contain client 111, media agent 121, and storage device 131, while a second stream (or multiple streams) may use media agent 125, storage device 133, and the same client 111. Additionally, media agents may contain additional subpaths 123, 124 that may increase the number of possible streams for client 111. Examples of subpaths 123, 124 include host bus adapter (HBA) cards, Fibre Channel cards, SCSI cards, wireless paths, and so on. Thus, the system is able to stream data from client 111 to multiple secondary storage devices 113 via multiple media agents 112 using multiple streams.


Referring to FIG. 1C, a block diagram illustrating components of alternative multiple selectable data streams is shown. In this example, the system may transfer data from multiple media agents 151, 152 to the same storage device 113. For example, one stream may be from client 141, to media agent 151, to secondary storage device 113, and a second stream may be from client 142, to media agent 152, to secondary storage device 113. Thus, the system is able to copy data to one secondary storage device 113 using multiple streams 110. Additionally, the system may stream data from one client to two media agents and to one storage device. Of course, the system may employ other configurations of stream components not shown in the Figures.


Referring to FIG. 2, a block diagram illustrating an example of a data storage system 200 is shown. Data storage systems may contain some or all of the following components, depending on the needs of the system. For example, the data storage system 200 contains a storage manager 210, one or more clients 111, one or more media agents 112, and one or more storage devices 113. Storage manager 210 controls media agents 112, which may be responsible for transferring data to storage devices 113. Storage manager 210 includes a jobs agent 211, a management agent 212, a database 213, and/or an interface module 214. Storage manager 210 communicates with client(s) 111. One or more clients 111 may access data to be stored by the system from database 222 via a data agent 221. The system uses media agents 112, which contain databases 231, to transfer and store data into storage devices 113. Client databases 222 may contain data files and other information, while media agent databases may contain indices and other data structures that assist and implement the storage of data into secondary storage devices, for example.


The data storage system may include software and/or hardware components and modules used in data storage operations. The components may be storage resources that function to copy data during storage operations. The components may perform other storage operations (or storage management operations) other that operations used in data stores. For example, some resources may create, store, retrieve, and/or migrate primary or secondary data copies. A primary copy is an original copy of data (for example, the copy of data created by a file system), while a secondary copy may be any copy of the primary copy. Example secondary copies may include snapshot copies, backup copies, HSM copies, archive copies, and so on. The resources may also perform storage management functions that may communicate information to higher-level components, such as global management resources.


In some examples, the system performs storage operations based on storage policies, as mentioned above. For example, a storage policy includes a set of preferences or other criteria that instruct or guide storage operations. The storage policy may define, identify, or indicate a storage location and/or set of preferences about how the system transfers data to the location and what processes the system performs on the data before, during, or after the data transfer. For example, the storage policy may be a dynamically changing policy based on factors, metrics and other characteristics of storage operations and requests to perform storage operations. These characteristics may include a job priority (such as a priority provided by the flexible priority system or by an administrator), a scheduling priority (such as a priority based on deadlines of completion of some or all scheduled jobs), the type of data (e.g., exchange and SQL data may have different priorities), and so on. In some cases, a (dynamic) storage policy may define a logical bucket in which to transfer, store or copy data from a source to a data store, such as storage media, based on a current or predicted status of the storage operation. Storage policies may be stored in storage manager 210, or may be stored in other resources, such as a global manager, a media agent, and so on. Further details regarding storage management and resources for storage management will now be discussed.


Referring to FIG. 3, a block diagram illustrating an example of components of a server used in data storage operations is shown. A server, such as storage manager 210, may communicate with clients 111 to determine data to be copied to primary or secondary storage. As described above, the storage manager 210 may contain a jobs agent 211, a management agent 212, a database 213, and/or an interface module. Jobs agent 211 may manage and control the scheduling of jobs (such as copying data files) from clients 111 to media agents 112. Management agent 212 may control the overall functionality and processes of the data storage system, or may communicate with global managers. Database 213 or another data structure may store storage policies, schedule policies, retention policies, or other information, such as historical storage statistics, storage trend statistics, and so on. Interface module 215 may interact with a user interface, enabling the system to present information to administrators and receive feedback or other input from the administrators or with other components of the system (such as via APIs).


Further examples of suitable systems and methods may be found in U.S. patent application Ser. No. 11/963,581, filed on Dec. 21, 2007, entitled SYSTEMS AND METHODS OF DATA STORAGE MANAGEMENT, SUCH AS DYNAMIC DATA STREAM ALLOCATION, which is incorporated by reference in its entirety.


Using a Data Storage Window to Affect Storage Operations


In some cases, the system may modify or change storage operations based on a review of a storage window. In some cases the system considers the data storage window to be dynamically determined period of time when the system may perform data storage operations. In other cases, the storage window is rigid for some or all storage operations and the system should complete such any associated data transfers within the window. Therefore, a dynamic review of the storage window during or prior to data storage operations may assist storage systems in completing storage tasks within an allotted window of time.


Referring to FIG. 4, a flow diagram illustrating a routine 400 as an example of selecting storage resources in a data storage operation begins in step 410, where the system may compare the storage window with an estimated time remaining to complete data storage operations. For example, the system may calculate an estimate of the time required to complete all pending job transfers, and compare the estimated time with the time allotted to run data transfers. In step 420, if the time allotted is larger than the time estimate, routine 400 ends and the system performs scheduled operations within the window, else routine 400 proceeds to step 430. In step 430, the system performs corrective operations. Examples of corrective operations may include the dynamic stream management discussed above, using more resources, selecting a subset of the remaining jobs to store, sending remaining jobs to an alternative or “standby” data storage system, moving or modifying the window for certain jobs, obtaining guidance from the flexible priority system, moving certain jobs outside the window (to be discussed herein), and so on. After performing corrective actions, routine 400 proceeds back to step 420, and compares the new estimated time against the time allotment.


In some cases, the system may review, monitor, or track default pathways (such as streams) and modify storage operations if there is not enough time in the storage window to complete all data transfers using the default pathways. For example, the system may select high-speed pathways instead of default pathways for data of a certain type and nature (such as high priority or unprotected data).


The system may perform routine 400 as infrequently or as often as necessary, depending on the needs of the system or the progress of data storage operations. For example, the system may track the performed corrective measures to determine their effectiveness, and determine a frequency in which to perform the routine within the window. When a corrective measure causes the estimated time of completion to fall within the storage window, the system may perform the routine at a lesser frequency than when the estimated time of completion is not within the storage window. Also, the system may perform routine 400 to obtain information about data storage operations, to be used in performing corrections at a later time. The system may determine patterns, statistics, metrics, criteria, characteristics and/or historical information about the storage operations and associated resources from routine 400. For example, in a 12 hour time allotted storage window, the system may run routine 400 twelve times, once per hour. Comparing the twelve iterations, the system may determine a pattern of high resource use, low resource use, and so on, and modify future data storage operations accordingly.


In some cases, the system may be able to delay the transfer of some types of data in order to transfer other types of data within the storage window. Referring to FIG. 5, a flow diagram illustrating an example of performing a selected storage operation is shown. In step 510, the system may compare the storage window with an estimated time remaining to complete data storage operations. For example, the system may estimate the time required to complete all pending job transfers, and compare the estimated time with the time allotted to run transfer operations. In step 520, if the time allotted is larger than the time estimate, routine 500 ends and performs the transfer operations in the time allotted, else routine 500 proceeds to step 530. In step 530, the system may select certain jobs to store based on information received from the flexible priority system, and delay other jobs. For example, the system may be able to store some types of data outside of the storage window, to be discussed herein. The system may then select these jobs and move them out of the job queue, to a delayed jobs queue.


After selecting “priority” jobs, routine 500 proceeds back to step 520, and compares the new estimated time against the time allotment. The system transfers all “priority” jobs, and only goes to the delayed job queue after the main job queue is empty of priority jobs. The system may then transfer the delayed jobs during the remaining time of the storage window, may transfer the jobs outside of the job window, or may be able to send the jobs to the next scheduled storage operation or data transfer, and transfer the remaining jobs during that operation.


Assigning some jobs a priority may be arbitrary or contingent on the needs of the system. The system may assign priorities to types of files (e.g., metadata, such as user-defined content) or jobs within a storage policy 210. The system may enable users to determine what types of jobs are priority jobs. The system may maintain some jobs as always being priority, or may change these preferences on a case-by-case basis. For example, a user may set a policy to flag all financial data as “priority,” and set a policy to never flag email data (or email from certain user groups) as “priority.” However, in some cases, the reverse may be more desirable. The system may also assign a higher priority to a job that was delayed or missed in a previous window. In some cases, the system may update or modify metadata, data classification or other preferences, and may assign priorities to characteristics of data as well as to data.


As discussed herein, a flexible priority system may instruct a data storage system to perform certain jobs before other jobs. The flexible priority system may identify jobs having the highest priority (such as hard coded jobs), jobs having a next highest priority (such as jobs set to expire, jobs required to be completed within a storage window), and jobs having a flexible priority that changes (based on the factors described herein) in order to optimize the performance of the data storage system. Further details will now be discussed.


Flexible Storage Window


The system looks at various criteria to determine an (optimal or near optimal) period for performing a storage operation. The criteria can include one or more of the following: job priority, types of data within the job, network traffic or load, a disk load, CPU usage, expected backup duration, and so on. For example, the system may gather relevant metrics or other parameters during a predetermined period, such as over a 24- to 48-hour period, which may identify within a one to two day period a time in which to perform a data storage operation for a job that was not completed during a storage window.



FIG. 6 is a flow diagram that illustrates the overall process performed by the data protection scheduling system in one embodiment. In step 610, the system receives a request to perform a storage operation. The storage operation may include one or more request criteria that indicate parameters of the request, such as a deadline for completing the request, a desired frequency (e.g., once per hour) that the request should be performed, and so forth. In step 620, the system applies one or more criteria to determine a suitable time to perform the request. For example, the system may determine a priority for the request, the computer systems that will be used for performing the request, the network loads on or between the computer systems, the availability of resources on the computing systems (e.g., processor time, memory, and storage space), the availability of a media library or storage media, and so on.


The criteria may also take into account any request criteria. For example, if the network load is at its lowest point in two hours, and its second to lowest point in 45 minutes, then the system may select the second lowest point to perform the storage operation if a request criteria requests that the storage operation be completed within the next hour. In step 630, the system schedules the data storage operation based on the performance criteria, among other factors. The system may revisit the schedule periodically based on changes to conditions that affect the scheduling of requests. For example, a new media agent may be added to the network to which some of the load can be distributed. The system dynamically schedules performing storage operations.


The system may also look at historical data or other periods outside a one to two day period. For example, by analyzing one or more months of data, the system can identify trends or historical data. Thus, the system can determine a rate of change, frequency of use, particularly with respect to particular data, data sources, departments, etc. Thus, the system may determine that when a particular user goes home, network activity drops. They can notice trends, such as trends based on vacations, school schedules, etc., and perform actions based on those events. Thus, users, processes, historical trends, pattern recognition, rate of change and amount of access may all be analyzed by the system to determine an optimal or new optimal window for backup processes.


In some examples, a priority system determines when the system is to perform required and/or requested storage operations. In some cases, the priority system instructs a storage system to perform all hard coded jobs first (jobs that must be completed within a time window). The hard coded jobs may be certain daily backups or other data required to be copied within a time window. Once these jobs are completed, the storage system performs all soon to expire jobs second (that is, any jobs having a deadline of completion less than a threshold deadline, or previously postponed jobs), and performs all other jobs based on the flexible and dynamically determined schedule of operations described herein. Such a flexible priority system ensures, among other things, that a data storage system can complete all data storage operations when they are required to be completed, even when certain operations are not completed when originally scheduled.


Dynamically Determining when to Perform Storage Operations


The system may review historical data or information about previously performed jobs or usage of storage operation resources, and predict when to start a job, even if the start time falls outside a storage window. The data may identify a time when the usage resources are predicted to be at a “low” usage level (e.g., below a threshold level of a load on the resources), and start the job at that time. For example, the system may determine that the usage level for certain resources drops during a typical lunch hour (e.g., 12:00 to 1:00 P.M.), and select a job to complete during that time that is expected to be completed within an hour.


Once a job starts, the system may also monitor the usage of the resources and make decisions based on the monitored usage. For example, the system may start a job and after a certain time the job (and other jobs or operations) may cause the load on the resources to exceed a threshold value. Such an occurrence may cause the system to stop the job until the load drops below the threshold value (or, until the predicted load drops below the threshold value). At this time, the system may restart the job using the resources. Additionally, the system may assign a higher priority to partially completed jobs, which may affect the threshold value.


As discussed with respect to FIG. 6, the system identifies and applies criteria to determine a time in which to start or perform a storage operation, such as a job. In some cases, the system applies multiple criteria. For example, the system may look at (1) criteria associated with the job or jobs, (2) criteria associated with the data storage system, and/or (3) criteria associated with historical information with respect to the job or jobs, the system and its resources, and so on. The system may then use the criteria as weighting factors within rules or algorithms that determine threshold requirements for starting jobs.


Referring to FIG. 7, a table 700 including criteria used in scheduling a job is shown. The criteria include a jobs criterion 710, system criterion 720, and historical data criterion 730. Each of the criterion includes various metrics 715 associated with that criterion. For example, for a given job, the job criterion 710 may include a metric attributed to the time window in which to complete the job, a metric attributed to an assigned priority for the job, and so on. Similarly, the system criterion 720 may be affected by the current usage of system resources, a scheduled usage, a predicted usage, and so on. The historical criterion 730 may consider historical trends or patterns, such as those discussed herein.


Thus, the system may look to table 700 when scheduling a job. For example, after a storage window ends, a number of jobs (e.g., two) remain to be performed. Job A is a high priority job but historical data determines that the job causes a high load to system resources (e.g. CPU load). Job B is a lower priority job but causes a lower load to the system resources. Using the table, the system may determine the following:

    • Job A: Start job whenever system resources usage is less than 40% threshold from a maximum system load (may be a calculation of current usage plus predicted usage due to job)
    • Job B: Start job whenever system resources usage is less than 70% threshold.


Also preempt Job B with Job A when Job A threshold is obtained.


Thus, when a usage factor of system resources moves below the 70% threshold or is predicted to do so by historical data (such as the lunch hour example described herein), a data storage system begins performing Job B. Should the usage factor move below the 40% threshold, Job B is stopped and Job A begins. Once the usage factor moves above the 40% threshold (but less than 70%), Job A is stopped and Job B is restarted. Should the usage factor move above the 70% threshold, both jobs are stopped.


As discussed herein, the rules assigned to the jobs may dynamically change during storage operations. For example, if Job B is more than half way completed, the system may assign the job a higher priority than the priority assigned to Job A. In this example, Job B would continue to perform even when the usage factor moves below the 40% threshold.


In some examples, the system looks at a large period of time (such as a months' worth of data) to identify lulls in the system resources, and make predictions about the usage of the system resources. The system then determines when to start a job based on the predictions, and schedules the job.


In some examples, the flexible priority system exempts certain jobs from the dynamically determined scheduling. The system may determine priorities for particular jobs, departments, users, and so forth. These jobs/departments/users/etc. may be exempt from flexible scheduling, and instead have a set data storage window, such as a window specified by an administrator. For example, hard coded and expiring jobs may not be flexibly scheduled. Thus, the flexible priority system may increase the priority of certain jobs/departments/users/etc. based on historical data, current performance, and so on. As one example, if a client was last in the queue last week, it may then be moved closer to the top of the queue for the current week, and vice versa, depending on various factors.


In some examples, the system employs a scoring metric. For example, the system may add some weighting to encourage a data storage operation to be scheduled sooner if a particular job did not get processed on a given date, is close to expiration, was started but not completed, and so on. As another example, a job may get a negative weighting for the next data storage window if the job was placed high in the job queue and completed for a current data storage window.


In some examples, the system may employ an alternating approach to flexibly assigning jobs to available storage windows. For example, the flexible priority system may identify jobs having relatively equal priority and schedule the jobs to be performed one-by-one, or in parallel where possible based on available resources.


In some examples, the system looks at request criteria to dynamically determine the scheduling of data storage operations. For example, a request may specify that a data storage operation must occur at least once per hour, such as for protecting financial transaction data or other frequently changing data. The data protection scheduling system then looks at past scheduling of the job to determine the current schedule of the job so that the system schedules the job in a way that satisfies the request criteria. Such request criteria may identify hard coded or other “highest” priority jobs, or may identify jobs always available as being flexible to the system.


Conclusion


The system may perform some or all of the above examples in combination with one another. For example, the system may use aspects of dynamic stream management to choose a stream to transfer a data store job, and may transfer that job within pre-allocated disk space for multiple jobs. The system may trigger dynamic stream management processes based on a review of the storage window.


Systems and modules described herein may comprise software, firmware, hardware, or any combination(s) of software, firmware, or hardware suitable for the purposes described herein. Software and other modules may reside on servers, workstations, personal computers, computerized tablets, PDAs, and other devices suitable for the purposes described herein. In other words, the software and other modules described herein may be executed by a general-purpose computer, e.g., a server computer, wireless device or personal computer. Those skilled in the relevant art will appreciate that aspects of the invention can be practiced with other communications, data processing, or computer system configurations, including: Internet appliances, hand-held devices (including personal digital assistants (PDAs)), wearable computers, all manner of cellular or mobile phones, multi-processor systems, microprocessor-based or programmable consumer electronics, set-top boxes, network PCs, mini-computers, mainframe computers, and the like. Indeed, the terms “computer,” “server,” “host,” “host system,” and the like are generally used interchangeably herein, and refer to any of the above devices and systems, as well as any data processor. Furthermore, aspects of the invention can be embodied in a special purpose computer or data processor that is specifically programmed, configured, or constructed to perform one or more of the computer-executable instructions explained in detail herein.


Software and other modules may be accessible via local memory, via a network, via a browser or other application in an ASP context, or via other means suitable for the purposes described herein. Examples of the technology can also be practiced in distributed computing environments where tasks or modules are performed by remote processing devices, which are linked through a communications network, such as a Local Area Network (LAN), Wide Area Network (WAN), or the Internet. In a distributed computing environment, program modules may be located in both local and remote memory storage devices. Data structures described herein may comprise computer files, variables, programming arrays, programming structures, or any electronic information storage schemes or methods, or any combinations thereof, suitable for the purposes described herein. User interface elements described herein may comprise elements from graphical user interfaces, command line interfaces, and other interfaces suitable for the purposes described herein. Screenshots presented and described herein can be displayed differently as known in the art to input, access, change, manipulate, modify, alter, and work with information.


Examples of the technology may be stored or distributed on computer-readable media, including magnetically or optically readable computer discs, hard-wired or preprogrammed chips (e.g., EEPROM semiconductor chips), nanotechnology memory, biological memory, or other data storage media. Indeed, computer implemented instructions, data structures, screen displays, and other data under aspects of the invention may be distributed over the Internet or over other networks (including wireless networks), on a propagated signal on a propagation medium (e.g., an electromagnetic wave(s), a sound wave, etc.) over a period of time, or they may be provided on any analog or digital network (packet switched, circuit switched, or other scheme).


Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense, as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to.” As used herein, the terms “connected,” “coupled,” or any variant thereof, means any connection or coupling, either direct or indirect, between two or more elements; the coupling of connection between the elements can be physical, logical, or a combination thereof. Additionally, the words “herein,” “above,” “below,” and words of similar import, when used in this application, shall refer to this application as a whole and not to any particular portions of this application. Where the context permits, words in the above Detailed Description using the singular or plural number may also include the plural or singular number respectively. The word “or,” in reference to a list of two or more items, covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, and any combination of the items in the list.


While certain aspects of the technology are presented below in certain claim forms, the inventors contemplate the various aspects of the technology in any number of claim forms. For example, while only one aspect of the technology is recited as a means-plus-function claim under 35 U.S.C. sec. 112, other aspects may likewise be embodied as a means-plus-function claim. Accordingly, the inventors reserve the right to add additional claims after filing the application to pursue such additional claim forms for other aspects of the technology.


The above detailed description of examples of the technology is not intended to be exhaustive or to limit the invention to the precise form disclosed above. For example, although certain types of storage operations have been described, the data protection scheduling system can dynamically schedule many types of operations. While specific embodiments of, and examples for, the invention are described above for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. For example, while processes or blocks are presented in a given order, alternative embodiments may perform routines having steps, or employ systems having blocks, in a different order, and some processes or blocks may be deleted, moved, added, subdivided, combined, and/or modified to provide alternative or subcombinations. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks may instead be performed in parallel, or may be performed at different times.


The teachings of the technology provided herein can be applied to other systems, not necessarily the system described above. The elements and acts of the various embodiments described above can be combined to provide further examples. Any patents and applications and other references noted above, including any that may be listed in accompanying filing papers, are incorporated herein by reference. Aspects of the invention can be modified, if necessary, to employ the systems, functions, and concepts of the various references described above to provide yet further examples of the technology.


These and other changes can be made to the invention in light of the above Detailed Description. While the above description describes certain embodiments of the invention, and describes the best mode contemplated, no matter how detailed the above appears in text, the invention can be practiced in many ways. Details of the system and method for classifying and transferring information may vary considerably in its implementation details, while still being encompassed by the invention disclosed herein. As noted above, particular terminology used when describing certain features or aspects of the invention should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects of the invention with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the specification, unless the above Detailed Description section explicitly defines such terms. Accordingly, the actual scope of the invention encompasses not only the disclosed embodiments, but also all equivalent ways of practicing or implementing the technology under the claims. While certain aspects of the technology are presented below in certain claim forms, the inventors contemplate the various aspects of the technology in any number of claim forms. For example, while only one aspect of the technology is recited as stored in a computer memory, other aspects may likewise be stored in a computer memory. Accordingly, the inventors reserve the right to add additional claims after filing the application to pursue such additional claim forms for other aspects of the technology.

Claims
  • 1. A system comprising: one or more non-transitory computer-readable media having computer-executable instructions stored thereon; andone or more processors that, having executed at least some of the computer-executable instructions, configure the system to perform a plurality of operations comprising:assigning a plurality of storage jobs to a storage window of time, which is programmed in the system for performing storage jobs;completing some but not all of the plurality of storage jobs during the storage window, wherein among the plurality of storage jobs at least a first storage job was not performed during the storage window and remained to be performed after the storage window ended;determining a start time for the first storage job, wherein the start time is determined at least in part based on predicting when a usage level of resources needed for the first storage job is expected to be below a threshold level of usage, wherein a predicted duration of the first storage job is less than a predicted duration of the usage level of the resources staying below the threshold level of usage;based on the first storage job having not been performed during the storage window, initiating the first storage job at substantially the start time, which is outside the storage window to which, in the assigning, the plurality of storage jobs were assigned;continuing to perform the first storage job, based at least in part on determining that the usage level of the resources needed for the first storage job is below the threshold level of usage; andbased on determining that a completion percentage of the first storage job is above a completion threshold, continuing to perform the first storage job regardless of a priority associated with the first storage job.
  • 2. The system of claim 1, wherein predicting when the usage level of resources needed for the first storage job is expected to be below the threshold level of usage, is based at least in part on one or more measures of usage of resources of the system during a historical time interval.
  • 3. The system of claim 1, wherein determining the start time of the first storage job is based at least in part on a historical pattern of usage of resources of the system.
  • 4. The system of claim 1, wherein the threshold level of usage used for determining the start time of the first storage job is based on the priority associated with the first storage job.
  • 5. The system of claim 1, wherein the plurality of operations further comprises: based on determining that the usage level of the resources needed for the first storage job is above the threshold level: stopping the first storage job, and after stopping the first storage job: associating a higher priority with the first storage job and lowering the threshold level, which is to be used for completing the first storage job at another time.
  • 6. The system of claim 5, wherein the plurality of operations further comprises: after stopping the first storage job, waiting to restart the first storage job until the usage level of the resources needed for the first storage job is below the threshold level as lowered for completing the first storage job.
  • 7. The system of claim 1, wherein the plurality of operations further comprises: after the first storage job has been initiated, preempting the first storage job for an other storage job, wherein the preempting includes: stopping the first storage job and initiating the other storage job based on determining that a second usage level of resources needed for the other storage job is below a second threshold level of usage, wherein the first storage job uses at least some of the resources needed by the other storage job.
  • 8. The system of claim 7, wherein the plurality of operations further comprises: monitoring the resources needed for the other storage job; andstopping the other storage job based on determining that the second usage level of the resources needed for the other storage job is above the second threshold level.
  • 9. The system of claim 7, wherein the second threshold level of usage is lower than the threshold level of usage for the first storage job, and wherein the second threshold level of usage is associated with the other storage job and not with the first storage job.
  • 10. The system of claim 7, wherein preempting the first storage job for the other storage job is further based on determining that the completion percentage of the first storage job being preempted is less than the completion threshold.
  • 11. A system comprising: one or more non-transitory computer-readable media having computer-executable instructions stored thereon; andone or more processors that, having executed at least some of the computer-executable instructions, configure the system to perform a plurality of operations comprising:assigning a plurality of storage jobs to a storage window of time, which is programmed in the system for performing storage jobs;completing some but not all of the plurality of storage jobs during the storage window, wherein among the plurality of storage jobs at least a first storage job was not performed during the storage window and remained to be performed after the storage window ended;determining a start time for the first storage job, wherein the start time is based at least in part on predicting when a usage level of resources needed for the first storage job is expected to be below a threshold level of usage, wherein a predicted duration of the first storage job is less than a predicted duration of the usage level of the resources staying below the threshold level, and further wherein the start time is outside of the storage window;initiating the first storage job at substantially the start time;based on determining that the usage level of the resources needed for the first storage job is below the threshold level, continuing to perform the first storage job; andbased on determining that the usage level of the resources needed for the first storage job is above the threshold level: stopping the first storage job, and after stopping the first storage job: assigning a higher priority to the first storage job and lowering the threshold level, which is to be used for completing the first storage job at another time.
  • 12. The system of claim 11, wherein the plurality of operations further comprises: after stopping the first storage job, waiting to restart the first storage job until the usage level of the resources needed for the first storage job is below the threshold level as lowered for completing the first storage job.
  • 13. The system of claim 11, wherein predicting when the usage level of resources needed for the first storage job is expected to be below the threshold level of usage is based at least in part on one or more measures of usage of resources of the system during a historical time interval.
  • 14. The system of claim 11, wherein determining the start time of the first storage job is based at least in part on a historical pattern of usage of resources of the system.
  • 15. The system of claim 11, wherein the threshold level of usage used for determining the start time of the first storage job is based on a priority of the first storage job.
  • 16. The system of claim 11, wherein the plurality of operations further comprises: after the first storage job has been initiated, preempting the first storage job for another storage job, comprising: based on determining that a second usage level of resources needed for the other storage job is below a second threshold level of usage, wherein the first storage job uses at least some of the resources needed by the other storage job, stopping the first storage job and initiating the other storage job.
  • 17. The system of claim 16, wherein the plurality of operations further comprises: monitoring the resources needed for the other storage job; andbased on determining that the second usage level of the resources needed for the other storage job is above the second threshold level: stopping the other storage job.
  • 18. The system of claim 16, wherein the second threshold level of usage is lower than the threshold level of usage for the first storage job, and wherein preempting the first storage job for the other storage job is further based on determining that the other storage job has a higher priority than the first storage job.
  • 19. The system of claim 18, wherein preempting the first storage job for the other storage job is further based on determining that a completion percentage of the first storage job being preempted is less than a completion threshold, and wherein the system is configured to refrain from preempting the first storage job for the other storage job if the completion percentage of the first storage job is above the completion threshold.
CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a Continuation of U.S. patent application Ser. No. 16/239,490 filed on Jan. 3, 2019, which is a divisional of U.S. patent application Ser. No. 14/294,344 filed on Jun. 3, 2014 (now U.S. Pat. No. 10,198,324), which is a divisional of U.S. patent application Ser. No. 12/141,776 filed Jun. 18, 2009 (now U.S. Pat. No. 8,769,048), all of which are hereby incorporated by reference in their entireties herein.

US Referenced Citations (691)
Number Name Date Kind
4084231 Capozzi et al. Apr 1978 A
4267568 Dechant et al. May 1981 A
4283787 Chambers Aug 1981 A
4394732 Swenson Jul 1983 A
4417321 Chang et al. Nov 1983 A
4464122 Fuller et al. Aug 1984 A
4641274 Swank Feb 1987 A
4654819 Stiffler et al. Mar 1987 A
4686620 Ng Aug 1987 A
4912637 Sheedy et al. Mar 1990 A
4995035 Cole et al. Feb 1991 A
5005122 Griffin et al. Apr 1991 A
5093912 Dong et al. Mar 1992 A
5133065 Cheffetz et al. Jul 1992 A
5193154 Kitajima et al. Mar 1993 A
5212772 Masters May 1993 A
5212784 Sparks May 1993 A
5226157 Nakano et al. Jul 1993 A
5239647 Anglin et al. Aug 1993 A
5241668 Eastridge et al. Aug 1993 A
5241670 Eastridge et al. Aug 1993 A
5276860 Fortier et al. Jan 1994 A
5276867 Kenley et al. Jan 1994 A
5287500 Stoppani, Jr. Feb 1994 A
5301286 Rajani Apr 1994 A
5321816 Rogan et al. Jun 1994 A
5333315 Saether et al. Jul 1994 A
5347653 Flynn et al. Sep 1994 A
5386545 Gombos Jan 1995 A
5410700 Fecteau et al. Apr 1995 A
5420996 Aoyagi May 1995 A
5448718 Cohn Sep 1995 A
5448724 Hayashi et al. Sep 1995 A
5450592 McLeod Sep 1995 A
5454099 Myers et al. Sep 1995 A
5485606 Midgley Jan 1996 A
5491810 Allen Feb 1996 A
5495607 Pisello et al. Feb 1996 A
5504873 Martin et al. Apr 1996 A
5517405 McAndrew et al. May 1996 A
5537568 Yanai Jul 1996 A
5544345 Carpenter et al. Aug 1996 A
5544347 Yanai et al. Aug 1996 A
5555371 Duyanovish Sep 1996 A
5559957 Balk Sep 1996 A
5559991 Kanfi Sep 1996 A
5564037 Lam Oct 1996 A
5608865 Midgely Mar 1997 A
5613134 Lucus Mar 1997 A
5619644 Crockett et al. Apr 1997 A
5623598 Voigt Apr 1997 A
5634052 Morris May 1997 A
5638509 Dunphy et al. Jun 1997 A
5642496 Kanfi Jun 1997 A
5659614 Bailey Aug 1997 A
5666501 Jones Sep 1997 A
5673381 Huai et al. Sep 1997 A
5673382 Cannon Sep 1997 A
5699361 Ding et al. Dec 1997 A
5711010 Naddell Jan 1998 A
5729743 Squibb Mar 1998 A
5740405 DeGraff Apr 1998 A
5751997 Kullick et al. May 1998 A
5758359 Saxon May 1998 A
5758649 Iwashita Jun 1998 A
5761677 Senator et al. Jun 1998 A
5764972 Crouse et al. Jun 1998 A
5778165 Saxon Jul 1998 A
5778395 Whiting et al. Jul 1998 A
5812398 Nielsen Sep 1998 A
5813009 Johnson et al. Sep 1998 A
5813017 Morris Sep 1998 A
5860073 Ferrel et al. Jan 1999 A
5864846 Voorhees Jan 1999 A
5872905 Ono Feb 1999 A
5875478 Blumenau Feb 1999 A
5887134 Ebrahim Mar 1999 A
5894585 Inoue Apr 1999 A
5896531 Curtis Apr 1999 A
5901327 Ofek May 1999 A
5907672 Matze et al. May 1999 A
5924102 Perks Jul 1999 A
5950205 Aviani, Jr. Sep 1999 A
5974563 Beeler, Jr. Oct 1999 A
5983239 Cannon Nov 1999 A
5991753 Wilde Nov 1999 A
6009275 Dekoning Dec 1999 A
6012053 Pant Jan 2000 A
6021415 Cannon et al. Feb 2000 A
6026414 Anglin Feb 2000 A
6052735 Ulrich et al. Apr 2000 A
6064821 Shough May 2000 A
6073128 Pongracz Jun 2000 A
6076148 Kedem et al. Jun 2000 A
6091518 Anabuki Jul 2000 A
6094416 Ying Jul 2000 A
6112304 Clawson Aug 2000 A
6131095 Low et al. Oct 2000 A
6131190 Sidwell Oct 2000 A
6148412 Cannon et al. Nov 2000 A
6154787 Urevig et al. Nov 2000 A
6161111 Mutalik et al. Dec 2000 A
6167402 Yeager Dec 2000 A
6182198 Hubis Jan 2001 B1
6212512 Barney et al. Apr 2001 B1
6226759 Miller May 2001 B1
6239800 Mayhew May 2001 B1
6253217 Dourish Jun 2001 B1
6260069 Anglin Jul 2001 B1
6266679 Szalwinski Jul 2001 B1
6266784 Hsiao Jul 2001 B1
6269431 Dunham Jul 2001 B1
6275953 Vahalia et al. Aug 2001 B1
6298439 Beglin Oct 2001 B1
6301592 Aoyama et al. Oct 2001 B1
6308175 Lang et al. Oct 2001 B1
6324581 Xu et al. Nov 2001 B1
6327590 Chidlovskii Dec 2001 B1
6327612 Watanabe Dec 2001 B1
6328766 Long Dec 2001 B1
6330570 Crighton et al. Dec 2001 B1
6330642 Carteau Dec 2001 B1
6341287 Sziklai et al. Jan 2002 B1
6343287 Kumar Jan 2002 B1
6343324 Hubis et al. Jan 2002 B1
6345288 Reed Feb 2002 B1
RE37601 Eastridge et al. Mar 2002 E
6356801 Goodman et al. Mar 2002 B1
6363462 Bergsten Mar 2002 B1
6367073 Elledge Apr 2002 B2
6374363 Wu Apr 2002 B1
6389432 Pothapragada et al. May 2002 B1
6418478 Ignatius et al. Jul 2002 B1
6421678 Smiga et al. Jul 2002 B2
6421711 Blumenau et al. Jul 2002 B1
6442706 Wahl Aug 2002 B1
6470332 Weschler Oct 2002 B1
6484162 Edlund Nov 2002 B1
6487561 Ofek et al. Nov 2002 B1
6487644 Huebsch Nov 2002 B1
6502205 Yanai Dec 2002 B1
6519679 Devireddy et al. Feb 2003 B2
6538669 Lagueux, Jr. et al. Mar 2003 B1
6539388 Hattori Mar 2003 B1
6540623 Jackson Apr 2003 B2
6542972 Ignatius et al. Apr 2003 B2
6549918 Probert Apr 2003 B1
6549957 Hanson Apr 2003 B1
6557039 Leong Apr 2003 B1
6564228 O'Connor May 2003 B1
6593656 Ahn et al. Jul 2003 B2
6618771 Leja Sep 2003 B1
6618794 Sicola Sep 2003 B1
6629110 Cane Sep 2003 B2
6647399 Zaremba Nov 2003 B2
6658436 Oshinsky et al. Dec 2003 B2
6658526 Nguyen et al. Dec 2003 B2
6662218 Mighdoll et al. Dec 2003 B2
6675177 Webb Jan 2004 B1
6675299 Porter et al. Jan 2004 B2
6691232 Wood et al. Feb 2004 B1
6721767 De Meno et al. Apr 2004 B2
6732088 Glance May 2004 B1
6732231 Don May 2004 B1
6732244 Ashton May 2004 B2
6745178 Emens Jun 2004 B1
6760723 Oshinsky et al. Jul 2004 B2
6795828 Ricketts Sep 2004 B2
6816941 Carlson Nov 2004 B1
6820070 Goldman Nov 2004 B2
6839741 Tsai Jan 2005 B1
6839803 Loh Jan 2005 B1
6850994 Gabryljeski Feb 2005 B2
6860422 Hull et al. Mar 2005 B2
6865568 Chau Mar 2005 B2
6871182 Winnard Mar 2005 B1
6892221 Ricart May 2005 B2
6898650 Gao May 2005 B1
6948038 Berkowitz Sep 2005 B2
6948039 Biessener et al. Sep 2005 B2
6957186 Guheen Oct 2005 B1
6970997 Shibayama et al. Nov 2005 B2
6976039 Chefalas Dec 2005 B2
6995675 Curkendall Feb 2006 B2
6996616 Leighton Feb 2006 B1
7003641 Prahlad et al. Feb 2006 B2
7028079 Mastrianni Apr 2006 B2
7035880 Crescenti et al. Apr 2006 B1
7039860 Gautestad May 2006 B1
7054960 Bezbaruah May 2006 B1
7058661 Ciaramitaro Jun 2006 B2
7099901 Sutoh Aug 2006 B2
7107298 Prahlad et al. Sep 2006 B2
7107416 Stuart et al. Sep 2006 B2
7130970 Devassy et al. Oct 2006 B2
7133870 Tripp et al. Nov 2006 B1
7139826 Watanabe Nov 2006 B2
7139846 Rossi Nov 2006 B1
7146387 Russo Dec 2006 B1
7155421 Haldar Dec 2006 B1
7155481 Prahlad Dec 2006 B2
7159081 Suzuki Jan 2007 B2
7162496 Amarendran et al. Jan 2007 B2
7171468 Yeung Jan 2007 B2
7171585 Gail Jan 2007 B2
7174433 Kottomtharayil et al. Feb 2007 B2
7185152 Takahashi et al. Feb 2007 B2
7188141 Novaes Mar 2007 B2
7240100 Wein Jul 2007 B1
7246207 Kottomtharayil et al. Jul 2007 B2
7269664 Hutsch Sep 2007 B2
7284033 Jhanji Oct 2007 B2
7284104 Wu et al. Oct 2007 B1
7287047 Kavuri Oct 2007 B2
7290017 Wang Oct 2007 B1
7313659 Suzuki Dec 2007 B2
7315923 Retnamma et al. Jan 2008 B2
7328325 Solis et al. Feb 2008 B1
7340640 Karr Mar 2008 B1
7343453 Prahlad et al. Mar 2008 B2
7346623 Prahlad Mar 2008 B2
7346676 Swildens Mar 2008 B1
7346751 Prahlad Mar 2008 B2
7376947 Evers May 2008 B2
7379978 Anderson May 2008 B2
7383379 Patterson et al. Jun 2008 B2
7386535 Kalucha Jun 2008 B1
7389311 Crescenti et al. Jun 2008 B1
7395282 Crescenti et al. Jul 2008 B1
7421460 Chigusa et al. Sep 2008 B2
7424543 Rice Sep 2008 B2
7434022 Scharland Oct 2008 B1
7434219 DeMeno Oct 2008 B2
7440982 Lu et al. Oct 2008 B2
7454569 Kavuri et al. Nov 2008 B2
7457790 Kochunni Nov 2008 B2
7472142 Prahlad Dec 2008 B2
7490207 Amarendran et al. Feb 2009 B2
7493458 Kemeny Feb 2009 B1
7496841 Hadfield Feb 2009 B2
7500053 Kavuri et al. Mar 2009 B1
7529782 Prahlad et al. May 2009 B2
7536291 Vijayan Retnamma et al. May 2009 B1
7543125 Gokhale Jun 2009 B2
7545593 Sun et al. Jun 2009 B1
7546324 Prahlad et al. Jun 2009 B2
7565484 Ghosal Jul 2009 B2
7577689 Mastiner et al. Aug 2009 B1
7577694 Nakano Aug 2009 B2
7581077 Ignatius Aug 2009 B2
7584469 Mitekura Sep 2009 B2
7587715 Barrett Sep 2009 B1
7593935 Sullivan Sep 2009 B2
7596713 Mani-Meitav et al. Sep 2009 B2
7603386 Amarendran et al. Oct 2009 B2
7603626 Williams Oct 2009 B2
7606844 Kottomtharayil Oct 2009 B2
7610285 Zoellner et al. Oct 2009 B1
7613752 Prahlad et al. Nov 2009 B2
7617253 Prahlad et al. Nov 2009 B2
7617262 Prahlad et al. Nov 2009 B2
7620710 Kottomtharayil et al. Nov 2009 B2
7636743 Erofeev Dec 2009 B2
7651593 Prahlad et al. Jan 2010 B2
7656849 Evans Feb 2010 B1
7657550 Prahlad et al. Feb 2010 B2
7660807 Prahlad et al. Feb 2010 B2
7661028 Erofeev Feb 2010 B2
7668884 Prahlad Feb 2010 B2
7673175 Mora et al. Mar 2010 B2
7676542 Moser Mar 2010 B2
7689899 Leymaster Mar 2010 B2
7698520 Minami et al. Apr 2010 B2
7730031 Forster Jun 2010 B2
7734593 Prahlad Jun 2010 B2
7734669 Kottomtharayil et al. Jun 2010 B2
7747579 Prahlad et al. Jun 2010 B2
7751628 Reisman Jul 2010 B1
7761409 Stefik et al. Jul 2010 B2
7792789 Prahlad Sep 2010 B2
7801864 Prahlad et al. Sep 2010 B2
7801871 Gosnell Sep 2010 B2
7809914 Kottomtharayil et al. Oct 2010 B2
7814118 Kottomtharayil Oct 2010 B2
7827266 Gupta Nov 2010 B2
7831793 Chakravarty et al. Nov 2010 B2
7840537 Gokhale Nov 2010 B2
7844676 Prahlad Nov 2010 B2
7865517 Prahlad Jan 2011 B2
7865938 Shahbazi Jan 2011 B2
7882077 Gokhale Feb 2011 B2
7882093 Kotttomtharayil Feb 2011 B2
7882097 Ogilvie Feb 2011 B1
7904929 Jaunin et al. Mar 2011 B1
7937393 Prahlad May 2011 B2
7937420 Tabellion May 2011 B2
7937702 De Meno May 2011 B2
7984063 Kottomtharayil Jul 2011 B2
7984435 Kokkinen Jul 2011 B2
8037028 Prahlad Oct 2011 B2
8055627 Prahlad Nov 2011 B2
8060514 Arrrouye et al. Nov 2011 B2
8069218 Tormasov Nov 2011 B1
8078607 Oztekin et al. Dec 2011 B2
8099428 Kottomtharayil Jan 2012 B2
8108427 Prahlad Jan 2012 B2
8117173 Gurevich Feb 2012 B2
8126854 Sreedharan Feb 2012 B1
8131784 Zhuge Mar 2012 B1
8140786 Bunte et al. Mar 2012 B2
8141157 Farley et al. Mar 2012 B2
8145742 Parker Mar 2012 B1
8156086 Lu et al. Apr 2012 B2
8161003 Kavuri Apr 2012 B2
8170995 Prahlad et al. May 2012 B2
8200637 Stringham Jun 2012 B1
8200638 Zheng Jun 2012 B1
8219524 Gokhale Jul 2012 B2
8229954 Kottomtharayil et al. Jul 2012 B2
8230054 Mutnuru et al. Jul 2012 B2
8230195 Amarendran et al. Jul 2012 B2
RE43678 Major et al. Sep 2012 E
8285681 Prahlad et al. Oct 2012 B2
8307177 Prahlad et al. Nov 2012 B2
8346777 Auerbach et al. Jan 2013 B1
8347088 Moore et al. Jan 2013 B2
8352954 Gokhale Jan 2013 B2
8356209 Gunabalasubramaniam et al. Jan 2013 B2
8364652 Vijayan et al. Jan 2013 B2
8370166 Ronnewinkel Feb 2013 B2
8370542 Lu et al. Feb 2013 B2
8396838 Brockway Mar 2013 B2
8423731 Nadathur et al. Apr 2013 B1
8463989 Kumagai Jun 2013 B2
8468538 Attarde et al. Jun 2013 B2
8473585 Smith et al. Jun 2013 B1
8477618 Martin Jul 2013 B2
8495315 Rudolph et al. Jul 2013 B1
8495331 Matsumoto Jul 2013 B2
8505010 De Meno Aug 2013 B2
8510573 Muller Aug 2013 B2
8566285 Altrichter Oct 2013 B2
8578120 Attarde et al. Nov 2013 B2
8612394 Prahlad Dec 2013 B2
8655850 Ngo et al. Feb 2014 B2
8706867 Vijayan Apr 2014 B2
8707070 Muller Apr 2014 B2
8719809 Gohkale May 2014 B2
8725688 Lad May 2014 B2
8769048 Kottomtharayil Jul 2014 B2
8775823 Gokhale Jul 2014 B2
8782064 Kottomtharayil Jul 2014 B2
8826284 Fuller Sep 2014 B1
8832706 Gokhale et al. Sep 2014 B2
8849762 Kumarasamy Sep 2014 B2
8954446 Vijayan Retnamma et al. Feb 2015 B2
8959299 Ngo et al. Feb 2015 B2
8966288 Ignatius Feb 2015 B2
8977672 Karandikar Mar 2015 B2
9020900 Vijayan Retnamma et al. Apr 2015 B2
9092378 Kumarasamy Jul 2015 B2
9098495 Gokhale Aug 2015 B2
9122692 Dalal Sep 2015 B1
9128742 Akolkar et al. Sep 2015 B1
9128883 Gokhale Sep 2015 B2
9235582 Madiraju Varadaraju Jan 2016 B1
9239687 Vijayan et al. Jan 2016 B2
9262226 Gokhale et al. Feb 2016 B2
9274803 De Meno et al. Mar 2016 B2
9348827 Patwardhan May 2016 B1
9411821 Patwardhan Aug 2016 B1
9444726 Baldwin Sep 2016 B2
9444811 Nara Sep 2016 B2
9459968 Vijayan Oct 2016 B2
9633033 Vijayan et al. Apr 2017 B2
9633216 Gokhale Apr 2017 B2
9639274 Maranna et al. May 2017 B2
9639400 Gokhale et al. May 2017 B2
9645762 Nara May 2017 B2
9648100 Klose et al. May 2017 B2
9690666 Shembavnekar et al. Jun 2017 B1
9740574 Kochunni et al. Aug 2017 B2
9766825 Bhagi Sep 2017 B2
10157184 Yongtao et al. Dec 2018 B2
10162714 Hohl et al. Dec 2018 B2
10198324 Kottomtharayil Feb 2019 B2
10310950 Kochunni et al. Jun 2019 B2
10652212 Parekh May 2020 B2
10754729 Mehta Aug 2020 B2
10761942 Mehta et al. Sep 2020 B2
10860443 Dwarampudi et al. Dec 2020 B2
10891069 Ashraf et al. Jan 2021 B2
11237915 Mehta et al. Feb 2022 B2
11321181 Kottomtharayil May 2022 B2
20010012986 Conan Aug 2001 A1
20010028363 Nomoto Oct 2001 A1
20010052058 Ohran Dec 2001 A1
20020032878 Karpf Mar 2002 A1
20020049883 Schneider Apr 2002 A1
20020062369 von Klopp May 2002 A1
20020120858 Porter et al. Aug 2002 A1
20020138589 Al-Kazily et al. Sep 2002 A1
20020198882 Linden Dec 2002 A1
20030028592 Ooho Feb 2003 A1
20030046313 Leung et al. Mar 2003 A1
20030046396 Richter Mar 2003 A1
20030050979 Takahashi Mar 2003 A1
20030065897 Sadowsky Apr 2003 A1
20030084086 Simpson May 2003 A1
20030095500 Cao May 2003 A1
20030101086 San Miguel May 2003 A1
20030101155 Gokhale et al. May 2003 A1
20030188085 Arakawa Oct 2003 A1
20040039689 Penney et al. Feb 2004 A1
20040068713 Yannakoyorgos Apr 2004 A1
20040098383 Tabellion May 2004 A1
20040098423 Chigusa et al. May 2004 A1
20040193827 Mogi Sep 2004 A1
20040204949 Shaji et al. Oct 2004 A1
20040205206 Naik et al. Oct 2004 A1
20040220980 Forster Nov 2004 A1
20040236532 Wheless, Jr. Nov 2004 A1
20040267815 De Mes Dec 2004 A1
20050039069 Prahlad Feb 2005 A1
20050076087 Budd Apr 2005 A1
20050091229 Bali et al. Apr 2005 A1
20050091346 Krishnaswami et al. Apr 2005 A1
20050097070 Enis May 2005 A1
20050132018 Milic-Frayling Jun 2005 A1
20050149949 Tipton et al. Jul 2005 A1
20050154562 Matsuura Jul 2005 A1
20050216788 Mani-Meitav Sep 2005 A1
20050232669 Ishikawa Oct 2005 A1
20050246510 Retnamma Nov 2005 A1
20050251393 Georgescu Nov 2005 A1
20050251786 Citron Nov 2005 A1
20050278207 Ronnewinkel Dec 2005 A1
20060010286 Topham Jan 2006 A1
20060036619 Fuerst Feb 2006 A1
20060070061 Cox Mar 2006 A1
20060075007 Anderson et al. Apr 2006 A1
20060080370 Torii Apr 2006 A1
20060110286 Boukas May 2006 A1
20060115802 Reynolds Jun 2006 A1
20060116999 Dettinger Jun 2006 A1
20060123420 Nishikawa Jun 2006 A1
20060149604 Miller Jul 2006 A1
20060149724 Ritter Jul 2006 A1
20060168589 Moore Jul 2006 A1
20060177114 Tongdee et al. Aug 2006 A1
20060195678 Jalobeanu Aug 2006 A1
20060195838 Epstein Aug 2006 A1
20060224846 Amarendran et al. Oct 2006 A1
20060224852 Kottomtharayil Oct 2006 A1
20060265396 Raman et al. Nov 2006 A1
20060271935 Cox Nov 2006 A1
20060282900 Johnson et al. Dec 2006 A1
20070014347 Prechtl Jan 2007 A1
20070016750 Suzuki Jan 2007 A1
20070022122 Bahar Jan 2007 A1
20070022145 Kavuri Jan 2007 A1
20070028229 Knatcher Feb 2007 A1
20070043715 Kaushik Feb 2007 A1
20070061266 Moore et al. Mar 2007 A1
20070061298 Wilson et al. Mar 2007 A1
20070067595 Ghose Mar 2007 A1
20070128899 Mayer Jun 2007 A1
20070136541 Herz et al. Jun 2007 A1
20070143497 Kottomtharayil Jun 2007 A1
20070156783 Zbogar-Smith et al. Jul 2007 A1
20070166674 Kochunni Jul 2007 A1
20070174246 Sigurdsson Jul 2007 A1
20070183493 Kimpe Aug 2007 A1
20070185915 Prahlad et al. Aug 2007 A1
20070208788 Chakravarty et al. Sep 2007 A1
20070214330 Minami et al. Sep 2007 A1
20070220308 Yeung et al. Sep 2007 A1
20070226320 Hager et al. Sep 2007 A1
20070226535 Gokhale Sep 2007 A1
20070233865 Garbow Oct 2007 A1
20070239687 Seymour Oct 2007 A1
20070239836 Ahn Oct 2007 A1
20070250810 Tittizer Oct 2007 A1
20070271308 Bentley et al. Nov 2007 A1
20070288861 Tabellion et al. Dec 2007 A1
20070296258 Calvert et al. Dec 2007 A1
20080016310 Ghosal et al. Jan 2008 A1
20080022003 Alve Jan 2008 A1
20080033903 Carol et al. Feb 2008 A1
20080115138 Nachimuthu May 2008 A1
20080126302 Mora et al. May 2008 A1
20080155205 Gokhale Jun 2008 A1
20080168308 Eberbach et al. Jul 2008 A1
20080177994 Mayer Jul 2008 A1
20080184241 Headrick et al. Jul 2008 A1
20080222640 Daly et al. Sep 2008 A1
20080235604 Ebert Sep 2008 A1
20080263297 Herbst et al. Oct 2008 A1
20080263565 Luther Oct 2008 A1
20080282048 Miura Nov 2008 A1
20080288947 Gokhale et al. Nov 2008 A1
20080288948 Attarde Nov 2008 A1
20080320319 Muller et al. Dec 2008 A1
20090006733 Gold Jan 2009 A1
20090113435 Mizrachi et al. Apr 2009 A1
20090119322 Mills May 2009 A1
20090150168 Schmit Jun 2009 A1
20090150626 Benhase Jun 2009 A1
20090171883 Kochunni Jul 2009 A1
20090180155 Kato Jul 2009 A1
20090187908 He Jul 2009 A1
20090228531 Baumann Sep 2009 A1
20090307448 Gokhale Dec 2009 A1
20090319534 Gokhale Dec 2009 A1
20090320029 Kottomtharayil Dec 2009 A1
20090320033 Gokhale et al. Dec 2009 A1
20100005259 Prahlad Jan 2010 A1
20100031017 Gokhale et al. Feb 2010 A1
20100036772 Arceneaux Feb 2010 A1
20100070466 Prahlad Mar 2010 A1
20100070474 Kamleshkumar Mar 2010 A1
20100070725 Prahlad et al. Mar 2010 A1
20100070726 Nao et al. Mar 2010 A1
20100076932 Lad Mar 2010 A1
20100091547 Ogiwara Apr 2010 A1
20100114837 Prahlad May 2010 A1
20100125477 Mousseau May 2010 A1
20100161773 Prahlad Jun 2010 A1
20100172301 Watfa Jul 2010 A1
20100180332 Ben-Yochanan Jul 2010 A1
20100205582 Liu Aug 2010 A1
20100228709 Ahmed Sep 2010 A1
20100250549 Muller Sep 2010 A1
20100257240 Singh Oct 2010 A1
20100262911 Kaplan et al. Oct 2010 A1
20100274983 Murphy et al. Oct 2010 A1
20100299490 Attarde et al. Nov 2010 A1
20100302884 Lee Dec 2010 A1
20100306283 Johnson et al. Dec 2010 A1
20100306643 Chabot et al. Dec 2010 A1
20100332401 Prahlad Dec 2010 A1
20100332454 Prahlad Dec 2010 A1
20100332456 Prahlad et al. Dec 2010 A1
20100332479 Prahlad Dec 2010 A1
20110016091 Prahlad Jan 2011 A1
20110069179 Bathiche et al. Mar 2011 A1
20110093471 Brockway et al. Apr 2011 A1
20110138225 Gunabalasubramaniam et al. Jun 2011 A1
20110161299 Prahlad et al. Jun 2011 A1
20110173171 De Meno et al. Jul 2011 A1
20110173202 Paknad et al. Jul 2011 A1
20110231362 Attarde et al. Sep 2011 A1
20110302141 Nadathur Dec 2011 A1
20120011515 Jolfaei Jan 2012 A1
20120036108 Prahlad et al. Feb 2012 A1
20120066633 Saito Mar 2012 A1
20120084524 Gokhale Apr 2012 A1
20120084782 Chou Apr 2012 A1
20120094674 Wu Apr 2012 A1
20120124294 Atkisson May 2012 A1
20120150818 Vijayan Retnamma et al. Jun 2012 A1
20120150826 Vijayan Retnamma et al. Jun 2012 A1
20120203742 Goodman et al. Aug 2012 A1
20120254116 Thereka et al. Oct 2012 A1
20120254119 Kumarasamy et al. Oct 2012 A1
20120254824 Bansod Oct 2012 A1
20120263191 Baron Oct 2012 A1
20120265754 Kottomtharavil et al. Oct 2012 A1
20120272205 Fox Oct 2012 A1
20120275598 Vimpari et al. Nov 2012 A1
20120317085 Green et al. Dec 2012 A1
20130006625 Gunatilake et al. Jan 2013 A1
20130007710 Vedula Jan 2013 A1
20130013883 Kottomtharayil Jan 2013 A1
20130024429 Raas Jan 2013 A1
20130024568 Popczynski Jan 2013 A1
20130046817 Isbister Feb 2013 A1
20130067274 Huang Mar 2013 A1
20130104027 Bennett et al. Apr 2013 A1
20130110854 Kimber et al. May 2013 A1
20130111326 Lockhart May 2013 A1
20130117716 Stevens May 2013 A1
20130136253 Liberman Ben-Ami et al. May 2013 A1
20130145376 Gokhale et al. Jun 2013 A1
20130179405 Bunte Jul 2013 A1
20130219458 Ramanathan et al. Aug 2013 A1
20130232184 Grube Sep 2013 A1
20130238562 Kumarasamy Sep 2013 A1
20130238969 Smith et al. Sep 2013 A1
20130262387 Varadharajan Oct 2013 A1
20130262396 Kripalani Oct 2013 A1
20130262410 Liu et al. Oct 2013 A1
20130262615 Ankireddypalle Oct 2013 A1
20130262706 Stahlberg Oct 2013 A1
20130326159 Vijayan Dec 2013 A1
20130332412 Amarendran Dec 2013 A1
20130332505 Karandikar Dec 2013 A1
20140025641 Kumarasamy Jan 2014 A1
20140026000 Ma Jan 2014 A1
20140040210 Avery Feb 2014 A1
20140040580 Kripalani Feb 2014 A1
20140046900 Kumarasamy Feb 2014 A1
20140046904 Kumarasamy Feb 2014 A1
20140086127 Kim Mar 2014 A1
20140108351 Nallathambi Apr 2014 A1
20140108355 Prahlad Apr 2014 A1
20140108470 Lad Apr 2014 A1
20140150023 Gudorf May 2014 A1
20140156732 Lanni Jun 2014 A1
20140172793 Stritzel Jun 2014 A1
20140180664 Kochunni Jun 2014 A1
20140181032 Kumarasamy Jun 2014 A1
20140181037 Pawar Jun 2014 A1
20140181045 Pawar Jun 2014 A1
20140181085 Gokhale Jun 2014 A1
20140181443 Kottomtharayil Jun 2014 A1
20140188805 Vijayan Jul 2014 A1
20140188812 Vijayan Jul 2014 A1
20140188980 Longhenry Jul 2014 A1
20140189432 Gokhale Jul 2014 A1
20140201140 Vibhor Jul 2014 A1
20140201142 Varadharajan Jul 2014 A1
20140201150 Kumarasamy Jul 2014 A1
20140201154 Varadharajan Jul 2014 A1
20140201155 Vijayan Jul 2014 A1
20140201161 Kumarasamy Jul 2014 A1
20140201162 Kumarasamy Jul 2014 A1
20140201170 Vijayan et al. Jul 2014 A1
20140201171 Vijayan Jul 2014 A1
20140250076 Lad Sep 2014 A1
20140279922 Kottomtharayil et al. Sep 2014 A1
20140281214 Rehm Sep 2014 A1
20140289189 Chan Sep 2014 A1
20140289196 Chan Sep 2014 A1
20140337285 Gokhale et al. Nov 2014 A1
20140365443 Goel Dec 2014 A1
20150023086 Wendell Jan 2015 A1
20150067181 Roy Mar 2015 A1
20150081948 Thereska Mar 2015 A1
20150186487 Karandikar Jul 2015 A1
20150193229 Bansod et al. Jul 2015 A1
20150194221 Hong Jul 2015 A1
20150227355 Tripoli Aug 2015 A1
20150234879 Baldwin Aug 2015 A1
20150244775 Vibhor Aug 2015 A1
20150278024 Barman et al. Oct 2015 A1
20150301903 Mutha et al. Oct 2015 A1
20150324226 Gokhale et al. Nov 2015 A1
20150324233 Gokhale Nov 2015 A1
20150331899 Gokhale et al. Nov 2015 A1
20150347238 Kumarasamy et al. Dec 2015 A1
20150350133 Murphy Dec 2015 A1
20150381522 Cai Dec 2015 A1
20160110266 Nara Apr 2016 A1
20160140199 Karandikar May 2016 A1
20160350391 Vijayan et al. Dec 2016 A1
20160371153 Dornemann et al. Dec 2016 A1
20160378616 Wigmore et al. Dec 2016 A1
20170024286 Vijayan Jan 2017 A1
20170134487 Karandikar May 2017 A1
20170134492 Klose et al. May 2017 A1
20170160970 Gokhale Jun 2017 A1
20170160971 Gokhale Jun 2017 A1
20170168903 Dornemann et al. Jun 2017 A1
20170185488 Kumarasamy et al. Jun 2017 A1
20170192866 Vijayan et al. Jul 2017 A1
20170193003 Vijayan et al. Jul 2017 A1
20170199924 Gokhale Jul 2017 A1
20170206018 Nara et al. Jul 2017 A1
20170206112 Gokhale Jul 2017 A1
20170235647 Kilaru et al. Aug 2017 A1
20170242871 Kilaru et al. Aug 2017 A1
20180011767 Kochunni et al. Jan 2018 A1
20180013825 Klose et al. Jan 2018 A1
20180048705 Karandikar Feb 2018 A1
20180067819 Kotha et al. Mar 2018 A1
20180129435 Bhagi et al. May 2018 A1
20180225177 Bhagi et al. Aug 2018 A1
20180275881 Ashraf Sep 2018 A1
20180285201 Bangalore Oct 2018 A1
20180285209 Liu Oct 2018 A1
20180285353 Rao Oct 2018 A1
20190065509 Liu et al. Feb 2019 A1
20190073254 Vibhor et al. Mar 2019 A1
20190087108 Bhagi et al. May 2019 A1
20190155699 Luo et al. May 2019 A1
20190213462 McDonald Jul 2019 A1
20190243911 Kobozev et al. Aug 2019 A1
20190278668 Kochunni et al. Sep 2019 A1
20190286839 Mutha et al. Sep 2019 A1
20210056001 Dwarampudi et al. Feb 2021 A1
Foreign Referenced Citations (27)
Number Date Country
2009260757 Aug 2012 AU
2724249 Dec 2009 CA
0259912 Mar 1988 EP
0405926 Jan 1991 EP
0467546 Jan 1992 EP
0541281 May 1993 EP
0774715 May 1997 EP
0809184 Nov 1997 EP
0899662 Mar 1999 EP
0910019 Apr 1999 EP
0981090 Feb 2000 EP
0986011 Mar 2000 EP
1035690 Sep 2000 EP
2216368 Oct 1989 GB
07-046271 Feb 1995 JP
07-073080 Mar 1995 JP
08-044598 Feb 1996 JP
2000-035969 Feb 2000 JP
2003-531435 Oct 2003 JP
WO 9513580 May 1995 WO
WO 9912098 Mar 1999 WO
WO 200058865 Oct 2000 WO
WO 200106368 Jan 2001 WO
WO 200116693 Mar 2001 WO
WO 200180005 Oct 2001 WO
WO 2006052872 May 2006 WO
WO 2009154806 Dec 2009 WO
Non-Patent Literature Citations (28)
Entry
US 10,430,280 B2, 10/2019, Vijayan (withdrawn)
U.S. Appl. No. 09/609,977, filed Jul. 5, 2000, Prahlad.
“Multi Instancing,” retrieved from http://documentation.commvault.com/hds/release_8_0_0/books_online_1/english_us/deployment/install/misc/multi_instancing.htm[Feb. 18, 2014 11:57:19 AM] on Feb. 18, 2014, 3 pages.
Armstead et al., “Implementation of a Campus-Wide Distributed Mass Storage Service: The Dream vs. Reality,” IEEE, 1995, pp. 190-199.
Arneson, “Mass Storage Archiving in Network Environments” IEEE, Oct. 31-Nov. 1998, pp. 45-50.
Cabrera, et al. “ADSM: A Multi-Platform, Scalable, Back-up and Archive Mass Storage System,” Digest of Papers, Compcon '95, Proceedings of the 40th IEEE Computer Society International Conference, Mar. 5, 1995-Mar. 9, 1995, pp. 420-427, San Francisco, CA.
Eitel, “Backup and Storage Management in Distributed Heterogeneous Environments,” IEEE, 1994, pp. 124-126.
Gait, “The Optical File Cabinet: A Random-Access File system for Write-Once Optical Disks,” IEEE Computer, vol. 21, No. 6, pp. 11-22 (Jun. 1988).
Hennessy et al., “Computer Architecture—A Quantitative Approach”, 2nd Edition, 1996, pp. 246-250.
Huff, KL, “Data Set Usage Sequence Number,” IBM Technical Disclosure Bulletin, vol. 24, No. 5, Oct. 1981 New York, US, pp. 2404-2406.
Hutchinson, Norman C., et al., “Logical vs. physical file system backup”, OSDI, vol. 99, 1999, 12 pages.
Jander, “Launching Storage-Area Net,” Data Communications, US, McGraw Hill, NY, vol. 27, No. 4(Mar. 21, 1998), pp. 64-72.
Matthews, Jeanna, et al. “Data protection and rapid recovery from attack with a virtual private file server and virtual machine appliances.” Proceedings of the IASTED International Conference on Communication, Network and Information Security (CNIS 2005). 2005, 14 pages.
Microsoft Press Computer Dictionary Third Edition, “Data Compression,” Microsoft Press, 1997, p. 130.
Pitoura et al., “Locating Objects in Mobile Computing”, IEEE Transactions on Knowledge and Data Engineering, vol. 13, No. 4, Jul./Aug. 2001, pp. 571-592.
Quinlan, Sean. “A cached worm file system.” Software: Practice and Experience, vol. 21, No. 12, 1991, pp. 1289-1299.
Rosenblum et al., “The Design and Implementation of a Log-Structure File System,” Operating Systems Review SIGOPS, vol. 25, No. 5, May 1991, New York, US, pp. 1-15.
Rowe et al., “Indexes for User Access to Large Video Databases”, Storage and Retrieval for Image and Video Databases II, IS, & T/SPIE Symp. On Elec. Imaging Sci. & Tech., Feb. 1994, pp. 1-12.
Veeravalli, B., “Network Caching Strategies for a Shared Data Distribution for a Predefined Service Demand Sequence,” IEEE Transactions on Knowledge and Data Engineering, vol. 15, No. 6, Nov./Dec. 2003, pp. 1487-1497.
Wu, Chin-Hsien, Tei-Wei Kuo, and Li-Pin Chang. “Efficient initialization and crash recovery for log-based file systems over flash memory.”, Proceedings of the 2006 ACM symposium on Applied computing. ACM, 2006, 5 pages.
Examination Report in Australian Patent Application No. 2009260757, mailing date Nov. 25, 2011, 2 pages.
International Search Report and Written Opinion for PCT/US2011/054374, dated May 2, 2012, 9 pages.
Extended European Search Report for Application No. EP 09767119.2, mail date Feb. 11, 2013, 12 pages.
Examination Report in European Patent Application No. 09767119.2, mailing date Feb. 1, 2018, 3 pages.
Notice of Allowance for Canada Patent Application No. 2724249 dated Jan. 28, 2015, 1 page.
International Search Report and Written Opinion received for PCT Patent Application No. PCT/US2009/032325, mailed on Mar. 17, 2009, 8 pages.
International Preliminary Report on Patentability for International Application No. PCT/US2009/032325, date of mailing Mar. 17, 2009, 11 pages.
Arneson, David A., “Development of Omniserver,” Control Data Corporation, Tenth IEEE Symposium on Mass Storage Systems, May 1990, ‘Crisis in Mass Storage’ Digest of Papers, pp. 88-93, Monterey, CA.
Related Publications (1)
Number Date Country
20220222148 A1 Jul 2022 US
Divisions (2)
Number Date Country
Parent 14294344 Jun 2014 US
Child 16239490 US
Parent 12141776 Jun 2008 US
Child 14294344 US
Continuations (1)
Number Date Country
Parent 16239490 Jan 2019 US
Child 17705970 US