Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

ジャンクション機能を使ってディスク・ボリュームをマウントする

解説をスキップして操作方法を読む

デジタルアドバンテージ 打越 浩幸
2008/02/15
2013/01/31更新
対象OS
Windows 2000
Windows XP
Windows Server 2003
Windows Vista
Windows Server 2008
あるフォルダの下に、別のドライブやボリューム、フォルダをマウントしたいことがある。
Windows OSでは「ジャンクション・ポイント」機能を使ってマウントできる。
ボリュームをマウントするには、ディスクの管理ツールかmountvolコマンドを利用する。

解説

 システムに多数のディスク・ドライブを装着している場合、ある特定のボリューム(ディスク上に存在する論理的なファイル・システム区画)やフォルダを、別のフォルダの下に「マウント」して、1つの大きなファイル・システムとして利用したいことがある。例えばあるディスクのデータ領域(C:\Data)がいっぱいになったので、増設した別のディスクをC:\Dataというフォルダとしてアクセスしたいといった場合だ。同じパス名(ツリー)構造を維持したまま増設したディスクへアクセスできれば、保存先の変更などを意識することなく、増設ディスクを利用できる。また、複数のドライブやボリュームを1つのフォルダの下に集中して配置できれば、多数のドライブ名に煩わされることなく、簡単にディスクへアクセスできる(例えば「G:」「H:」「I:」という3つのドライブを、それぞれ、D:\mnt\vol1、D:\mnt\vol2、D:\mnt\vol3としてアクセスできるようになる)。

 このように、あるフォルダ(上の例ではC:\DataやD:\mnt)の下に、別のドライブやボリューム、フォルダを「ぶら下がるように配置する」ことを、「マウント(mount)する」という。

 Windows OSでは、「ジャンクション」機能を利用することにより、ボリュームやフォルダをマウントすることが可能である(マウントする場所を「ジャンクション・ポイント」という)。ただしマウントのホストとなる側(上の例ではC:\DataやD:\mnt)は、NTFSファイル・システムである必要がある。マウントする対象となるボリュームやフォルダ(ジャンクション・ポイントの下に配置したい対象)は、NTFSでなく、FATやリムーバブル・デバイス(フロッピーやCD-ROM、メモリ・カード・デバイス)などでもよい(リモートの共有ネットワーク・ドライブは不可。ローカルのボリュームのみ指定可能)。

 ボリュームをマウントする場合とフォルダをマウントする場合では、利用するコマンドなどに違いがある。前者の場合はGUIの「コンピュータの管理」ツールかmountvol.exeコマンドを利用し、フォルダをマウントする場合はリソースキット・ツールに含まれるlinkd.exeコマンドを利用する。本TIPSではボリュームのマウント方法について解説する。フォルダ(ボリュームのルート以外の任意のサブフォルダ)をマウントする方法については、TIPS「ジャンクション機能を使ってフォルダをマウントする」を参照していただきたい。

 なおマウントと似た機能として、TIPS「ファイルへの別名を割り当てるハードリンクを作成する」ではハードリンクを紹介したが、ハードリンクは同一ボリューム内にあるファイルへのリンクしかサポートしていない。これに対してジャンクション・ポイントは、ほかのボリュームに対するリンクを実現するものであり、その目的も利用方法も異なる。リンクの種類とその作成方法の違いについても、TIPS「ジャンクション機能を使ってフォルダをマウントする」を参照していただきたい。

※本TIPSは、TIPS「ディスク・ボリュームをほかのボリュームのフォルダに割り当てる方法(NTFSのリパース・ポイント機能を利用する)」の内容を元に、mountvolコマンドやWindows Vistaに対する対応などを追加して、 加筆修正しています。

操作方法

ディスクの管理ツールでボリュームをマウントする

 マウントを行う前に、まずジャンクション・ポイントを作成するための空フォルダ(ディレクトリ)を作成しておく。以下の例では、E:\とF:\の2つのボリュームをC:\Dataの下にData1、Data2という名前でマウントしてみよう。そのためには、C:\Dataというフォルダを作成後、さらにその中にData1とData2という空のフォルダを作成しておく。その場合、Data1もData2も空フォルダにしておかなければならない。中にファイルやフォルダなどが存在しているとマウント操作は失敗する。

 GUIの管理ツールでボリュームをマウントするには、ディスクの管理ツールを利用する。[マイ コンピュータ]を右クリックし、ポップアップ・メニューから[管理]を選んで[コンピュータの管理]ツールを起動する([スタート]メニューや[コントロール パネル]の[管理ツール]から起動してもよい)。そして[コンピュータの管理]-[記憶域]-[ディスクの管理]を選択する。

マウントするボリュームの選択
ディスクの管理ツールを起動し、マウントしたボリュームを選択する。
このディスクの管理ツールを選択する。
以下では、このC:\のボリューム上にC:\Dataというフォルダを作成し、その中にさらにData1やData2という名前のジャンクション・ポイントで、E:\やF:\をマウントする。
このボリュームをC:\Data\Data1としてマウントする。ドライブ(ディスク)単位でマウントするのではなく、ボリューム単位でマウントする。なおCD-ROMドライブをマウントする場合は、左側のドライブのアイコンの部分を右クリックして、ポップアップ・メニューを表示させる。
これを選択する。

 次にマウントしたいボリューム(ディスクではない)を選択して右クリックし、ポップアップ・メニューから[ドライブ文字とパスの変更]をクリックする。すると次のようなダイアログが表示されるので、マウントしたい先(ジャンクション・ポイントとして扱う、NTFSボリューム上の空フォルダ)のパスを追加する。

マウントする前のパス名情報
このダイアログは、該当ボリュームが現在どのドライブとしてシステムに接続されているかを表している。デフォルトではE:\やF:\など、独立したドライブとして割り当てられているはずである。
デフォルトでは、独立した単独のドライブ文字が割り当てられている。
マウント先のジャンクション・ポイントを追加するにはこれをクリックする。

 [追加]ボタンをクリックすると、マウント先のジャンクション・ポイントのパスを入力するダイアログが表示されるので、例えば「C:\Data\Data1」などのフォルダを指定する(マウント先として使われるので、空のフォルダでなければならない)。追加後は次のようになっているはずである。

パスを追加した後の状態
マウント先を追加すると、このように、2つ(以上)のパスからアクセスできるようになる。デフォルトのE:を削除したり、さらに別の場所にマウントしたりすることもできる。
元からあるパス。
追加したパス。

 同様にして、もう1つのボリュームも追加してみよう。追加後にフォルダの内容を確認すると、次のように表示される。「<JUNCTION>」は、別のボリュームがマウントされていることを表す。Windows Vistaの場合は、マウントされているボリュームの情報(ボリューム名。以下のmountvolコマンドの解説を参照)がさらに追加で表示される。

C:\Data>dir …カレント・ドライブはC:\Data
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は 0065-56BB です

C:\Data のディレクトリ

2008/02/13  12:17    <DIR>          .
2008/02/13  12:17    <DIR>          ..
2008/02/13  12:17    <JUNCTION>     Data1 …マウントしたE:\
2008/02/13  12:17    <JUNCTION>     Data2 …マウントしたF:\
               0 個のファイル                   0 バイト
               4 個のディレクトリ  14,869,008,384 バイトの空き領域 …これは元のC:\ドライブの空き容量。カレント・フォルダをData1以下に変更すると、E:\ドライブの空き容量が表示される

C:\Data>

マウントしたボリュームをエクスプローラで見たところ
マウントしたボリュームをエクスプローラで確認すると、ジャンクション・ポイントはディスク・ドライブのアイコンで表示される。
マウント・ポイントを含むフォルダ。これは通常のフォルダ。
マウントしたE:\ボリューム。アイコンがディスク・ドライブの形になっている。このフォルダはE:\というパス名でもアクセスできる。
マウントしたF:\ボリューム。
マウント前のフォルダ。通常のフォルダのアイコン。

 このGUIの管理ツールを用いる方法では、フロッピー・ドライブやUSBメモリ・デバイスなどのリムーバブル・ドライブをマウントすることはできない(ディスクの管理ツールに表示されないため)。それらのドライブをマウントしたければ、次のmountvol.exeコマンドを使う必要がある。

 なお、ループになるようにマウントしてしまうと(例えばD:\Dataの下にE:\をマウントし、E:\NewDataの下にD:\をマウントするなど)、ジャンクション・ポイントに対応していないアプリケーションではフォルダ階層を正しくたどれず、エラーを引き起こす可能性がある。また、システムの重要なフォルダ(デフォルトで作成される\Documents and Settingsなど)をマウントしようとしても、どこで不具合が発生するか分からないので(ジャンクション・ポイントはWindows OSではあまり使われない機能のため、すべてのアプリケーションで問題なく使える保証はない)、無用なトラブルを避けるためにも、なるべくシンプルな構成で使うことが望ましい。システム・ドライブの拡張に使うのではなく、ユーザー独自のデータ領域(ユーザーが自分自身で作成したデータ保存用領域など)を拡大するために利用するのがよいだろう。

mountvol.exeコマンドでボリュームをマウントする

 mountvol.exeというコマンドを利用すると、コマンド・プロンプト上からボリュームをマウント/アンマウントできる。

 このコマンドを使ってボリュームをマウントするには、まず単に「mountvol」を実行して、ボリューム名を取得する。

C:\Data>mountvol …引数なしでまず実行する
ボリューム マウント ポイントを作成、削除、一覧を表示します。 …ヘルプが表示される

MOUNTVOL [drive:]path ボリューム名
MOUNTVOL [drive:]path /D
MOUNTVOL [drive:]path /L

    パス        マウント ポイントを常駐させる既存の NTFS ディレクトリ
                を指定します
    ボリューム名
                マウント ポイントのターゲットとなるボリューム名を指定しま
                す。
    /D          指定されたディレクトリからボリューム マウント ポイント
                を削除します。
    /L          指定されたディレクトリのマウントされているボリューム
                の一覧を表示します。

現在のマウント ポイントとボリューム名の考えられる値:
…以下の「\\?\Volume{....}\」がボリューム名の一覧。これをコピーして使用すること
    \\?\Volume{cb2d5180-efea-11d9-b551-806d6172696f}\
        C:\

    \\?\Volume{cc829452-69cd-11dc-b554-0003ff31f200}\
        E:\

    \\?\Volume{cc829451-69cd-11dc-b554-0003ff31f200}\
        F:\

    \\?\Volume{7e9c2d31-f023-11d9-ab38-806d6172696f}\
        D:\

    \\?\Volume{7e9c2d30-f023-11d9-ab38-806d6172696f}\
        A:\


C:\Data>

 この最後に表示されている「\\?\Volume{....}\」が「ボリューム名」(ボリュームの内部名)である(「mountvol e:\ /l」などとしても確認可能)。ボリュームをマウントするためにはこのボリューム名を利用して、次のように指定する。

mountvol <マウント先のパス> <ボリューム名>

 実際に実行すると、次のようになる。

C:\Data>mountvol C:\Data\Data1 \\?\Volume{cc829452-69cd-11dc-b554-0003ff31f200}\

C:\Data>mountvol C:\Data\Data2 \\?\Volume{cc829451-69cd-11dc-b554-0003ff31f200}\

C:\Data>

マウントの解除

 マウントを解除(アウンマウント)するには、ディスクの管理ツールでボリュームに割り当てられたパスを削除するか、「mountvol <マウントしたパス> /d」のようにすればよい。

C:\Data>mountvol C:\Data\Data1 /d …E:\ボリュームのマウント解除

C:\Data>mountvol C:\Data\Data2 /d …F:\ボリュームのマウント解除

C:\Data>

 なお、「rd \data\data1」のように、マウントしたフォルダ(ジャンクション・ポイント)のフォルダを削除してもよいが(delではない。「del \data\data1」とすると、data1フォルダの中身が削除されてしまう ので注意)、こうすると、マウントが解除されるだけでなくフォルダそのものも削除されてしまうので、注意すべきだ。

Windows Vista/Windows Server 2008のmklinkコマンドでボリュームやフォルダをマウントする

 Windows Vista/Windows Server 2008にはmklinkというコマンド(コマンド・プロンプトの内部コマンド)が用意されている。これはジャンクションだけでなく、ハードリンクやシンボリック・リンクも作成できる、より拡張されたコマンドである(シンボリック・リンクはこれらのOS上でのみ利用可能。シンボリック・リンクの作成方法についてはTIPS「Windows Vista/Windows Server 2008でシンボリック・リンクを作成する」参照)。

 「mklink /j <マウント先のパス> <ボリューム名>」とすると、mountvolと同様に、ボリュームをマウントできる(<ボリューム名>はmountvolコマンドで調べておく)。End of Article

更新履歴
【2013/01/31】 mklinkコマンドのことを「mklink.exe」すなわち外部コマンドとして表記していましたが、mklinkはコマンド・プロンプトの内部コマンドでした。そこで「mklink.exe」を「mklink」に修正し、内部コマンドであることを追記しました。以上、お詫びして訂正いたします。
【2008/02/22】 Windows Vista/Windows Server 2008のmklinkコマンドに関する記述を追加しました。

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間