このページでは、現在一般的なPC(AT互換機)において、ドライブレターの配分をWindowsが自動で行う場合の法則について説明します。
ドライブレターとは、Windowsが記憶装置に割り当てるAからZまでの26文字のアルファベットのことです。
Windowsでは、記憶装置を特定するために、ドライブという概念が用いられます。記憶装置とドライブの概念については別ページで解説したいと思います。
AとBは、フロッピーディスクドライブまたはこれに準ずる機器に割り当てられます。
これが、AT互換機の大原則です。現在のAT互換機では、原則として2基までのフロッピーディスクドライブ(以下FDD)が想定されています。したがってAとBをFDDに割り当てた結果残ったC以降の文字が、他の機器のドライブレターとして用いられます。
AはBIOSレベルで優先される設定になっているFDD、BはBIOSレベルで優先されない設定になっているFDDを指します。ハードウェア的には原則としてFDDケーブルの、マザーボード側のコネクタから遠い側のコネクタに接続されたFDDです。BIOS設定によりSwap Floppy Driveあるいはこれに相当する項目がEnabledになっている場合には、AとBの割り当てが逆になります。
また、フロッピーエミュレーション形式のブータブルCD-ROMで起動した場合、起動に使用したCDドライブがAドライブとなります。ただし、Aドライブとしてアクセスできるのは起動に使用したメディアがドライブに入っているときだけです。ブータブルCD-ROMによってCD-ROM用のデバイスドライバが正しく組み込まれていれば、他のCDと入れ替えて、ドライバで指定したドライブレターでアクセスすることができます。
ハードディスクドライブが接続されている場合、Cは以下のいずれかに割り当てられます。
アクティブな基本領域とは、ハードディスクドライブ(以下HDD)中に定義された基本領域のうちで、アクティブ属性が付加されたもののことを指します。
優先度が最も高いHDDは、AT互換機の標準的な起動処理の対象となります。標準的な起動処理では、アクティブ属性が付加された領域から起動するようになっています。IDE接続のHDDのみが接続されている場合、一般的にはプライマリチャネルのマスタ側に接続されたHDDの優先度が最も高くなります。したがって、PCは電源投入時やリブート時に、プライマリチャネルのマスタ側のHDDのアクティブ属性の付加された基本領域から起動を試みるわけです。
また、起動可能なSCSI BIOS搭載のSCSIカードに接続されたSCSI HDDや、起動可能なBIOSを搭載した増設用ATAカードにHDDが接続されている場合にも、それらは起動処理の対象となります。
なお、HDDが接続されていないなどの理由で、BIOSレベルで1台もHDDが認識されていない場合、あるいはHDDが接続されていてもWindowsが扱える領域が確保されていない場合には、RAMドライブやCDドライブにCが割り当てられるため、Cには特別な意味はありません。
アクティブな基本領域が存在しない場合には、最も優先度の高いHDD中で、最も先頭の基本領域がCドライブとなります。
HDDの先頭にNTFSがあり、Windows98のFDISK.EXEを用いて、空いていた領域にFAT32の基本領域を作ったとします。話を簡単にするために、他に領域はないとします。ここで、Windows98の起動ディスクでPCを起動するか、あるいはFAT32の領域にWindows98をインストールし、アクティブ属性を切り替えるなどしてWindows98を起動すると、ドライブレターはどうなるでしょうか。
Windows98はNTFSを扱うことができないので、NTFSにはドライブレターが割り当てられません。したがって、この場合はFAT32の領域にCが割り当てられます。もちろんWindows2000を起動した場合(当然NTFSがアクティブ)には、NTFSの領域がC、FAT32の領域がDとなります。
AとBとCには上に述べたように特別な意味がありましたが、それ以降の文字はある法則に従って各記憶装置に割り当てられます。Windows95系統のWindows9xとWindows NT系統のWindows2000などでは、この法則が異なります。
Windows NTやWindows XPについてはテストできる環境がなかったため、Windows2000の場合について説明します(Windows XPはWindows2000と同じ動作をするものと思われます)。
Windows2000では、デバイスの種類に関わらず、後から追加されたドライブには既存のドライブに割り当てられている文字よりも、アルファベットとしての順番が後で、なおかつ最も順番が前のものをドライブレターとして割り当てるという原則があります。こう書くとわかりにくいのですが、要するにC,D,Eが既存のドライブに使われているところにドライブを追加すると、種類に関わらず、そのドライブのドライブレターはFになります。(AとBはFDDの類と決まっているので除外します。)
以前にドライブレターを変更したために割り当て済みの文字が連続していない場合には、新しいドライブを追加したときに割り当てられる文字は割り当て可能な最も若いものになります。C,D,Xドライブが存在するところに新しいドライブを追加するとEになるということです。
以前に同一システム上のWindows2000上でフォーマットしたHDDの場合、以前に割り当てられていたドライブレターを他のドライブが使用していなければ、以前と同じドライブレターが割り当てられます。
Windows2000/XPの場合には、管理ツールを用いてユーザーが比較的自由にドライブレターを配分することができます。方法は、ドライブレターの変更方法を参照してください。
ただし次のいずれかの条件に該当するドライブのドライブレターは変更できません。
また、動作中のWindowsが使用しているページファイルが存在する領域のドライブレターは変更はできますが、再起動が必要です。
HDDに新たな領域を確保する場合、AやBなどの特殊なものを除いた、未使用の文字の中から選んでドライブレターを割り当てることができます。
インストール直後のドライブレターの割り当てられ方については、次のWindows9xのドライブレターの優先順位を参照してください。少なくともWindows2000では、これにほぼ準拠した動作をします。
Windows9xでは、装置の種類によってドライブレターの優先順位があり、Windowsが自動で配分する場合には、この優先順位の高い順にドライブレターを割り当てます。詳しくは後の項目で説明しますが、大ざっぱにいって、FDDに割り当てられるAとBを除いたC以降の優先順位は、次のようになります。
HDD > RAMドライブ(RAMDRIVE.SYSで作成したもの) > リムーバブルドライブ > CDドライブ > ネットワークドライブ
いきなり結論ですが、Windows9xは次の優先順位でドライブレターを割り当てます。
この他に、ネットワークドライブがありますが、少し性格が違うのでここには挙げていません。以下、それぞれの機器について詳しく説明します。
Windows9xに付属しているFDISK.EXEのみを用いる場合、1台のハードディスクドライブ(以下HDD)中に、基本MS-DOS領域と拡張MS-DOS領域をそれぞれひとつまで作成できます。拡張MS-DOS領域の中には複数の論理ドライブを定義することができ、ドライブレターはこの論理ドライブに対して割り当てられます。1台のHDDに基本MS-DOS領域と拡張MS-DOS領域を作成し、論理ドライブをふたつ定義すると、以下のような感じになります。
| HDD中の領域 | ||
|---|---|---|
| 基本MS-DOS領域 | 拡張MS-DOS領域 | |
| 論理ドライブ1 | 論理ドライブ2 | |
原則として、Windowsは基本MS-DOS領域に優先してドライブレターを割り当て、論理ドライブのドライブレターは、すべての基本MS-DOS領域に割り当てた後に割り当てられます。HDDが複数接続されている場合には、すべてのHDDの基本MS-DOS領域にドライブレターを割り当ててから、論理ドライブにドライブレターが割り当てられます。
Windows9xでは、アクティブな基本MS-DOS領域には必ずCが割り当てられます。
FDISK.EXEだけでは基本MS-DOS領域は1台のHDDにひとつしか作れません。したがってアクティブでない基本領域とは、一般的にはHDDが複数あり、優先度が2番目以降のHDDに存在する基本MS-DOS領域ということになります。基本MS-DOS領域は、アクティブでないものでも優先的にドライブレターが割り当てられます。これらには、Dから順に後の文字が割り当てられます。
Windows2000やXPのディスクの管理やMBMなどのツールを使うと、1台のHDD中に複数の基本MS-DOS領域を作成できます。1台のHDDに複数の基本MS-DOS領域がある場合、1台目のHDDでアクティブでない基本MS-DOS領域と2台目以降のHDDで2番目以降の基本MS-DOS領域は、すべての拡張領域内の論理ドライブに割り当てられたものより後の文字がドライブレターとして割り当てられます。
拡張MS-DOS領域自体にドライブレターが割り当てられることはありません。実際にはドライブレターは拡張MS-DOS領域内に定義した論理ドライブに対して割り当てられます。
拡張MS-DOS領域中の論理ドライブは、通常アクティブな基本MS-DOS領域(Cドライブ)の後にドライブレターが割り当てられます。HDDが2台以上あり、2台目以降のHDDにも基本MS-DOS領域が存在する場合に限り、すべてのHDDの基本MS-DOS領域の後にドライブレターが割り当てられます。論理ドライブが複数ある場合には、拡張領域の先頭から順にドライブレターが割り当てられます。
FDISK.EXEを用いて既存の論理ドライブより前に新たに論理ドライブを確保した直後、Windowsを再起動するまでは、この原則には従いません。
余談ですが、一般に、拡張領域内の連続でない領域を1ドライブとする論理ドライブを作成することはできません。
HDD内の領域について、実例を挙げて説明します。下のような順序で、1台のHDD中に基本MS-DOS領域と拡張MS-DOS領域がひとつずつあるとします。拡張領域の内部にはふたつの論理ドライブを確保することとします。
| HDD1 全体 | ||
|---|---|---|
| 基本MS-DOS領域1 | 拡張MS-DOS領域 | |
| 論理ドライブ1 | 論理ドライブ2 | |
これはHDDの領域の割り当て方のごく一般的な例として挙げたものです。FDISK.EXEを用いて作られた領域の場合、これと異なるのはHDD全体を基本領域のみとしているか、論理ドライブの数が異なるだけのものがほとんどでしょう。
このHDDがWindows9xの起動ドライブであった場合、ドライブレターは次のようになります。特に違和感はないと思います。
| C: | D: | E: |
| 基本MS-DOS領域1 | 論理ドライブ1 | 論理ドライブ2 |
上のような"HDD1"が起動ドライブとしてあるときに、HDDを増設して、増設したHDDには次のように領域を確保したとします。増設したHDD全体を基本MS-DOS領域としています。
| HDD2 全体 | ||
|---|---|---|
| 基本MS-DOS領域2 | ||
このとき、HDD2の基本MS-DOS領域にはHDD1の論理ドライブより優先的にドライブレターが割り当てられます。したがって、ドライブレターは次のようになります。
| C: | D: | E: | F: |
| 基本MS-DOS領域1 | 基本MS-DOS領域2 | 論理ドライブ1 | 論理ドライブ2 |
| HDD1の領域 | HDD2の領域 | HDD1の領域 | |
このように、増設したHDDに基本MS-DOS領域を確保すると、既存の論理ドライブのドライブレターが変化してしまいます。これは、増設したHDDには基本領域を確保せず、拡張領域のみを確保することで回避できます。
1台のHDD中に複数の基本MS-DOS領域が存在する場合について説明します。FDISK.EXEだけでは1台のHDD中に複数の基本MS-DOS領域を作成することはできないので、これはWindows2000やXPなどで作成されたか、あるいは何らかのツールを使って領域を作成した特殊な場合です。
| HDD1 全体 | |||
|---|---|---|---|
| 基本MS-DOS領域1 | 基本MS-DOS領域2 | 拡張MS-DOS領域 | |
| 論理ドライブ1 | 論理ドライブ2 | ||
基本MS-DOS領域1と2にWindows9xをインストールし、拡張MS-DOS領域中の論理ドライブ1をFAT16ファイルシステムでフォーマットするとします。いずれかのWindows9xからWindows2000のセットアップを開始すると、論理ドライブにもWindows2000をセットアップすることができます。そこで論理ドライブ2をNTFSでフォーマットし、そこにWindows2000をインストールしたとします。(注1)
上記のような領域がある場合、基本MS-DOS領域2のWindows9xを起動すると、ドライブレターは次のように割り当てられます。(注2)
| C: | D: | E: | F: |
| 基本MS-DOS領域2 | 論理ドライブ1 | 論理ドライブ2 | 基本MS-DOS領域1 |
1台のHDDに2つ以上の基本領域が存在する場合、アクティブでない基本領域には最後にドライブレターが割り当てられることに注意してください。基本MS-DOS領域1のWindows9xを起動した場合には、基本MS-DOS領域1がCドライブとなり、基本MS-DOS領域2がFドライブとなります。これは、Windows9xが常にアクティブな基本領域をCドライブとするからです。
2台目のHDDとして下のような領域を持つものがあったとします。
| HDD2 全体 | ||
|---|---|---|
| 基本MS-DOS領域3 | 拡張MS-DOS領域 | |
| 論理ドライブ3 | ||
これを最初のHDDの次に接続して基本MS-DOS領域2のWindows9xを起動した場合には、ドライブレターは次のようになります。
| C: | D: | E: | F: | G: | H: |
| 基本MS-DOS領域2 | 基本MS-DOS領域3 | 論理ドライブ1 | 論理ドライブ2 | 論理ドライブ3 | 基本MS-DOS領域1 |
| HDD1の領域 | HDD2の領域 | HDD1の領域 | HDD2の領域 | HDD1の領域 | |
2台目以降のHDDの基本MS-DOS領域は、一般法則に従い1台目のアクティブな基本MS-DOS領域の次にドライブレターが割り当てられます。
ところで、HDD2の領域が次のように作成されていた場合にはどうなるでしょうか。これも、何らかのツールを使わないと作れない、1台のHDD中に複数の基本MS-DOS領域がある場合です。
| HDD2 全体 | |
|---|---|
| 基本MS-DOS領域3 | 基本MS-DOS領域4 |
このHDD2をHDD1がある環境に増設した場合、ドライブレターは次のようになります。
| C: | D: | E: | F: | G: | H: |
| 基本MS-DOS領域2 | 基本MS-DOS領域3 | 論理ドライブ1 | 論理ドライブ2 | 基本MS-DOS領域1 | 基本MS-DOS領域4 |
| HDD1の領域 | HDD2の領域 | HDD1の領域 | HDD2の領域 | ||
1台目のHDDのアクティブな基本MS-DOS領域がCになることは、最初に述べたとおりです。2台目のHDDにも基本MS-DOS領域が存在するので、次の文字Dは、2台目のHDDの先頭の基本MS-DOS領域に割り当てられます。
ここで、1台目のHDDのアクティブでない方の基本MS-DOS領域と2台目のHDDの後方の基本MS-DOS領域よりも、論理ドライブの方が優先度が高いことに注意してください。
1台目のHDDではアクティブな基本MS-DOS領域が、それ以降のHDDでは前の方にある基本MS-DOS領域が最も優先度が高くなります。それ以外の基本MS-DOS領域は、他のすべての領域よりも優先度が低くなります。HDDに対するドライブレターは、以下の優先度で順に割り当てられます。
アクティブな基本MS-DOS領域(C) > 2台目以降のHDDの基本MS-DOS領域 > 拡張領域中の論理ドライブ > アクティブでない基本MS-DOS領域
RAMDRIVE.SYSで確保したRAMドライブの場合、ドライブレターはWindowsから見えるすべてのHDDの領域にドライブレターとして使われたものよりも後の文字が割り当てられます。HDDに割り当てられた最後の文字がDであれば、RAMドライブのドライブレターはEになります。
MOドライブなどのリムーバブルドライブのドライブレターは、RAMドライブに割り当てられたものより後の文字になります。RAMドライブが存在しない場合は、HDDに割り当てられたものよりも後の文字になります。
リムーバブルドライブのドライブレターは、ユーザーが変更できます。
CDドライブのドライブレターはRAMドライブとリムーバブルドライブに割り当てられたものより後の文字になります。RAMドライブもリムーバブルドライブも存在しない場合には、HDDに割り当てられたものよりも後の文字になります。
CDドライブのドライブレターは、ユーザーが変更できます。ゲームソフトに多いのですが、使用時にインストール時と同じドライブレターのドライブにCD-ROMが入っていることを要求するものがあります。HDDやリムーバブルドライブを増設した場合などに、ドライブレターが変化してこういったソフトが使えなくなることがあるので、CDドライブのドライブレターはアルファベットの後半のものに変更しておいた方がいいでしょう。
またATAPIとSCSIのCDドライブの混在では、SCSI CDドライブの方が先にドライブレターを割り当てられます。SCSI CDドライブが複数存在する場合、ドライブレターはSCSI IDの順に割り当てられます。
ネットワークドライブは他のドライブとは多少性質が異なります。ネットワークドライブとしてマウントする対象は直接接続されている物理的な記憶装置ではなく、他のコンピュータの記憶装置の一部であるディレクトリです。他のドライブが基本的にはWindowsの起動時にドライブレターが割り当てられるのに対し、ネットワークドライブはWindowsの動作中に自由にマウント及び切断することができます。
したがってネットワークドライブのドライブレターは最も優先順位が低く、Windowsが起動時にすべての機器にドライブレターを割り当てた結果残ったドライブレターのみが使えることになります。
ところで、次のようにドライブレターが割り当てられた環境があったとします。C:からE:はHDDの領域です。F:のネットワークドライブは、ログオン時に接続が復元される設定になっています。
| C: | D: | E: | F: |
| 基本MS-DOS領域 | 論理ドライブ1 | 論理ドライブ2 | ネットワークドライブ |
この環境に、リムーバブルドライブを1台追加したとします。すると、どうなるでしょうか。実は、ネットワーク接続が消滅してしまいます。リムーバブルドライブを追加してWindowsを起動すると、次のようになります。
| C: | D: | E: | F: |
| 基本MS-DOS領域 | 論理ドライブ1 | 論理ドライブ2 | リムーバブルドライブ |
したがって、このような操作を行った場合には改めてネットワークドライブをマウントし直す必要があるため、注意が必要です。
さて、ここで今接続したリムーバブルドライブを取り外すなり、HDDのパーティションを削除するなりして、ネットワークドライブが消滅する以前に割り当てられていたドライブレターが確保できる状態になったとしたら、どうなるでしょうか。Windows98SEで試してみると、消滅していたネットワーク接続が復活しました。WindowsMe等では試していませんが、おそらく似たような動作をするのではないかと思われます。
このような構成を作成すると、Windows2000のセットアップに利用しなかった方のWindows9x(98以降)を起動したときにEドライブに対してスキャンディスクが実行され、NTFSが破壊されてしまうことがあります。これを避けるには、セットアップに使わないWindows9xの設定をすべて不正終了時にスキャンディスクを実行しないように変更してからWindows2000をセットアップするか、Windows2000をFATファイルシステムのパーティションにインストールしてください。
私がWindows98SEでテストした限りではこのようにドライブレターが割り当てられましたが、NTFSにはドライブレターが割り当てられないこともあるようです(Win98SEはNTFS5を知らないからではないかと推測されます)。また、論理ドライブ2をNTFSとしてWindows2000のインストールを完了させた後、FDISK.EXEを用いてさらに論理ドライブを追加すると、NTFSに対してはドライブレターが割り当てられなくなりました。