[Top: John S. Allen's Home Page]
[Up: Computer articles on this site]

[contact John S. Allen by e-mail]

Managing Drive Letter Assignments on PC's

by John S. Allen

(c) 1997, John S. Allen

Thanks to Mike Newcomb of the

Boston Windows 95 User Group

for assistance

Repartitioning - Problems and advantages | How PC's allocate drive letters
Real-world examples | Using dummy drive letters
Avoiding or hiding primary partitions | Different uses for different drives
Dealing with SCSI drives and removable trays | Conclusions

Hard drive partitions appear to DOS and Windows 9x as separate drive letters, whether they are on the same drive or on separate drives. The only way to configure partitions used to be with the DOS FDISK utility, which destroys all the data on the drive. To repartition a drive, you had to back up the data, run FDISK and then restore the data. This could take hours.

PowerQuest Partition Magic and other similar utilties can now create, resize and delete hard drive partitions simply, quickly and easily, and without destroying data, a capability which is extremely useful with today's large-capacity hard drives.

Repartitioning - problems and advantages

But all is not so simple! Drive mapping of most PC's is very inflexible. Adding a new drive or partition often changes the drive letters for existing partitions.

This is a real fly in the ointment. When this happens, Windows software packages can not find all of the files they need to run. You can resolve this problem laboriously, by reinstalling the software. There are utilities available which reconfigure software without the need for a full reinstallation. One such utility comes with MicroHelp Uninstaller 4.0 (and included in Partition Magic v. 3.0). Another such utility is available as freeware from PC magazine. Still, the process of reconfiguring is time-consuming -- and it is not always successful.

Problems with drive letter changes occur even with data files, because Windows OLE understands only absolute links, not relative links (which, for example, preserve all of the links in a directory tree when that tree is moved to a different drive).

Yet repartitioning is often very advantageous. The File Allocation Table in DOS and Windows divides a partition into a maximum of 65,536 allocation "clusters." With today's large partitions, the cluster size must grow quite large to keep the number of clusters under 65,536. On a 1 GB to 2 GB drive, each cluster is 32 kilobytes in size, so even a 1-byte file occupies 32 kilobytes of disk space. Even with large files, any leftover space in the last cluster the file occupies is wasted.

This situation will improve over the next few years as the FAT-32 file system in Windows 9x becomes common. FAT-32 allows over 4 billion clusters per partition. Windows NT/2000 also uses an advanced file system, but it is different. FAT-16 is the only format supported by all of them. And smaller partitions are the way to save space. The first time I used Partition Magic on my 1600 megabyte Maxtor drive, I recovered over 300 megabytes.

You enjoy savings like these too, but you need to plan ahead to minimize the problem of drive letter reallocations, and I'll show you how you can do this.

How PC's allocate drive letters

Most PC's map drives in this order:

1) Floppy drives A: and (optionally) B:

2) The primary partitions of IDE drives in the order they are connected to the drive controller, starting with drive C:

3) The primary partitions of SCSI hard drives in the order of their SCSI ID

4) The logical drive(s) in the extended partition of the C: drive

5) The logical drive(s) in the extended partition of each additional hard drive, taking the drives in the same order as in 1, 2 and 3

6) Under Windows 9x, primary and extended partitions of any removable-media drive(s)

7) Drives such as CD-ROM drives and removable-media drives not installed by the BIOS, in the order they appear in CONFIG.SYS or as specified in the Windows 9x Device Manager

8) Network drives as mapped using network software or the Windows 9x Device Manager

There is some flexibility in hardware installation: as long as you have only one partition on a drive, you can assign drive letters by connecting the drives to the computer's primary and secondary IDE controllers, and by setting jumpers to configure the drives on each controller as master and slave. The only flexibility through software, on the other hand, is with drives (typically, CD-ROM and network drives) that are not installed through the BIOS.

Further information on drive letter assignments and partitioning is available on the Web:

MS-DOS and Windows 95 drive letter assignments (Important - includes details on additional primary partitions and other topics left out of the summary in this article)

Changing letter of CD-ROM drive in Windows 95 | MS DOS partitioning summary
Windows NT drive letter assignments
Novell technical support documents on drive mapping

Some real-world examples

Now let's see how drive assignments work out in practice.

Example 1: The BIOS of most PC's assigns drive letters in ascending order beginning with C: for the master drive on the primary controller, as shown in the following table:

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C: D:E:F:
Logical drive(s):

If there is no slave drive on the primary controller, then D: is assigned to the master drive on the secondary controller.

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C: D:E:
Logical drive(s):

Now, consider what happens if the C: drive has been partitioned to create a logical drive. If there is only one physical drive on the computer, the logical drive (shown in red) is D:

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C:
Logical drive(s):D:

But if you install a second drive, the logical drive on the C: drive is changed to E:.

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C: D:
Logical drive(s):E: F:

Example 2: With every drive you add that has an active primary partition, the drive letter assignments change for all logical drives and for the primary partition of any drives farther down the drive list than the one you installed. For example, we start with a master drive on each controller. The D: drive is shown in red.

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C: D:
Logical drive(s):E: F:

Now we add a slave drive on the primary controller. Clearly, this is not a good way to go, because it changes three of the four previously existing drive letters:

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C: D:E:
Logical drive(s):F: G:

It would have been somewhat better do move the existing D: drive to the slave position on controller 1. Then its primary partition would still be D:

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C: D:E:
Logical drive(s):F: G:

Example 3: Now let's see what happens when we add a logical drive ahead of another logical drive. Here is the configuration we start with:

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C: D:E:
Logical drive(s):F: G:

When we add a logical drive (shown in red), logical drives farther down the drive list change their drive letters, though primary partitions are not affected:

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C: D:E:
Logical drive(s):F: G:H:

Example 4: You may also add additional logical drives - more than one to a physical drive is entirely possible - and when you do, the logical drives farther down the list are bumped to new drive letters in the same way. The new partition is shown in red:

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C: D:E:
Logical drive(s):F: G: H:I:

Some newer PC BIOSes allow flexibility in drive assignments, and others adjust drive letter assignments by optionally leaving some drives uninstalled until after the computer boots. Most PC's, however, do not have either of these features.

It's not a pretty situation. When repartitioning, you will usually have to move your software and data to restore it to its original drive letter assignment, or else do a tremendous amount of reconfiguring software before it will run again.

Plan ahead - use dummy drive letters,
and/or eliminate the primary partition!

Example 5: You can avoid these problems by allocating tiny, dummy logical drives in which you don't store data. Add at least one dummy drive letter for every physical drive you anticipate that you may add in the future. The dummy drives serve only as placeholders; you remove or hide them when you add a new physical or logical drive, in order to keep the drive letters the same for the partitions in which you actually keep data. Give the dummy drives informative labels, like DummyDrive1.

Partition Magic makes it easy to reconfigure drives this way. For example (dummy drives in lowercase):

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C:
Logical drive(s):d: e: F: g: h: i:

The d: and e: dummy drives will allow us to add two more IDE drives without changing the drive letter of F:. Then, removing the g:, h: and i: dummy drives will allow us to keep the drive letter the same for removable media drives, or logical drives on a SCSI drive farther down the drive list.

Now, we remove the d: dummy drive and add one additional physical drive. Note that the drive letters for all partitions we use stay the same, and the last drive letter also stays the same.

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C: D:
Logical drive(s):e: F: g: H: i:

And now we add the physical drive. This is as far as we can go with our strategy and keep the drive letters the same, since we have run out of dummy drives ahead of the F: logical drive which we are using.

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C: D:E:
Logical drive(s):F: g: H:I:

Avoiding or hiding primary partitions

Example 6: There's another trick that gets us past the limitation we just discussed: on the second drive, hide the primary partition, or don't install one. Then, the logical drives will keep the same drive letter allocations as you add drives. On the two-drive installation we still add dummy drives g: and h: at the end of the list, in case we add another drive:

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C:
Logical drive(s):D: E: F: g: h:

When we add another drive, we keep the last drive letter as h:, so the drive letter allocations won't change for a removable media drive or SCSI drive which is assigned after the IDE drives. (You could achieve the same end by installing dummy RAMdrives using your CONFIG.SYS file):

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C:
Logical drive(s):D: E: F: g:H:

Example 7: Adding a drive or partition ahead of another which is already installed changes all of the drive letters for partitions farther down the list. If you have and empty spot in the drive list, it is desirable to have dummy partitions ahead of the first partition you use on the next drive:

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C:
Logical drive(s):D: e: f: G: h:

Here's how to add a slave drive on controller 1:

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Primary partition:C:
Logical drive(s):D: E: F:G: h:

As you add or repartition drives, you will most often will want to keep data on the same drive and in the same partition where it was. Sometimes you will want to move data to a different drive which offers better performance, while keeping the same drive letter assignment for the data. You will almost always want to avoid changing the drive letter assignment, even if that means that you must move data between partitions or between drives.

Different uses for different drives

Example 7: Different drives have different uses. My PC originally had only a 540 MB Seagate 3660A drive which transfers data relatively slowly but which spins up in 3 seconds. I added a 1.6 GB Maxtor drive, which reads and writes faster but which takes nearly ten seconds to spin up. I set the computer's green BIOS to shut off the drive motors after 20 minutes, a good compromise of energy savings and drive wear against stressing the drives with starts and stops.

The Maxtor drive makes the most sense as the system drive, since it loads large software packages quickly. The Seagate drive is better to store data, since it spins up quickly when I need to access a file. When I first installed the Maxtor drive, I did not know this, and I had the drives configured this way:

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Make and modelSeagate 3660A Maxtor 71626
Primary partition:C: D:
Logical drive(s):E: F:

When I discovered the differences in the drives' performance, I reconfigured them this way. To keep the same files under drive letters C: and D:, I had to transfer data between drives before changing the cable connections:

Controller 1 Controller 2
Drive configured as:Master SlaveMasterSlave
Make and modelMaxtor 71626 Seagate 3660A
Primary partition:C: D:
Logical drive(s):E: F: g:

I still don't have any of the dummy partitions which would be useful if I add another drive, but I wouldn't save myself any work later by installing them now. I'm just going to have to deal with drive letter reallocations when the time comes. You know more than I did when I first installed the Maxtor drive, so plan ahead!

Note that the E: and F: logical drives on the Maxtor did not change their drive letters, though I did have to transfer all the data between the primary partitions of the two drives. And I'll add a few words of warning:

Be very careful when moving drives between controllers. You can corrupt the data on the drive if you write to it while it is connected to a controller configured for a different drive type. Be sure to configure the BIOS for the correct drive types (or for no drive with autosensing) before you reinstall the drives. (I learned this the hard way, but my data was saved by the full backup I ran before I reconnected my drives around...)

The size of the partitions on the Maxtor drive is now as follows:

C:511 MB
E:511 MB
F:511 MB
G:17.5 MB

The three 511 MB partitions are as large as possible while keeping cluster size down to 8 kb. The small, 17.5 Mb partition might seem to be useless, but in fact if I added this to any of the other partitions, the cluster size of that partition would swell to 16 kb and the useful capacity of the drive would decrease substantially. I might readjust partition size in the future, for example by increasing the size of the G: partition at the expense of on of the others, and using the G: partition to store small data files for which the small cluster size is most advantageous. I could add a partition to the Seagate drive to get its primary partition below 511 MB and reduce its cluster size. Fortunately, neither of these changes will reallocate drive letters.

Dealing with SCSI drives and removable trays

Differences between IDE and SCSI drives point strongly to different uses for them. IDE drives are more economical. SCSI drives can be faster. Some drives, mostly SCSI drives, are AV-certified, meaning that they don't periodically recalibrate themselves, interrupting the data stream. This feature is important hwen reading or writing streaming media or writing CD-ROMs.

For these reasons, it can make good economic sense to keep an IDE drive or drives on your computer even when you add a SCSI drive, reserving the SCSI drive for applications which require its better performance.

You may want to use only the SCSI drive(s) when doing multimedia work, to avoid accesses to the IDE drive(s) that can interrupt the flow of data. While most BIOSes don't let you use a SCSI drive as the system drive without disabling the IDE controller, you can avoid unwanted drive letter changes by using dummy logical drives on the SCSI drive. Since Partition Magic runs under DOS, it would be relatively easy to set up a batch file to change the configuration. You can hide the primary partition on the SCSI drive until you need it, and keep a version of the system software there which is configured without the IDE drives.

If you keep a drive in a removable tray so you can use it for backups or data exchange, you may want to use a similar approach. Preferably, place the removable drive at the end of the BIOS drive list where removing or replacing it will only affect removable media drives. Rather than to run the computer with the tray empty, it is simpler to have two identical drives with the same partitioning so that you can switch them and keep all drive letter allocations the same.

Conclusions

The workarounds described here, using dummy drive assignments, result in very little loss of drive space, but they do use up drive letters rather quickly. This is possibly a problem, especially for a computer on a network. Certainly, flexible drive mapping would be preferable, but we don't have that on most PC's. DOS and Windows do implement flexible drive mapping for CD-ROM drives and network drives. For local drives, the strategy I've described is the best we have for now.

[Top: John S. Allen's Home Page]
[Up: Computer articles on this site]

[contact John S. Allen by e-mail]