このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。
Windows 2000 以降は、管理ツール「ディスクの管理」の、
「ドライブ文字とパスの変更」メニューより、
ボリュームに割り当てるドライブ名を変更可能だ。
この画面では、ドライブの追加や削除ができる。
ボリュームには、ドライブを割り当てるのは任意であるが、
割り当てる場合は最大 1 つのドライブ名しか指定できない。
どうしても複数のドライブ名を割り当てたい場合は、
割り当てたドライブのルートディレクトリに対して
subst することで仮想ドライブを作ることが可能である。
さて、このダイアログを見てみると。
ドライブ文字と「パスの変更」と書いてある。
実は、ボリュームには、ドライブ名以外に、
任意のパスをボリュームに割り当てることもできるのだ。
これを、ボリュームマウントポイント機能と呼ぶ。
subst は任意のフォルダをドライブに割り当てる機能だが、
ボリュームマウントポイントは、ボリューム(ドライブ)を
任意のディレクトリに割り当てることができる機能である。
これは UNIX のマウント機能に非常に良く似ている。
MS-DOS な人には、JOIN と言えば分かるだろうか。
これは、Windows 2000 以降で搭載された、
NTFS (v3) が持つ新しいリンク機能である。
マウント先は NTFS 上のディレクトリである必要があるが、
そのリンク先はハードディスクに限らず自由である。
ボリュームマウントポイントの操作は、
管理ツール「ディスクの管理」以外にも、
mountvol コマンドを使う方法がある。
では、mountvol コマンドで割り当て状態を見てみよう。
mountvol を引数なしで実行すると一覧が出る。
> mountvol
========== mountvol output ==========
(……先頭部分は省略……)
\\?\Volume{2c4c2620-c203-11d9-a821-806d6172696f}\
C:\
D:\mnt\system\
C:\vfsroot\mnt\system\
\\?\Volume{ed3cc010-cb79-11d9-af26-001125868411}\
D:\
C:\vfsroot\
D:\mnt\system\vfsroot\
\\?\Volume{b195a0d2-a08e-11da-b029-00054e4e9464}\
Q:\
\\?\Volume{f08e7d20-64f1-11db-b10d-001125868411}\
D:\mnt\cdrom\
C:\vfsroot\mnt\cdrom\
D:\mnt\system\vfsroot\mnt\cdrom\
========== end of mountvol output ==========
\\?\Volume で始まるのはボリュームパスであり
後ろに続く {} 内の値がボリューム識別子である。
この例の場合、4 つのボリュームがあり、
上の 2 つはハードディスクのパーティション、
下の 2 つは CD-ROM ドライブである。
最初のボリュームは、C ドライブが割り当てられている他に、
D:\mnt\system\ にマウントされている。
また、次のボリュームは、D ドライブ以外に、
C:\vfsroot\ にマウントされている。
3 つめのボリュームは、Q ドライブが割り当てられている。
これはただの CD-ROM ドライブだ。
最後のボリュームは、ドライブを割り当てていないが、
D:\mnt\cdrom\ にマウントしているため、
ドライブがなくともこのパスでアクセスすることができる。
以前、シェルのフォルダリンクを紹介したが、
この機能でリンクしたフォルダを開くと、
アドレスバーのパスは、リンク先のものに変わってしまった。
つまり「見た目だけツリーに表示する」だけであった。
それに比べ、ボリュームマウントポイント機能は、
実際に NTFS ドライバがパスを処理するため、
マウントされたパスを使ってアクセスすることができる。
もちろん、プログラムからも利用可能である。
この例では D:\mnt\system\ に C:\ がマウントされているため、
WINDOWS フォルダに、D:\mnt\system\WINDOWS\ として
アクセスすることができる。
また、C:\vfsroot\ が D:\ と同じであるため、
C:\vfsroot\mnt\system\ は C:\ であり、
D:\mnt\system\vfsroot は D: であり、
C:\vfsroot\mnt\system\vfsroot\ は D: であり、
D:\mnt\system\vfsroot\mnt\system\ は C: である(笑)
この場合、双方で再帰的にパスを辿ることができるので、
無限に続く長いパスでアクセスすることができる。
これらは NTFS のドライバで処理されてるので、
プログラムでは意識する必要がない。
ボリュームマウントポイントの大きな利点は、
ディスク容量が不足したドライブを救済できることだ。
ドライブの一部のディレクトリの中身を、
別のドライブ(ボリューム)に移し、
そのドライブを元のディレクトリにマウントすれば、
元のドライブの空き容量を増やすことができる。
また、ユーザプロファイルの格納された、
C:\Documents and Settings フォルダを、
D ドライブに移動してマウントして運用すれば、
元の C ドライブではユーザプロファイルの容量を
気にすることなく運用することができる。
また、アクセス頻度が高いユーザプロファイルを、
システムドライブと分離するので、
ディスクのアクセス効率も最適化することができる。
ボリュームマウントポイントにはこのような使い方があるのだ。