WO1997008623A1 - Coherent file system access during defragmentation operations on a storage media - Google Patents

Coherent file system access during defragmentation operations on a storage media Download PDF

Info

Publication number
WO1997008623A1
WO1997008623A1 PCT/US1996/003683 US9603683W WO9708623A1 WO 1997008623 A1 WO1997008623 A1 WO 1997008623A1 US 9603683 W US9603683 W US 9603683W WO 9708623 A1 WO9708623 A1 WO 9708623A1
Authority
WO
WIPO (PCT)
Prior art keywords
file
driver
alias
defragmentor
computer
Prior art date
Application number
PCT/US1996/003683
Other languages
French (fr)
Inventor
Leonardo Cohen
Mark Kevin Kennedy
Original Assignee
Symantec Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Symantec Corporation filed Critical Symantec Corporation
Publication of WO1997008623A1 publication Critical patent/WO1997008623A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1724Details of de-fragmentation performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Definitions

  • the present invention pertains to the fields of computer systems and software. More particularly, this invention relates to mechanisms for defragmenting files contained on storage media while enabling coherent, multithreaded access to the files during defragmentation operations.
  • Prior computer systems such as personal computer systems, typically perform a wide variety of specialized tasks. Such specialized tasks are usually implemented within a variety of individual application programs. Typically, such application programs are loaded into and executed from a primary physical memory of the computer system. Such primary physical memory usually comprises dynamic random access memory (DRAM) .
  • DRAM dynamic random access memory
  • each application program requires a corresponding allocation of memory space in the computer system for code and data storage.
  • prior computer operating systems usually allocate memory space for multiple application programs.
  • Prior computer systems typically implement virtual memory mechanisms that enable the limited capacity physical memory to appear as a much larger virtual memory address space to the individual application programs. Such mechanisms usually enable the sharing of physical memory among multiple application programs on a demand driven basis.
  • such a virtual memory address space includes the physical memory of the computer system along with a swap file contained on a mass storage media such as a disk drive.
  • a swap file typically provides a secondary storage for the virtual memory address space.
  • the memory pages of individual application programs are typically swapped between the physical memory and the swap file in a manner transparent to individual applications.
  • Such a swap file typically grows and shrinks after computer system startup as application programs are installed, executed, and removed from the computer system.
  • other types of computer system files on the same mass storage media are typically created and modified by the operating system and application programs as the swap file grows and shrinks.
  • computer system files including the swap file typically become fragmented and scattered throughout random portions of the storage media during normal operations.
  • fragmentation of files on the storage media increases the input/output time required to fetch files from the storage media into the physical memory.
  • Such increased input/output delays typically slow the overall performance of such a computer system.
  • prior operating systems usually provide services that allow software utilities or drivers to lock out all access to individual volumes on the storage media.
  • a lock out service allows a defragmentation utility to copy defragmented files to contiguous areas of the media and update the file system structure while locking out conflicting file accesses by the operating system or application programs.
  • Such a locking mechanism usually enables a defragmentation utility to maintain the coherency of the file system during defragmentation.
  • More recently evolved operating systems for computer systems provide multithreaded, preemptive multitasking of individual application programs executing on the computer system.
  • One such recently evolved operating system is Windows 95 which is available from Microsoft Corporation of Redmond, Washington. While Windows 95 provides a level 3 locking service that prevents accesses to most types of files, such a locking service cannot be used to lock out access to certain types of files such as the swap file.
  • An operating system such as Windows 95 must be able to access the swap file at any time in order to provide virtual memory support to application programs and prevent a lockup in the computer system. Any attempt to defragment the swap file may conflict with swap file accesses by the operating system in a preemptive multitasking environment. Such conflicting accesses to the swap file can cause incoherency of swap file information with catastrophic results for the operating system.
  • a preemptively multitasked multithreaded operating system such as Windows 95 simply does not allow locking and defragmenting of the swap file.
  • the swap file for such a computer system fragments across the storage media as the computer system operates from startup or boot time.
  • Such fragmentation of the swap file typically slows the overall execution performance of such a computer system by increasing input/output access times to the swap file during virtual memory paging operations.
  • fragmentation of the swap file on a rotating magnetic disk usually increases the "seek" time for the disk when accessing the swap file.
  • One object of the present invention is to defragment files on a storage media while enabling coherent access to such files during the defragmentation operation.
  • Another object of the present invention is to enable multithreaded preemptive multi-tasking of application programs during defragmentation.
  • Another object of the present invention is to enable an operating system to coherently access a swap file while the swap file is being defragmented.
  • a further object of the present invention is to enable coherent access to a defragmented swap file and to update internal data structures maintained by the file system of the operating system that point to the swap file.
  • a file defragmentation utility for a computer system that includes a defragmentor routine and an alias driver.
  • the defragmentor routine defragments clusters or portions of the file on a storage media and then updates one or more file system structures to indicate the new locations of the defragmented clusters of the file.
  • the alias driver traps accesses to the file and maintains coherent access to the file while the file system structures are updated.
  • Fig. 1 illustrates the computer system including a central processing unit (CPU) , a physical memory, and a disk drive;
  • CPU central processing unit
  • Fig. 2 illustrates a software architecture of the computer system which is generally divided into application programs that execute in a user mode of the
  • Fig. 3 represents an example layout of information on the storage media of the disk drive wherein the file system logically divides the storage media into a series of clusters;
  • Fig. 4 is a flow diagram that illustrates the functions of the disk defragmentor during defragmentation operations on a particular cluster of the swap file
  • Fig. 5 illustrates the functions of the disk alias driver while in the monitor mode
  • Fig. 6 illustrates the functions of the disk alias driver while in the translate mode.
  • Fig. 1 illustrates the computer system 10 for one embodiment.
  • the computer system 10 includes a central processing unit (CPU) 12, a physical memory 14, a disk drive 16 and a mass storage device 18.
  • the computer system 10 also includes a CD-ROM drive 150 that accepts a compact disk 151 containing software and related information and a floppy disk drive 152 that accepts a floppy disk 152 containing software and related information.
  • the application routines and driver routines disclosed herein may be provided via the compact disk 151 or the floppy disk 152 or a wide-variety of other computer readable storage media including semiconductor based storage media such as flash memory.
  • the CPU 12 communicates with the disk drive 16 and the mass storage device 18 via host bus 20.
  • the CPU 12 communicates with peripheral devices such as the disk drive 16 and the mass storage device 18 through a variety of input/output interface circuitry including bus bridge circuits that enable communication between the host bus 20 and a variety of standardized peripheral buses.
  • the CPU 12 conforms to an Intel compatible microprocessor architecture that provides mechanisms that support virtual memory, including mechanisms for detecting page faults during accesses to the physical memory 14 by the CPU 12.
  • the CPU 12 implements a virtual 8086 mode according to the Intel compatible microprocessor architecture that enables software compatibility with application programs developed for Microsoft Corporation's DOS operating system.
  • the disk drive 16 provides a rotating magnetic media mass storage for large scale code and data storage for the computer system 10.
  • the mass storage device 18 is intended to represent a variety of other mass storage media such as flash memory subsystems that may also contain fragmented files.
  • Fig. 2 illustrates a software architecture of the computer system 10 for one embodiment.
  • the software architecture of the computer system 10 is generally divided into application programs that execute in the Ring 3 user mode of the CPU 12 and operating system components that execute in the Ring 0 privileged mode of the CPU 12.
  • the sof ware architecture shown generally illustrates portions of the Windows 95 operating system model.
  • the application programs executing in the user mode of the CPU 12 include a set of virtual machines 30-32.
  • the virtual machine 30 is referred to as the system virtual machine.
  • the system virtual machine 30 includes a 16 bit window subsystem (WIN16) that enables execution of application programs written to conform to 16 bit Microsoft Windows such as application programs 40-41.
  • the virtual machine 30 also includes a 32 bit windows subsystem (WIN32) that enables execution of application programs compatible with 32 bit Microsoft Windows including applications 50-51 and a disk defragmentor 60.
  • WIN16 16 bit window subsystem
  • WIN32 32 bit windows subsystem
  • the disk defragmentor 60 is an application program for the WIN 32 subsystem that optimizes the performance of the disk drive 16 and therefore the computer system 10 by defragmenting files on the disk media of the disk drive 16.
  • the virtual machines 31-32 each comprise a disk operating system (DOS) virtual machine for execution of DOS compatible application programs on the computer system 10.
  • DOS disk operating system
  • the operating system for the computer system 10 maintains files on the disk drive 16 or the mass storage device 18 using a set of software elements 70-78.
  • the software elements 70-78 are each implemented as virtual device drivers under Windows 95 and are arranged to present to a driver model to the virtual machine manager 80.
  • the installable file system manager 70 maintains an abstraction of the computer system 10 file system and communicates with the file system module 72.
  • the file system module 72 includes a file system driver 86 that enables reading and writing of individual sectors of the disk drive 16.
  • the file system driver 86 maintains a file system structure for the computer system 10 including a file allocation table and a directory- structure on the disk drive 16.
  • the file system driver 86 maintains a virtual file allocation table (VFAT) file structure.
  • the file system module 72 also includes a swap file mapping structure 84 that indicates the locations of clusters of the swap file on the disk drive 16 or the mass storage device 18.
  • the file system 72 initializes the swap file mapping structure 84 at system boot time and updates the swap file mapping structure 84 as the swap file on the disk drive 16 grows and shrinks and fragments during normal operations.
  • the swap file mapping structure 84 is never updated by a search of the file allocation table and directory structure the disk drive 16 because the file system 72 for Windows 95 "assumes" that the swap file will never be relocated or defragmented.
  • the file system driver 86 transfers information to and from the disk drive 16 through an input/output supervisor 74.
  • the input/output supervisor (IOS) 74 provides IOS services that in turn communicate with the disk drive 16 hardware through either a monolithic port driver 76 or a device driver stack 78.
  • the device driver stack 78 implements a stack of device driver calling routines 90-91.
  • Fig. 3 represents an example layout of information on the storage media provided disk drive 16.
  • the file system 72 logically divides the storage media of the disk drive 16 into a series of clusters. For purposes of this illustration, only the clusters 100-119 are shown.
  • the disk drive 16 contains a file allocation table (FAT) and a directory structure (DIR) which provide the file system structure for the computer system 10.
  • the directory structure stores starting cluster numbers for individual files on the disk drive 16 and the file allocation table provides a link list of cluster numbers that enable the file system driver 86, in one embodiment VFAT, and the file system 72 to properly locate individual files on the disk drive 16.
  • swap file comprising swap file portions or clusters A-E.
  • Swap file portion A is stored in the cluster 100 of the disk media and swap file portion B is stored in the cluster 101 of the disk media of the disk drive 16.
  • the swap file portions A-E are scattered over various clusters of the disk media.
  • the swap file portions A-E are scattered through the clusters 100, 101, 105, 108 and 112 of the disk media of the disk drive 16.
  • the disk defragmentor 60 defragments the swap file portions A-E by copying or cloning the swap file portions A-E over to a series of contiguous clusters, in this example clusters 115-119 of the disk media of the disk drive 16. Thereafter, the disk defragmentor 60 updates the file allocation table and the directory structure to reflect the new location of the swap file portions A-E.
  • the disk defragmentor 60 obtains the assistance of a disk alias driver 82 which executes in the privileged mode of the CPU 12.
  • the disk defragmentor 60 dynamically loads the disk alias driver 82 into the physical memory 82 as needed.
  • the disk alias driver 82 is a linear executable file that the operating system loader marks as non-pageable.
  • the linear page lock of the disk alias driver 82 prevents preemption during certain atomic operations of the disk alias driver 82.
  • the disk alias driver 82 is installed as a virtual device driver and is accessed by the disk defragmentor 60 through WIN 32 device I/O control (DIocontrol) calls.
  • DIocontrol device I/O control
  • the disk alias driver 82 traps, monitors, and under certain conditions translates file system accesses to the swap file.
  • the translation of swap file accesses provides coherent swap file information during defragmentation and until the file allocation table and the directory structure on the disk drive 16 are updated to indicate the proper location of the defragmented swap file.
  • the disk defragmentor 60 also uses the disk alias driver 82 to update the swap file mapping structure 84 to properly indicate to the file system driver 86 the new location of the defragmented swap file. This update of the swap file structure is necessary for a Windows 95 embodiment in which defragmentation of the swap file is assumed not to ever occur.
  • Fig. 4 is a flow diagram that illustrates the functions of the disk defragmentor 60 during defragmentation operations on a particular cluster of the swap file.
  • the disk defragmentor 60 employs the assistance of a monitor mode and a translate mode of the disk alias driver 82 to maintain swap file coherency while the particular swap file cluster is cloned and the appropriate file system structures are updated.
  • the disk defragmentor 60 puts the disk alias driver 82 into the monitor mode. While in the monitor mode, the disk alias driver 82 records or logs accesses to a specified area of the storage media of the disk drive 16. In this case, the specified area corresponds to a particular cluster of the swap file that must be cloned during defragmentation.
  • the disk defragmentor 60 generates a call to the disk alias driver 82 wherein the call specifies the monitor mode and includes parameters that specify the portion of the disk media of the disk drive 16 being monitored. For one embodiment, the monitor call to the disk alias driver specifies a sector and delta value in units compatible with the input/output supervisor 74.
  • the disk defragmentor 60 copies the particular swap file portion or cluster to an appropriate contiguous area of the disk drive 16.
  • the disk defragmentor 60 puts the disk alias driver 82 into a translate mode. While in the translate mode, the disk alias driver 82 redirects accesses targeted for the old cluster of the swap file to the newly cloned cluster generated at block 202.
  • the disk defragmentor 60 generates a call to the disk alias driver 82 wherein the call specifies the translate mode and includes parameters that specify the sectors and delta values that contain the old and the new swap file clusters.
  • the disk alias driver 82 returns an indication of whether a conflicting swap file occurred or was logged while the disk alias driver 82 was in the monitor mode. Such a conflicting swap file access indicates that the newly cloned cluster of the swap file contains stale data. If the disk alias driver 82 returns the indication of the conflicting swap file access, then control proceeds back to block 202 to retry the clone operation on the particular swap file cluster. Otherwise, control proceeds to block 208.
  • the disk defragmentor 60 updates the file allocation table and directory structure stored on the disk drive 16. Thereafter at block 210, the disk defragmentor 60 resets the disk alias driver 82 which causes the disk alias driver 82 to leave the translate mode and to remove hooks into the input/output supervisor 74 used to trap IOS commands. At this point, the translation functions of the disk alias driver are no longer required because the file allocation table and the directory structure and other relevant structures for the file system 72 have been properly updated to reflect the location of the defragmented swap file cluster.
  • Fig. 5 illustrates the functions of the disk alias driver 82 while in the monitor mode.
  • the disk alias driver 82 hooks the IOS send command of the input/output supervisor 74.
  • the operating system Windows 95 provides a utility that enables virtual device drivers such as the disk alias driver 82 to hook individual services of drivers such as the input/output supervisor 74.
  • the virtual machine manager 80 provides a hook- device-service function that enables the disk alias driver 82 to trap a particular service provided by the input/output supervisor 74, in this case the IOS send command.
  • the hook-device-service function provided by the virtual machine manager 80 inserts a run-time calling address provided by the disk alias driver 82 with the hook-device-service function call into a dispatch table maintained by the virtual machine manager 80.
  • This dispatch table generally includes a list of device drivers and associated services along with dispatch addresses to the appropriate device driver services.
  • the hook-device-service function provided by the virtual machine manager 80 also returns to the disk alias driver 82 the displaced address for the handler of the IOS send command in the input/output supervisor 74.
  • the virtual device driver 82 saves this displaced address to later pass on the trapped IOS send command and associated parameters to the input/output supervisor 74.
  • the disk alias driver 82 inserts itself into the calling sequence of the device driver stack 78.
  • the disk alias driver 82 imitates the device driver interface (DDI) of one of the device drivers in the device driver stack 78.
  • DPI device driver interface
  • any IOS send command from the file system driver 86 is trapped to the disk alias driver 82 according to the address provided by the disk alias driver 82 with the hook-device-service call.
  • the trapped IOS send command is directed to block 222 of the disk alias driver 82 while in the monitor mode.
  • the disk alias driver 82 examines the parameters of the trapped IOS send command to determine whether an IOS write is underway to the area of the disk media being monitored, i.e. the old portion of the swap file being cloned.
  • the file system driver 86 passes a set of parameters to the input/output supervisor 74 with the IOS send command.
  • the parameters specify whether the IOS send command is a write and also specify and area of the disk media of the disk drive 16 for the write.
  • the area of the disk media may be specified by a sector number and a delta value or block length offset for that sector.
  • the file system driver 86 compares the area parameters of the IOS send command with the area parameters for the old swap file portion provided with the original call from the disk defragmentor 60 that initiated the monitor mode at block 200.
  • the disk alias driver 82 logs that a conflicting write to the swap file has occurred. Thereafter, at block 228 the disk alias driver 82 passes on the IOS send command including the original parameters to the input/output supervisor 74 using the original IOS send command dispatch address obtained through the hook-device-service function.
  • Fig. 6 illustrates the functions of the disk alias driver 82 while in the translate mode.
  • the disk alias driver 82 determines whether a conflicting swap file write was logged while in the monitor mode.
  • the disk alias driver 82 returns to the disk defragmentor 60 with a conflict indication.
  • the conflict indication causes the disk defragmentor 60 to retry the clone operation on the swap file cluster with the conflicting write.
  • the disk alias driver 82 updates the swap file mapping structure 84 maintained by the file system driver 86.
  • the updated swap file mapping structure 84 thus indicates the new location of the cloned portion of the swap file on the contiguous area of the disk drive 16.
  • any IOS send commands from the file system driver 86 are trapped to the disk alias driver 82 and are directed to block 246 while in the translate mode. Then at decision block 248, the disk alias driver 82 determines whether the trapped IOS write command specifies a read or write to the old swap file portion that was recently cloned to a contiguous area of the disk drive 16. This determination is made by comparing the sector and delta value write parameters of the trapped IOS send command with the sector and delta value parameters of the old swap file cluster.
  • the disk alias driver 82 translates the trapped IOS send command parameters to specify the contiguous area of the disk drive 16 that contains the newly cloned portion of the swap file. Accordingly, the sector and delta value parameters for the new swap file cluster are substituted for the sector and delta value parameters originally provided by the trapped IOS send command. Thereafter, at block 252 the disk alias driver 82 passes the IOS send command including modified parameters down to the input/output subsystem 74 to properly access the newly cloned portion of the swap file in the contiguous area of disk drive 16.

Abstract

A file defragmentation utility for a computer system (10) is disclosed that enables multithreaded preemptive multi-tasking during file defragmentation. The utility includes a defragmentor (60) routine that defragments clusters or portions of a file on a storage media (18) and then updates one or more file system structures to indicate the new locations of the defragmented clusters of the file. An alias driver (82) is provided that traps accesses to the file and that maintains coherent access to the file while the file system structures are updated.

Description

COHERENT FILE SYSTEM ACCESS DURING DEFRAGMENTATION OPERATIONS ON A STORAGE MEDIA
BACKGROUND OF THE INVENTION
Field of the Invention
The present invention pertains to the fields of computer systems and software. More particularly, this invention relates to mechanisms for defragmenting files contained on storage media while enabling coherent, multithreaded access to the files during defragmentation operations.
Art Background
Prior computer systems, such as personal computer systems, typically perform a wide variety of specialized tasks. Such specialized tasks are usually implemented within a variety of individual application programs. Typically, such application programs are loaded into and executed from a primary physical memory of the computer system. Such primary physical memory usually comprises dynamic random access memory (DRAM) .
Typically, each application program requires a corresponding allocation of memory space in the computer system for code and data storage. In addition, prior computer operating systems usually allocate memory space for multiple application programs.
However, computer systems usually contain a relatively limited amount of primary physical memory in comparison to the memory requirements of one or more application programs. Such limitations on DRAM capacity typically lowers the overall hardware cost of such a computer system. As a consequence, the physical memory in such a computer system is usually shared among portions of individual application programs on a dynamic basis.
Prior computer systems typically implement virtual memory mechanisms that enable the limited capacity physical memory to appear as a much larger virtual memory address space to the individual application programs. Such mechanisms usually enable the sharing of physical memory among multiple application programs on a demand driven basis.
Typically, such a virtual memory address space includes the physical memory of the computer system along with a swap file contained on a mass storage media such as a disk drive. Such a swap file typically provides a secondary storage for the virtual memory address space. The memory pages of individual application programs are typically swapped between the physical memory and the swap file in a manner transparent to individual applications.
Such a swap file typically grows and shrinks after computer system startup as application programs are installed, executed, and removed from the computer system. In addition, other types of computer system files on the same mass storage media are typically created and modified by the operating system and application programs as the swap file grows and shrinks. As a consequence, computer system files including the swap file typically become fragmented and scattered throughout random portions of the storage media during normal operations. Unfortunately, such fragmentation of files on the storage media increases the input/output time required to fetch files from the storage media into the physical memory. Such increased input/output delays typically slow the overall performance of such a computer system.
Prior software utilities exist that perform defragmentation functions on individual files contained on the storage media. Such a defragmentation utility typically copies the scattered portions of individual files to contiguous areas of the storage media. Thereafter, the software utility usually updates the file system structures that enable the operating system to properly access the new locations of the defragmented files.
In addition, prior operating systems usually provide services that allow software utilities or drivers to lock out all access to individual volumes on the storage media. Such a lock out service allows a defragmentation utility to copy defragmented files to contiguous areas of the media and update the file system structure while locking out conflicting file accesses by the operating system or application programs. Such a locking mechanism usually enables a defragmentation utility to maintain the coherency of the file system during defragmentation.
More recently evolved operating systems for computer systems, however, provide multithreaded, preemptive multitasking of individual application programs executing on the computer system. One such recently evolved operating system is Windows 95 which is available from Microsoft Corporation of Redmond, Washington. While Windows 95 provides a level 3 locking service that prevents accesses to most types of files, such a locking service cannot be used to lock out access to certain types of files such as the swap file. An operating system such as Windows 95 must be able to access the swap file at any time in order to provide virtual memory support to application programs and prevent a lockup in the computer system. Any attempt to defragment the swap file may conflict with swap file accesses by the operating system in a preemptive multitasking environment. Such conflicting accesses to the swap file can cause incoherency of swap file information with catastrophic results for the operating system.
Thus, a preemptively multitasked multithreaded operating system such as Windows 95 simply does not allow locking and defragmenting of the swap file. As a consequence, the swap file for such a computer system fragments across the storage media as the computer system operates from startup or boot time. Such fragmentation of the swap file typically slows the overall execution performance of such a computer system by increasing input/output access times to the swap file during virtual memory paging operations. For example, fragmentation of the swap file on a rotating magnetic disk usually increases the "seek" time for the disk when accessing the swap file. SUMMARY AND OBJECTS OF THE INVENTION
One object of the present invention is to defragment files on a storage media while enabling coherent access to such files during the defragmentation operation.
Another object of the present invention is to enable multithreaded preemptive multi-tasking of application programs during defragmentation.
Another object of the present invention is to enable an operating system to coherently access a swap file while the swap file is being defragmented.
A further object of the present invention is to enable coherent access to a defragmented swap file and to update internal data structures maintained by the file system of the operating system that point to the swap file.
These and other objects of the invention are provided by a file defragmentation utility for a computer system that includes a defragmentor routine and an alias driver. The defragmentor routine defragments clusters or portions of the file on a storage media and then updates one or more file system structures to indicate the new locations of the defragmented clusters of the file. The alias driver traps accesses to the file and maintains coherent access to the file while the file system structures are updated. Other objects, features and advantages of the present invention will be apparent from the detailed description that follows.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is described with respect to particular exemplary embodiments thereof and reference is accordingly made to the drawings in which:
Fig. 1 illustrates the computer system including a central processing unit (CPU) , a physical memory, and a disk drive;
Fig. 2 illustrates a software architecture of the computer system which is generally divided into application programs that execute in a user mode of the
CPU and operating system components that execute in a privilege mode of the CPU;
Fig. 3 represents an example layout of information on the storage media of the disk drive wherein the file system logically divides the storage media into a series of clusters;
Fig. 4 is a flow diagram that illustrates the functions of the disk defragmentor during defragmentation operations on a particular cluster of the swap file;
Fig. 5 illustrates the functions of the disk alias driver while in the monitor mode;
Fig. 6 illustrates the functions of the disk alias driver while in the translate mode. DETAILED DESCRIPTION
Fig. 1 illustrates the computer system 10 for one embodiment. The computer system 10 includes a central processing unit (CPU) 12, a physical memory 14, a disk drive 16 and a mass storage device 18. The computer system 10 also includes a CD-ROM drive 150 that accepts a compact disk 151 containing software and related information and a floppy disk drive 152 that accepts a floppy disk 152 containing software and related information.
The application routines and driver routines disclosed herein may be provided via the compact disk 151 or the floppy disk 152 or a wide-variety of other computer readable storage media including semiconductor based storage media such as flash memory.
For this embodiment, the CPU 12 communicates with the disk drive 16 and the mass storage device 18 via host bus 20. However, for other embodiments, the CPU 12 communicates with peripheral devices such as the disk drive 16 and the mass storage device 18 through a variety of input/output interface circuitry including bus bridge circuits that enable communication between the host bus 20 and a variety of standardized peripheral buses.
For one embodiment, the CPU 12 conforms to an Intel compatible microprocessor architecture that provides mechanisms that support virtual memory, including mechanisms for detecting page faults during accesses to the physical memory 14 by the CPU 12. In addition, the CPU 12 implements a virtual 8086 mode according to the Intel compatible microprocessor architecture that enables software compatibility with application programs developed for Microsoft Corporation's DOS operating system.
The disk drive 16 provides a rotating magnetic media mass storage for large scale code and data storage for the computer system 10. The mass storage device 18 is intended to represent a variety of other mass storage media such as flash memory subsystems that may also contain fragmented files.
Fig. 2 illustrates a software architecture of the computer system 10 for one embodiment. The software architecture of the computer system 10 is generally divided into application programs that execute in the Ring 3 user mode of the CPU 12 and operating system components that execute in the Ring 0 privileged mode of the CPU 12. The sof ware architecture shown generally illustrates portions of the Windows 95 operating system model.
The application programs executing in the user mode of the CPU 12 include a set of virtual machines 30-32. A virtual machine manager 80 which executes in the privilege mode of the CPU 12 preemptively multitasks the virtual machines 30-32.
The virtual machine 30 is referred to as the system virtual machine. The system virtual machine 30 includes a 16 bit window subsystem (WIN16) that enables execution of application programs written to conform to 16 bit Microsoft Windows such as application programs 40-41. The virtual machine 30 also includes a 32 bit windows subsystem (WIN32) that enables execution of application programs compatible with 32 bit Microsoft Windows including applications 50-51 and a disk defragmentor 60.
The disk defragmentor 60 is an application program for the WIN 32 subsystem that optimizes the performance of the disk drive 16 and therefore the computer system 10 by defragmenting files on the disk media of the disk drive 16.
The virtual machines 31-32 each comprise a disk operating system (DOS) virtual machine for execution of DOS compatible application programs on the computer system 10.
The operating system for the computer system 10 maintains files on the disk drive 16 or the mass storage device 18 using a set of software elements 70-78. The software elements 70-78 are each implemented as virtual device drivers under Windows 95 and are arranged to present to a driver model to the virtual machine manager 80.
The installable file system manager 70 maintains an abstraction of the computer system 10 file system and communicates with the file system module 72. The file system module 72 includes a file system driver 86 that enables reading and writing of individual sectors of the disk drive 16. The file system driver 86 maintains a file system structure for the computer system 10 including a file allocation table and a directory- structure on the disk drive 16. For one embodiment, the file system driver 86 maintains a virtual file allocation table (VFAT) file structure. For one embodiment, the file system module 72 also includes a swap file mapping structure 84 that indicates the locations of clusters of the swap file on the disk drive 16 or the mass storage device 18. For such an embodiment for Windows 95, the file system 72 initializes the swap file mapping structure 84 at system boot time and updates the swap file mapping structure 84 as the swap file on the disk drive 16 grows and shrinks and fragments during normal operations. The swap file mapping structure 84 is never updated by a search of the file allocation table and directory structure the disk drive 16 because the file system 72 for Windows 95 "assumes" that the swap file will never be relocated or defragmented.
The file system driver 86 transfers information to and from the disk drive 16 through an input/output supervisor 74. The input/output supervisor (IOS) 74 provides IOS services that in turn communicate with the disk drive 16 hardware through either a monolithic port driver 76 or a device driver stack 78. The device driver stack 78 implements a stack of device driver calling routines 90-91.
Fig. 3 represents an example layout of information on the storage media provided disk drive 16. The file system 72 logically divides the storage media of the disk drive 16 into a series of clusters. For purposes of this illustration, only the clusters 100-119 are shown.
For one embodiment, the disk drive 16 contains a file allocation table (FAT) and a directory structure (DIR) which provide the file system structure for the computer system 10. The directory structure stores starting cluster numbers for individual files on the disk drive 16 and the file allocation table provides a link list of cluster numbers that enable the file system driver 86, in one embodiment VFAT, and the file system 72 to properly locate individual files on the disk drive 16.
An example swap file is shown comprising swap file portions or clusters A-E. Swap file portion A is stored in the cluster 100 of the disk media and swap file portion B is stored in the cluster 101 of the disk media of the disk drive 16. As shown, the swap file portions A-E are scattered over various clusters of the disk media. In this example, the swap file portions A-E are scattered through the clusters 100, 101, 105, 108 and 112 of the disk media of the disk drive 16.
The disk defragmentor 60 defragments the swap file portions A-E by copying or cloning the swap file portions A-E over to a series of contiguous clusters, in this example clusters 115-119 of the disk media of the disk drive 16. Thereafter, the disk defragmentor 60 updates the file allocation table and the directory structure to reflect the new location of the swap file portions A-E.
The disk defragmentor 60 obtains the assistance of a disk alias driver 82 which executes in the privileged mode of the CPU 12. The disk defragmentor 60 dynamically loads the disk alias driver 82 into the physical memory 82 as needed. For one embodiment for Windows 95, the disk alias driver 82 is a linear executable file that the operating system loader marks as non-pageable. The linear page lock of the disk alias driver 82 prevents preemption during certain atomic operations of the disk alias driver 82. The disk alias driver 82 is installed as a virtual device driver and is accessed by the disk defragmentor 60 through WIN 32 device I/O control (DIocontrol) calls.
The disk alias driver 82 traps, monitors, and under certain conditions translates file system accesses to the swap file. The translation of swap file accesses provides coherent swap file information during defragmentation and until the file allocation table and the directory structure on the disk drive 16 are updated to indicate the proper location of the defragmented swap file. For one embodiment, the disk defragmentor 60 also uses the disk alias driver 82 to update the swap file mapping structure 84 to properly indicate to the file system driver 86 the new location of the defragmented swap file. This update of the swap file structure is necessary for a Windows 95 embodiment in which defragmentation of the swap file is assumed not to ever occur.
Fig. 4 is a flow diagram that illustrates the functions of the disk defragmentor 60 during defragmentation operations on a particular cluster of the swap file. The disk defragmentor 60 employs the assistance of a monitor mode and a translate mode of the disk alias driver 82 to maintain swap file coherency while the particular swap file cluster is cloned and the appropriate file system structures are updated.
At block 200, the disk defragmentor 60 puts the disk alias driver 82 into the monitor mode. While in the monitor mode, the disk alias driver 82 records or logs accesses to a specified area of the storage media of the disk drive 16. In this case, the specified area corresponds to a particular cluster of the swap file that must be cloned during defragmentation. The disk defragmentor 60 generates a call to the disk alias driver 82 wherein the call specifies the monitor mode and includes parameters that specify the portion of the disk media of the disk drive 16 being monitored. For one embodiment, the monitor call to the disk alias driver specifies a sector and delta value in units compatible with the input/output supervisor 74.
At block 202, the disk defragmentor 60 copies the particular swap file portion or cluster to an appropriate contiguous area of the disk drive 16.
Thereafter, at block 204 the disk defragmentor 60 puts the disk alias driver 82 into a translate mode. While in the translate mode, the disk alias driver 82 redirects accesses targeted for the old cluster of the swap file to the newly cloned cluster generated at block 202. The disk defragmentor 60 generates a call to the disk alias driver 82 wherein the call specifies the translate mode and includes parameters that specify the sectors and delta values that contain the old and the new swap file clusters.
At decision block 206, the disk alias driver 82 returns an indication of whether a conflicting swap file occurred or was logged while the disk alias driver 82 was in the monitor mode. Such a conflicting swap file access indicates that the newly cloned cluster of the swap file contains stale data. If the disk alias driver 82 returns the indication of the conflicting swap file access, then control proceeds back to block 202 to retry the clone operation on the particular swap file cluster. Otherwise, control proceeds to block 208.
At block 208, the disk defragmentor 60 updates the file allocation table and directory structure stored on the disk drive 16. Thereafter at block 210, the disk defragmentor 60 resets the disk alias driver 82 which causes the disk alias driver 82 to leave the translate mode and to remove hooks into the input/output supervisor 74 used to trap IOS commands. At this point, the translation functions of the disk alias driver are no longer required because the file allocation table and the directory structure and other relevant structures for the file system 72 have been properly updated to reflect the location of the defragmented swap file cluster.
Fig. 5 illustrates the functions of the disk alias driver 82 while in the monitor mode. Upon entry into the monitor mode at block 220, the disk alias driver 82 hooks the IOS send command of the input/output supervisor 74.
For one embodiment, the operating system Windows 95 provides a utility that enables virtual device drivers such as the disk alias driver 82 to hook individual services of drivers such as the input/output supervisor 74. The virtual machine manager 80 provides a hook- device-service function that enables the disk alias driver 82 to trap a particular service provided by the input/output supervisor 74, in this case the IOS send command. The hook-device-service function provided by the virtual machine manager 80 inserts a run-time calling address provided by the disk alias driver 82 with the hook-device-service function call into a dispatch table maintained by the virtual machine manager 80. This dispatch table generally includes a list of device drivers and associated services along with dispatch addresses to the appropriate device driver services.
The hook-device-service function provided by the virtual machine manager 80 also returns to the disk alias driver 82 the displaced address for the handler of the IOS send command in the input/output supervisor 74. The virtual device driver 82 saves this displaced address to later pass on the trapped IOS send command and associated parameters to the input/output supervisor 74.
For another embodiment, the disk alias driver 82 inserts itself into the calling sequence of the device driver stack 78. In this embodiment, the disk alias driver 82 imitates the device driver interface (DDI) of one of the device drivers in the device driver stack 78. Such an embodiment offers the advantage that only accesses to the disk drive 16 are trapped rather than all accesses routed through the IOS send command of the input/output subsystem 74.
After the installation of the hook at block 220, any IOS send command from the file system driver 86 is trapped to the disk alias driver 82 according to the address provided by the disk alias driver 82 with the hook-device-service call. The trapped IOS send command is directed to block 222 of the disk alias driver 82 while in the monitor mode. At decision block 224, the disk alias driver 82 examines the parameters of the trapped IOS send command to determine whether an IOS write is underway to the area of the disk media being monitored, i.e. the old portion of the swap file being cloned.
For one embodiment, the file system driver 86 passes a set of parameters to the input/output supervisor 74 with the IOS send command. The parameters specify whether the IOS send command is a write and also specify and area of the disk media of the disk drive 16 for the write. The area of the disk media may be specified by a sector number and a delta value or block length offset for that sector. The file system driver 86 compares the area parameters of the IOS send command with the area parameters for the old swap file portion provided with the original call from the disk defragmentor 60 that initiated the monitor mode at block 200.
If the IOS write to the specified area is detected at decision block 224, then control proceeds to block 226. At block 226, the disk alias driver 82 logs that a conflicting write to the swap file has occurred. Thereafter, at block 228 the disk alias driver 82 passes on the IOS send command including the original parameters to the input/output supervisor 74 using the original IOS send command dispatch address obtained through the hook-device-service function.
Fig. 6 illustrates the functions of the disk alias driver 82 while in the translate mode. At decision block 240, the disk alias driver 82 determines whether a conflicting swap file write was logged while in the monitor mode.
If the conflicting swap file write is found at decision block 240, then control proceeds to block 242. At block 242, the disk alias driver 82 returns to the disk defragmentor 60 with a conflict indication. The conflict indication causes the disk defragmentor 60 to retry the clone operation on the swap file cluster with the conflicting write.
Otherwise control proceeds to block 244. At block 244, the disk alias driver 82 updates the swap file mapping structure 84 maintained by the file system driver 86. The updated swap file mapping structure 84 thus indicates the new location of the cloned portion of the swap file on the contiguous area of the disk drive 16.
With the IOS send command hook still installed, any IOS send commands from the file system driver 86 are trapped to the disk alias driver 82 and are directed to block 246 while in the translate mode. Then at decision block 248, the disk alias driver 82 determines whether the trapped IOS write command specifies a read or write to the old swap file portion that was recently cloned to a contiguous area of the disk drive 16. This determination is made by comparing the sector and delta value write parameters of the trapped IOS send command with the sector and delta value parameters of the old swap file cluster.
If the trapped IOS send command does specify a read or write to the old portion of the swap file, then control proceeds to block 250. At block 250, the disk alias driver 82 translates the trapped IOS send command parameters to specify the contiguous area of the disk drive 16 that contains the newly cloned portion of the swap file. Accordingly, the sector and delta value parameters for the new swap file cluster are substituted for the sector and delta value parameters originally provided by the trapped IOS send command. Thereafter, at block 252 the disk alias driver 82 passes the IOS send command including modified parameters down to the input/output subsystem 74 to properly access the newly cloned portion of the swap file in the contiguous area of disk drive 16.
If the trapped IOS send command is not a read or write targeted for the old swap file cluster at decision block 248, then control proceeds to block 252 to pass the IOS send command including unmodified parameters to the input/output supervisor 74 in a normal manner.
The foregoing detailed description of the present invention is provided for the purposes of illustration and is not intended to be exhaustive or to limit the invention to the precise embodiment disclosed. Accordingly, the scope of the present invention is defined by the appended claims.

Claims

What is claimed is:
l. A file defragmentation utility for a computer system, comprising: defragmentor routine that defragments the file on a storage media and that then updates a file system structure to indicate a new location on the storage media for the file; alias driver that traps accesses to the file and that maintains coherent access to the file while the file system structure is updated.
2. The file defragmentation utility of claim 1, wherein the alias driver hooks to an input/output system command from a file system driver to and input/output system driver.
3. The file defragmentation utility of claim 1, wherein the alias driver is inserted into a calling stack of device drivers that correspond to the storage media.
4. The file defragmentation utility of claim l, wherein the defragmentor routine executes in a user mode of a processor for the computer system.
5. The file defragmentation utility of claim 4, wherein the alias driver is a virtual device driver that executes in a privileged mode of the processor.
6. The file defragmentation utility of claim 5, wherein the defragmentor routine defragments the file by copying the file from fragmented areas of the storage media to a contiguous area of the storage media.
7. The file defragmentation utility of claim 6, wherein the alias driver logs conflicting accesses to the file while the defragmentor routine copies the file to the contiguous area.
8. The file defragmentation utility of claim 7, wherein the defragmentor routine recopies the file to the contiguous area if at least one conflicting access to the file occurs.
9. The file defragmentation utility of claim 8, wherein the alias driver translates accesses to the fragmented areas of the file to the contiguous area while the defragmentor routine updates the file system structure.
10. The file defragmentation utility of claim 9, wherein the file is a swap file for maintaining virtual memory on the computer system.
11. The file defragmentation utility of claim 10, wherein the alias driver updates an internal data structure for the swap file maintained by a file system driver such that the internal data structure indicates that the swap file is located in the contiguous area.
12. A computer-readable storage apparatus that stores a defragmentor routine and an alias driver such that the defragmentor routine when executed by a computer apparatus defragments a file on a storage media and then updates a file system structure to indicate a new location on the storage media for the file and such that the alias driver when executed by the computer apparatus traps accesses to the file and that maintains coherent access to the file while the file system structure is updated.
13. The computer-readable storage apparatus of claim 12, wherein the alias driver hooks to an input/output system command from a file system driver to and input/output system driver.
14. The computer-readable storage apparatus of claim 12, wherein the alias driver is inserted into a calling stack of device drivers that correspond to the storage media.
15. The computer-readable storage apparatus of claim 12, wherein the defragmentor routine executes in a user mode of a processor for the computer system.
16. The computer-readable storage apparatus of claim 15, wherein the alias driver is a virtual device driver that executes in a privileged mode of the processor.
17. The computer-readable storage apparatus of claim 16, wherein the defragmentor routine defragments the file by copying the file from fragmented areas of the storage media to a contiguous area of the storage media.
18. The computer-readable storage apparatus of claim 17, wherein the alias driver logs conflicting accesses to the file while the defragmentor routine copies the file to the contiguous area.
19. The computer-readable storage apparatus of claim 18, wherein the defragmentor routine recopies the file to the contiguous area if at least one conflicting access to the file occurs.
20. The computer-readable storage apparatus of claim 19, wherein the alias driver translates accesses to the fragmented areas of the file to the contiguous area while the defragmentor routine updates the file system structure.
PCT/US1996/003683 1995-08-23 1996-03-18 Coherent file system access during defragmentation operations on a storage media WO1997008623A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US51867495A 1995-08-23 1995-08-23
US08/518,674 1995-08-23

Publications (1)

Publication Number Publication Date
WO1997008623A1 true WO1997008623A1 (en) 1997-03-06

Family

ID=24064988

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1996/003683 WO1997008623A1 (en) 1995-08-23 1996-03-18 Coherent file system access during defragmentation operations on a storage media

Country Status (2)

Country Link
US (1) US5761680A (en)
WO (1) WO1997008623A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5983239A (en) * 1997-10-29 1999-11-09 International Business Machines Corporation Storage management system with file aggregation supporting multiple aggregated file counterparts
US6021415A (en) * 1997-10-29 2000-02-01 International Business Machines Corporation Storage management system with file aggregation and space reclamation within aggregated files
US6098074A (en) * 1997-10-29 2000-08-01 International Business Machines Corporation Storage management system with file aggregation

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6233624B1 (en) * 1997-05-08 2001-05-15 Microsoft Corporation System and method for layering drivers
US6205529B1 (en) * 1997-09-25 2001-03-20 Emc Corporation Method and apparatus for defragmenting a storage device using a copy function in the device control logic
US6070174A (en) * 1997-09-30 2000-05-30 Infraworks Corporation Method and apparatus for real-time secure file deletion
US5991778A (en) * 1997-09-30 1999-11-23 Stratfor Systems, Inc. Method and apparatus for real-time secure file deletion
US6732293B1 (en) 1998-03-16 2004-05-04 Symantec Corporation Method, software and apparatus for recovering and recycling data in conjunction with an operating system
US6324497B1 (en) * 1998-07-15 2001-11-27 Sutmyn Storage Corporation Tape drive emulation system including tape library interface
US7055055B1 (en) 1999-04-23 2006-05-30 Symantec Corporation Write cache flushing method for reducing data corruption
US7051055B1 (en) * 1999-07-09 2006-05-23 Symantec Corporation Optimized disk storage defragmentation with swapping capabilities
AU6081200A (en) * 1999-07-09 2001-01-30 Eric D. Schneider Optimized disk storage defragmentation with swapping capabilities
US6594780B1 (en) * 1999-10-19 2003-07-15 Inasoft, Inc. Operating system and data protection
US7337360B2 (en) * 1999-10-19 2008-02-26 Idocrase Investments Llc Stored memory recovery system
US6418449B1 (en) * 2000-01-06 2002-07-09 Inventec Corporation Method of cloning the file system of a window web operating system by using a bitmap file
US6564228B1 (en) * 2000-01-14 2003-05-13 Sun Microsystems, Inc. Method of enabling heterogeneous platforms to utilize a universal file system in a storage area network
US6757801B1 (en) * 2000-10-26 2004-06-29 International Business Machines Corporation Method to modify that an operation needs to be done on a file system
US7389315B1 (en) * 2002-02-28 2008-06-17 Network Appliance, Inc. System and method for byte swapping file access data structures
JP2003316622A (en) * 2002-04-23 2003-11-07 Fujitsu Ltd Information storage device
US20050050108A1 (en) * 2003-08-21 2005-03-03 Texas Instruments Incorporated File system for digital processing systems with limited resources
US7730222B2 (en) 2004-08-24 2010-06-01 Symantec Operating System Processing storage-related I/O requests using binary tree data structures
US7577807B2 (en) 2003-09-23 2009-08-18 Symantec Operating Corporation Methods and devices for restoring a portion of a data store
US7725760B2 (en) 2003-09-23 2010-05-25 Symantec Operating Corporation Data storage system
US7296008B2 (en) 2004-08-24 2007-11-13 Symantec Operating Corporation Generation and use of a time map for accessing a prior image of a storage device
US7827362B2 (en) 2004-08-24 2010-11-02 Symantec Corporation Systems, apparatus, and methods for processing I/O requests
US7991748B2 (en) 2003-09-23 2011-08-02 Symantec Corporation Virtual data store creation and use
US7409587B2 (en) 2004-08-24 2008-08-05 Symantec Operating Corporation Recovering from storage transaction failures using checkpoints
US7904428B2 (en) 2003-09-23 2011-03-08 Symantec Corporation Methods and apparatus for recording write requests directed to a data store
US7239581B2 (en) 2004-08-24 2007-07-03 Symantec Operating Corporation Systems and methods for synchronizing the internal clocks of a plurality of processor modules
US7287133B2 (en) 2004-08-24 2007-10-23 Symantec Operating Corporation Systems and methods for providing a modification history for a location within a data store
US7577806B2 (en) 2003-09-23 2009-08-18 Symantec Operating Corporation Systems and methods for time dependent data storage and recovery
US7284109B1 (en) 2003-11-21 2007-10-16 Symantec Corporation Partition creation
US7949665B1 (en) 2004-11-19 2011-05-24 Symantec Corporation Rapidly traversing disc volumes during file content examination
US7721292B2 (en) * 2004-12-16 2010-05-18 International Business Machines Corporation System for adjusting resource allocation to a logical partition based on rate of page swaps and utilization by changing a boot configuration file
US9454440B2 (en) 2004-12-31 2016-09-27 Emc Corporation Versatile information management
US8260753B2 (en) * 2004-12-31 2012-09-04 Emc Corporation Backup information management
US9026512B2 (en) * 2005-08-18 2015-05-05 Emc Corporation Data object search and retrieval
US7716171B2 (en) * 2005-08-18 2010-05-11 Emc Corporation Snapshot indexing
US20070043705A1 (en) * 2005-08-18 2007-02-22 Emc Corporation Searchable backups
WO2007047346A2 (en) 2005-10-14 2007-04-26 Symantec Operating Corporation Technique for timeline compression in a data store
US7587573B2 (en) * 2006-01-18 2009-09-08 International Business Machines Corporation System and computer program product for shrinking a file system
US8332570B1 (en) * 2008-09-30 2012-12-11 Symantec Corporation Methods and systems for defragmenting virtual machine prefetch data on physical storage
US9122765B1 (en) * 2010-12-22 2015-09-01 Vmware, Inc. Efficient overcommitment of main-memory based virtual database system to disk
US10474369B2 (en) * 2012-02-06 2019-11-12 Vmware, Inc. Mapping guest pages to disk blocks to improve virtual machine management processes
US11010101B1 (en) * 2014-09-19 2021-05-18 EMC IP Holding Company LLC Object storage subsystems
US10216536B2 (en) * 2016-03-11 2019-02-26 Vmware, Inc. Swap file defragmentation in a hypervisor
US11847343B2 (en) * 2021-12-22 2023-12-19 Western Digital Technologies, Inc. Storage system and method for non-blocking coherent re-writes

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339430A (en) * 1992-07-01 1994-08-16 Telefonaktiebolaget L M Ericsson System for dynamic run-time binding of software modules in a computer system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4827462A (en) * 1987-03-26 1989-05-02 International Business Machines Corporation Modular data storage directories for large-capacity data storage units
US5119291A (en) * 1987-03-26 1992-06-02 International Business Machines Corporation Modular data storage directories for large-capacity data storage units wherein the index to the records in a sector is located in the next adjacent sector
CA1341310C (en) * 1988-07-15 2001-10-23 Robert Filepp Interactive computer network and method of operation
US5241635A (en) * 1988-11-18 1993-08-31 Massachusetts Institute Of Technology Tagged token data processing system with operand matching in activation frames
US5237681A (en) * 1991-05-24 1993-08-17 Bell Communications Research, Inc. Relational data base memory utilization analyzer
US5479656A (en) * 1992-05-13 1995-12-26 Rawlings, Iii; Joseph H. Method and system for maximizing data files stored in a random access memory of a computer file system and optimization therefor
US5423034A (en) * 1992-06-10 1995-06-06 Cohen-Levy; Leon Network file management with user determined hierarchical file structures and means for intercepting application program open and save commands for inputting and displaying user inputted descriptions of the location and content of files
US5361359A (en) * 1992-08-31 1994-11-01 Trusted Information Systems, Inc. System and method for controlling the use of a computer
US5553235A (en) * 1992-10-23 1996-09-03 International Business Machines Corporation System and method for maintaining performance data in a data processing system
AU5670394A (en) * 1992-11-23 1994-06-22 Paragon Concepts, Inc. Computer filing system with user selected categories to provide file access
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
US5504883A (en) * 1993-02-01 1996-04-02 Lsc, Inc. Method and apparatus for insuring recovery of file control information for secondary storage systems
US5584007A (en) * 1994-02-09 1996-12-10 Ballard Synergy Corporation Apparatus and method for discriminating among data to be stored in cache
US5551020A (en) * 1994-03-28 1996-08-27 Flextech Systems, Inc. System for the compacting and logical linking of data blocks in files to optimize available physical storage
US5574907A (en) * 1994-11-30 1996-11-12 Microsoft Corporation Two-pass defragmentation of compressed hard disk data with a single data rewrite

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339430A (en) * 1992-07-01 1994-08-16 Telefonaktiebolaget L M Ericsson System for dynamic run-time binding of software modules in a computer system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DEC PROFESSIONAL, 1990, DAN ESBENSEN, "The INS and OUTS of File I/O", pages 54-56 and 58. *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5983239A (en) * 1997-10-29 1999-11-09 International Business Machines Corporation Storage management system with file aggregation supporting multiple aggregated file counterparts
US6021415A (en) * 1997-10-29 2000-02-01 International Business Machines Corporation Storage management system with file aggregation and space reclamation within aggregated files
US6041334A (en) * 1997-10-29 2000-03-21 International Business Machines Corporation Storage management system with file aggregation supporting multiple aggregated file counterparts
US6098074A (en) * 1997-10-29 2000-08-01 International Business Machines Corporation Storage management system with file aggregation

Also Published As

Publication number Publication date
US5761680A (en) 1998-06-02

Similar Documents

Publication Publication Date Title
US5761680A (en) Coherent film system access during defragmentation operations on a storage medium
US5832513A (en) Detecting significant file system alterations during execution of a storage media software utility
US4742450A (en) Method to share copy on write segment for mapped files
US7765395B2 (en) Operating system rebooting method and apparatus for continuing to execute a non-stop module even during rebooting
JP4176857B2 (en) Using tristate references to manage referenced objects
US20200065318A1 (en) Computer storage deduplication
US5701477A (en) Method and apparatus for master boot record shadowing
US5359713A (en) Method and apparatus for enhancing synchronous I/O in a computer system with a non-volatile memory and using an acceleration device driver in a computer operating system
US5634058A (en) Dynamically configurable kernel
US5539899A (en) System and method for handling a segmented program in a memory for a multitasking data processing system utilizing paged virtual storage
US5519853A (en) Method and apparatus for enhancing synchronous I/O in a computer system with a non-volatile memory and using an acceleration device driver in a computer operating system
US7962684B2 (en) Overlay management in a flash memory storage device
WO1992007319A1 (en) System for multiple access hard disk partitioning
JPH06250924A (en) System and method for dynamic load of shared library
EP1584024A2 (en) Protected, hidden emergency boot directory
US6618768B2 (en) Method and computer system for integrating a compression system with an operating system
US5175830A (en) Method for executing overlays in an expanded memory data processing system
US6874076B2 (en) Method, system, and computer program product for migrating data from one real page to another
US7139879B2 (en) System and method of improving fault-based multi-page pre-fetches
US20040177226A1 (en) Storage system with snapshot-backup capability and method for the same
US20090024798A1 (en) Storing Data

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): CA

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE

CFP Corrected version of a pamphlet front page

Free format text: REVISED ABSTRACT RECEIVED BY THE INTERNATIONAL BUREAU AFTER COMPLETION OF THE TECHNICAL PREPARATIONS FOR INTERNATIONAL PUBLICATION

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: CA