Defragmenting Disks for Better Performance
On a relatively new system with a speedy processor and plenty of physical memory, hard disk performance is the single biggest bottleneck in everyday operation. Even with a zippy hard disk, it takes time to load large data files into memory so that you can work with them. The problem is especially noticeable with movies, video clips, DVD-burning projects, databases, ISO image files, and virtual hard disks, which can easily take up multiple gigabytes, sometimes in a single file.
On a freshly formatted disk, files load fairly quickly, but over time, performance can degrade because of disk fragmentation. To understand how fragmentation works, it helps to understand the basic structure of a hard disk. The process of formatting a disk divides it into sectors, each of which contains space for 512 bytes of data. The file system combines groups of sectors into clusters, which are the smallest units of space available for holding a single file or part of a file.
On any NTFS volume greater than 2 GB in size, the cluster size is 4 KB. Thus, when you save a 200-MB video clip, Windows divides the file into roughly 50,000 pieces. When you save this file for the first time on a freshly formatted, completely empty hard disk, Windows writes it in contiguous clusters. Because all the clusters that hold individual pieces of the file are physically adjacent to one another, the mechanical components of the hard disk can work very efficiently, scooping up data in one smooth operation. As a bonus, the hard disk's onboard cache and the Windows disk cache are able to anticipate the need for data and fetch nearby clusters that are likely to contain other parts of the file, which can then be retrieved from fast cached memory rather than from the relatively slow disk.
Unfortunately, hard disks don't stay neatly organized for long. When you add data to an existing file, the file system has to allocate more clusters for storage, typically in a different physical location on the disk. As you delete files, you create gaps in the once-tidy arrangement of contiguously stored files. As you save new files, especially large ones, the file system uses all these bits of free space, scattering the new files over the hard disk in many noncontiguous pieces. The resulting inefficiency in storage is called fragmentation; each time you open or save a file on a badly fragmented disk, disk performance suffers, sometimes dramatically, because the disk heads have to spend extra time moving from cluster to cluster before they can begin reading or writing data.
The Disk Defragmenter in Windows 7 improves on earlier versions in many ways, not the least of which is you shouldn't need to do anything to benefit from it. Disk Defragmenter runs as a low-priority background task that kicks off once a week, in the middle of the night, without requiring any attention from you.
Using Disk Defragmenter
The Disk Defragmenter utility improves performance by physically rearranging files so that they're stored in contiguous clusters. In addition to consolidating files and folders, the utility also consolidates free space, making it less likely that new files will be fragmented when you save them. The Disk Defragmenter process starts according to a schedule that you can adjust. To view the current settings, click the Disk Defragmenter shortcut (in the System Tools subfolder of the Accessories folder on the All Programs menu), or right-click any drive icon in the Computer window and click Defragment Now on the Tools tab.
The simple Disk Defragmenter interface Schedule section of the dialog box shows whether scheduled defragmentation is on or off and when the next run is to occur. The Current Status section shows the date and time of each disk's most recent defragmentation. Buttons let you reconfigure the schedule, analyze a selected disk to see how fragmented it might be, and perform an immediate defragmentation.
Click Configure Schedule to change when Disk Defragmenter runs automatically. By default, the utility runs weekly, at 1:00 A.M. each Wednesday. You can schedule operation to be daily, weekly (you pick the day of the week), or monthly (you pick the date), and you can choose the time of day (round numbers only).
If your computer is off at the appointed time, Disk Defragmenter will run at the first idle time after it's back up again. If your computer is nearly always either off or in use at 1 A.M., you might want to reconfigure the schedule. Choose a time when the machine is usually on but not in use-a regular lunch break, for example.
If your computer has more than one hard disk (more precisely, more than one volume, because each hard disk can be partitioned into multiple volumes), you can specify which ones you want Disk Defragmenter to act upon. Click Select Disks to display the dialog box, in which you can remove the check mark from any volumes you don't want to defragment.
Dedicate a partition for CD or DVD burning
The best way to avoid disk fragmentation is to start with a completely clean slate. If you routinely work with CD images, for instance, consider creating a separate partition that's big enough to temporarily hold the files you're working with. A 2-GB partition, for instance, is big enough to hold a CD image and all temporary files associated with it. (You'll need roughly 10 GB for a DVD-burning partition.) Keep that drive empty except when you plan to create a CD, at which time you can copy files to it for burning. Using this strategy, you can be certain that fragmentation won't have a deleterious impact on your CD-burning performance.
Running Disk Defragmenter from a Command Line
The command-line version of Disk Defragmenter allows you to exercise fine-grained control over the defragmentation process, and it uses the exact same program code as the scheduled version. To use this command for a specific drive, type defrag d: in an elevated Command Prompt window, where d is the drive letter or mount point of an existing volume. To see the full range of the Defrag utility's capabilities, type defrag /?. Among the more useful switches are the following:
- /c
Defragments all volumes on the computer. Use this switch without specifying a specific drive letter or mount point. - /a
Analyzes the specified volume, and displays a summary of the analysis report. - /f
Consolidates the free space on the specified volume, reducing the likelihood that large new files will be fragmented. - /r
Defragments multiple volumes in parallel. If your volumes are on physically separate disks, you might save a bit of time by using this switch. - /v
Displays complete (verbose) reports. When used in combination with /a, this switch displays only the analysis report. When used alone, it displays both the analysis and defragmentation reports.
In addition to the documented switches listed, the command-line Defrag utility includes this useful but undocumented switch:
- /b
The /b switch optimizes boot files and applications while leaving the rest of the drive undisturbed.
The command-line Disk Defragmenter does not provide any progress indicator except for a blinking cursor. To interrupt the defragmentation process, click in the Command Prompt window and press Ctrl+C.
Troubleshooting
The Disk Defragmenter utility does not fully defragment the drive.
A volume must have at least 15 percent free space before Disk Defragmenter can completely defragment the volume. If you have less free space available, the operation will run, but only partial defragmentation will result. From a Command Prompt window, run Defrag with the -a switch to see statistics (including free space) regarding the specified volume.
You cannot defragment a volume that Windows has marked as possibly containing errors. To troubleshoot this possibility, type chkdsk d: /f at any command prompt, substituting the letter of the drive in question. Chkdsk will report and repair any filesystem errors it finds (after restarting, in the case of a system or boot volume).
Disk Defragmenter does not defragment files in the Recycle Bin. Empty the Recycle Bin before defragmenting.
Additionally, Disk Defragmenter does not defragment the following files: Bootsect.dos, Safeboot.fs, Safeboot.csv, Safeboot.rsv, Hiberfil.sys, and Memory.dmp. In addition, the Windows page file is never defragmented.
Disk Defragmenter ignores fragments that are more than 64 MB in size, both in its analytical reports and in operation. According to Microsoft's benchmarks, fragments of this size (which already consist of at least 16,000 contiguous clusters) have a negligible impact on performance. Thanks to disk latency, a large file divided into 10 fragments of 64 MB or greater in size will not load measurably slower than the same file in a single unfragmented location; under those circumstances, it's best to leave the fragments alone.
Disk Defragmenter will pass over any files that are currently in use. For best results, shut down all running programs before running the utility. For even better results, log off and log back on (using an account in the Administrators group) before continuing.
Defragmenting particular files
Do you still want to defragment files larger than 64 MB, despite Microsoft's assurance that those files don't need defragmenting? Mark Russinovich's Contig utility, a free download from Microsoft's Sysinternals website (w7io.com/2105) will do the job. Contig is a file-specific defragmenter. You can use it to analyze and defragment individual files or groups of files meeting wildcard specifications.
Defragmenting Solid-State Media
Because flash disks and other solid-state media don't employ moving parts to save and retrieve data, file fragmentation on these drives is likely to impose a smaller performance penalty than it does on rotating media. For this reason, as well as to avoid decreasing performance lifespan, Disk Defragmenter does not perform scheduled defragmentation of solid-state drives. You can still defragment a solid-state drive if you choose, but only on an ad hoc basis. To do this, run Disk Defragmenter, select the disk you want to defragment, and then click either Analyze Disk or Defragment Disk.