For our off-site off-line scenario I was planning to reuse a bunch of 1TB 3.5 inch SATA hard disks that previously made up a RAID array in a recently retired server.
To conveniently swap backup disks I've set-up an eSATA dock to the computer that makes backups.
I want to copy all our VMs to a hard disk, and then have someone take that disk home at regular intervals.
I created a single primary partition on each hard disk and formatted it as NTFS.
The batch file I had scripted together seems to work fine. So far so good.
The script uses drive letter W:, and because that does not appear to be consistent for all the drives, the script would only work for one disk.

There is an easy way to have a partition always use the same letter, and that is by manually changing it with diskmgmt.msc.
But I needed all my partitions to show up as the same letter.

After some experiments I found that the assigned drive letter is tied to the Volume id or Volume Serial Number of an NTFS partition.
This is a 32 bit ID that you might have seen before, because it's listed in the output of the dir command:

C:\Users\visser>dir
 Volume in drive C has no label.
 Volume Serial Number is 16D0-F449

 Directory of C:\Users\visser

2011-12-14  11:58    <DIR>          .
2011-12-14  11:58    <DIR>          ..
2011-11-21  11:37    <DIR>          .asdm
2011-05-14  19:12    <DIR>          .GalleryRemote
2011-05-14  19:12    <DIR>          .ssh
2011-10-31  12:54    <DIR>          .thinupload
2011-11-02  09:39    <DIR>          Contacts
2011-12-15  11:39    <DIR>          Desktop
etc etc

Those IDs are automatically generated when the filesystem is created, and the versions of Windows that we use (Windows 7, and Windows Server 2008R2) do not offer a way to change it.
The Sysinternals collection however contains the volumeid.exe tool that does the trick. It can be downloaded for free at http://technet.microsoft.com/en-us/sysinternals/bb897436.

I set the ID to the same value (CAFE-BABE) for all the NTFS partitions on my disks.
After that I used diskmgmt.msc to change the drive letter to W:.

At this moment my Windows system will always use W: for partitions with ID CAFE-BABE.
So it does not matter which of the hard disks I connect to the computer, it will always look like this:

W:\>dir
 Volume in drive W is TERENA
 Volume Serial Number is CAFE-BABE

 Directory of W:\

2011-11-30  12:46   999,653,638,144 TERENA_VMs.tc
               1 File(s) 999,653,638,144 bytes
               0 Dir(s)     423,763,968 bytes free

Note that the VolumeID-driveletter mapping is fixed but limited to a specific Windows computer.
So all the CAFE-BABE partitions will likely show up as a different letter on another Windows computer.
But the good thing is that that letter will be the same again for all partitions.

  • No labels