Disk caching method for writing data from computer memory including a step of writing a plurality of physically adjacent blocks in a single I/O operation
A method for synchronously writing data from memory to a disk drive memory device minimizes the number of actual I/O operations by writing data to disk in large chunks. The method comprises the steps of: allocating an array for saving buffer pointers; mapping the data to the disk space; allocating a buffer for each block of disk space; copying the data into the buffer; saving a pointer to the buffer in the array and then writing physically adjacent blocks to disk in one I/O operation. The method also updates and reads address blocks in the buffer pool and writes them to disk only at the end of the write request.
A computer system is programmed with a plurality of programming instructions for implementing a software function, having an installation utility with logic for generating, if possible, an alternative disk block allocation for a current disk block allocation that will yield improved overall access time for a sequence of disk accesses. In some embodiments, the logic includes logic for tracing the sequence of disk accesses to determine the current disk block allocation, logic for generating the alternative disk block allocation, if possible, using the trace results, and logic for effectuating the alternate disk block allocation, if generated. In one particular embodiment, the logic for generating the alternative disk block allocation employs a random search approach, while in another embodiment, the logic for generating the alternative disk block allocation employs a heuristic approach.
A method and apparatus for file storage allocation for secondary storage systems for allocating storage space for both small and large files in the same file system that dynamically utilizes at least two different sizes of logical storage allocation units to organize files stored on one or more physical storage devices. A first, smaller logical allocation unit is used to allocate space for the beginning of files until the size of the file passes a predefined maximum small allocation unit size. Beyond the predefined maximum small allocation unit size for a file, a second, larger logical allocation unit is used to allocate the remaining space necessary to store the file. In the preferred embodiment, small allocation units of 1K and large allocation units of 16K are used to map files directly and indirectly to the physical storage devices in a secondary file storage system. Such that the addressable storage capacity in a secondary file storage system is maximized while the amount of unused storage space is minimized.
A system for writing data to a storage media comprises a data acquisition device for acquiring digitized data; a media writing device for inputting the digitized data to the storage media; and a computer comprising a first microprocessor for controlling operations of the computer; a first storage device for receiving and storing the digitized data from said data acquisition device; and a second storage device for receiving and storing the digitized data from the first storage device, and for transferring the digitized data to the writing device after the first storage device transfers the digitized data to the second storage device for substantially eliminating writing errors.
A fractional data processing is performed until a copy source character string comes to K-byte boundary (e.g., K=8). Then, a series of steps of loading data K-bytes at a time, generating data according to the byte-boundary of the copy destination, and storing data K bytes at a time are repeated. If there is any fractional data remaining at the end part of the character string, the fractional data is copied in the copy destination area.
A method and corresponding controller apparatus for creating, updating and maintaining mapping information in a virtual mass storage subsystem. A request to manipulate a virtual block or cluster identifies a particular virtual block number. The virtual block number is mapped to a first physical block number by a direct calculation. A header data structure contained in the first physical block contains mapping information to locate other physical blocks associated with the virtual cluster. In addition to the header data structure, the first physical block contains a portion of the stored data for the corresponding virtual cluster. Additional physical blocks which stored the data of the virtual cluster are located from the mapping information in the header of the first physical block. The methods of the present invention provide improved performance and reduced buffer memory requirements in the virtual mass storage controller circuits of the subsystem as compared to prior approaches.