Abstract:
A system and method enhances performance of a log adapted for use with a storage system. The log is illustratively organized into a plurality of regions, wherein each region comprises one or more entries and wherein each region is allocated to a consistency collection. As used herein, a consistency collection is defined as a set of one or more data containers among which it is desired to maintain transaction consistency, i.e., atomicity of updates of a transaction to those containers. Each entry of the region is adapted to store an update of data from a source, e.g., an application executing on the storage system. Thus, the consistency collection may comprise multiple data containers associated with one or more applications configured to maintain the atomicity of transaction updates to the collection of containers.
Abstract:
A method that uses a single callback function for a multiphase service with possible discontinuation of execution between the phases. The method is based on assignment of a case in the callback function for each phase or state of the service and a stack of state descriptors. At each call to the callback function, the top descriptor is popped off the stack and the appropriate case in the callback function is run.
Abstract:
A data storage system employs a universal timer to perform asynchronous peer-to-peer data mirroring, where primary and secondary controllers cooperatively perform periodic consistency checks according to the universal timer. The system includes multiple primary storage controllers each having a counterpart secondary controller. Primary and secondary controllers access a universal timer, such as a global positioning system (GPS). Each primary controller receives updates, and stores the updates in an order, providing each update with a sequence code according to its storage order. Each primary controller also transmits the updates and corresponding sequence codes to its secondary controller. Each secondary controller receives updates from its counterpart primary storage controller and stores the updates in a journal. Whenever a periodic timer interval of the universal timer expires, several things happen. Each primary controller sends its counterpart secondary controller a confirmation message useful in identifying all updates that were sent in the expired interval. Also, each secondary controller checks for receipt of the confirmation message, and if received, the secondary controller checks the journal for presence of all updates identified by the confirmation message. If each secondary controller finds all identified updates in its journal, all secondary controllers proceed to commit the journaled updates to secondary storage.
Abstract:
Disclosed is a programming aid for enabling a computer program in source code form to be viewed using a general purpose document browser, which browser is responsive to a defined set of control tags determining the appearance of a document thereon, the programming aid comprising: a parser for generating a symbol table from an input file in which the program is stored; means to derive control tag locations from the symbol table; and an output file generator for inserting control tags into the program at the derived locations to generate an output file which can be viewed using the general purpose document browser. In this way, the full power of available general purpose document browsers may be used in software development and maintenance to view programs in a convenient way. A tool is provided that automatically marks up a program with control tags so that users are free to use the document browser of their choice as a powerful program browser.
Abstract:
A method for operating a data storage system that is comprised of at least one disk. The method includes a step of partitioning a data compression unit into n basic compression units, where n is greater than one. Each data compression unit is comprised of a plurality of disk sectors and each of n basic compression units begins with a different initial sector. A next step partitions the data compression unit into X intervals, where X is less than n. Each of the X intervals begins with a different initial sector and within one of the n basic compression units. Further steps of the method include storing, external to the at least one disk, a plurality of first pointers each of which points to the initial sector of one of the n basic compression units wherein the 1/X, 2/X, . . . , (X-1)/X intervals begin; storing, within each of the initial sectors of the individual ones of the n basic compression units wherein the 1/X, 2/X, . . . , (X-1)/X intervals begin, a second pointer to the initial sector of the interval that begins within the basic compression unit; and, in response to a disk read operation that reads a compressed data unit that begins with one of the sectors that is located within one of the X intervals, accessing the beginning sector of the compressed data unit in accordance with one of the first pointers and one of the second pointers. The step of allocating includes a step of determining an actual compression ratio for the record, determining a value of a longest run of identical characters within the record, and adjusting the actual compression ratio based on the value of the longest run of identical characters. The step of allocating also includes a step of adding at least one additional sector to the estimated number to enable the compressed record to be subsequently updated in place.
Abstract:
A method and apparatus for improving storage controller throughput and reducing unit control block contention when selecting a Utility Volume for servicing non-specific read requests. Throughput is increased by enabling the storage controller to service non-specific read requests issued against a Utility Volume which is not the same as the device associated with the data that the non-specific read is requesting. The Utility Volume is dynamically selected by considering the current loads on the available devices for both specific and non-specific processing. A Penalty Index is assigned to each volume, wherein the Penalty Index is a weighted average of the specific and non-specific processing. The device having the lowest Penalty Index is selected as the Utility Volume for a session. A Penalty Index evaluation is made at a Reference Point which is further enabled by a random clock to ensure that sessions do not likely pick the same Utility Volume.
Abstract:
An advanced clock synchronization technique is adapted for use with a replication service in a data backup and recovery storage environment. The storage environment includes a plurality of source storage systems and target storage systems, wherein the source storage systems are illustratively embodied as source replication nodes. The advanced clock synchronization technique establishes a software-only, loosely-accurate global clock based on a timestamp and an associated error boundary. Notably, the timestamp and its error boundary are used as global clock information to enable synchronization (i.e., ordering of storage requests) among the source replication nodes and/or the target storage systems, thereby ensuring consistent replication of the storage requests on the target storage systems.
Abstract:
System for the storage and maintenance of data sets updates in a storage subsystem, that comprises direct access storage device(s) that serves as the main storage of the storage subsystem and on which the data sets are originally stored; a Cache memory storage device that enables fast interaction with the storage subsystem, on which a copy of the data sets is stored; a non-volatile storage device partitioned into a plurality of fixed size non-volatile memory pages. The system employs an update process, in which the changes to the data sets are applied to the data set copy stored on the Cache memory device; a journal of the changes that are being made to the data sets stored on the Cache memory device, utilizing the non-volatile memory pages to store update records reflecting the changes in the data sets; a reconstruction process in which the data sets are reconstructed utilizing the update records stored on the non-volatile memory pages, and the data sets stored on the direct access storage device; and a process for freeing arbitrary non-volatile pages from their prior association with data sets that are stored in the Cache memory.
Abstract:
Disclosed is a method, system, program, and data structures for maintaining electronic data at a point-in-time. A first data structure indicates point-in-time data at one of a first storage location and a corresponding second storage location. A second data structure indicates point-in-time data at one of a first storage location and corresponding second storage location. A first relationship data structure indicates a relationship between the first storage location and corresponding second storage location and a second relationship data structure indicates a relationship between the first storage location and second storage location. A request to process the first storage location is processed by processing the first relationship data structure to determine the corresponding second storage location for the first storage location and processing the first data structure to determine whether data at the first storage location was transferred to the second storage location. A request to process the second storage location is processed by processing the second relationship data structure to determine the corresponding first storage location for the second storage location and processing the second data structure to determine whether the point-in-time data at the first storage location was transferred to the second storage location.
Abstract:
A method and system are disclosed for transferring backup copies of designated multi-track datasets which are stored in a plurality of storage subsystems to a host system via data channel during concurrent execution of an application. Upon receiving a request for a backup copy, execution of an application is temporarily suspended. A dataset logical-to-physical storage system address concordance is formed and execution of the application is resumed thereafter. Any application initiated updates to affected tracks within the designated datasets which occur prior to generation of a backup copy are processed by buffering the updates, copying the affected tracks to storage subsystem memory, updating the address concordance and writing the updates to the affected tracks within the dataset. Requests from the host system to transfer a selected sequence of tracks within the designated multi-track dataset are then examined to determine if the sequence includes affected tracks which have previously been copied to storage subsystem memory. An artificial track is then automatically substituted into the requested sequence of selected tracks for each affected track which has previously been copied to storage subsystem memory during transfer of the selected sequence of tracks such that the host system is made aware of the previous copying of these affected tracks.