Contig Logo
Copyright © 1998 Mark Russinovich
Last Updated January 15, 1997 V1.2
Introduction There are a number of NT disk defraggers on the market. These tools are useful for performing a general defragmentation of disks, but while most files are defragmented on drives processed by these utilities, some files may not be. In addition, it is difficult to ensure that particular files that are frequently used are defragmented - they may remain fragmented for reasons that are specific to the defragmentation algorithms used by the defragging product that has been applied. Finally, even if all files have been defragmented, subsequent changes to critical files could cause them to become fragmented. Only by running an entire defrag operation can one hope that they might be defragmented again.

Contig is a single-file defragmenter that attempts to make files contiguous on disk. Its perfect for quickly optimizing files that are continuously becoming fragmented, or that you want to ensure are in as few fragments as possible.
Installation and Use Contig works on NT 4.0 and higher. Contig can be used to defrag an existing file, or to create a new file of a specified size and name, optimizing its placement on disk. To make an existing file contiguous use Contig as follows:

Usage: contig [-v] [-q] [-s] [filename]

Use the -v switch to have Contig print out information about the file defrag operations that are performed. Use the -s switch to perform a recursive processing of subdirectories when you specify a filename with wildcards. For instance, to defragment all DLLs under c:\winnt you could enter "contig -s c:\winnt\*.dll". The -q switch, which over-rides the -v switch, makes Contig run in "quiet" mode, where the only thing it prints during a defrag run is summary information.

To make a new file that is defragmented upon creation, use Contig like this:

Usage: contig [-v] [-n filename length]

How It Works Contig uses the native Windows NT defragmentation support that was introduced with NT 4.0 (see my documentation of the defrag APIs for more information). It first scans the disk collecting the locations and sizes of free areas. Then it determines where the file in question is located. Next, Contig decides whether the file can be optimized, based on free areas and the number of fragments the file currently consists of. If the file can be optimized, it is moved into the free spaces of the disk.

A significant amount of code is present in Contig to deal with NTFS files, which can be compressed. In addition, Contig must only move 16-cluster aligned portions of a NTFS file, and must not move, in one call to NT's defrag engine, a NTFS file segment that straddles a 256KB boundary in the file. Note that Contig does not move other files in an effort to make contiguous space on the disk for the target file.



Download Contig (20KB)