Windowsでディスクのボリュームサイズを縮小するTech TIPS

Windows Vistaにはボリュームサイズの縮小機能が用意されている。あらかじめボリュームの末尾に連続した空き領域を確保しておいてからコマンドを実行すると、その空き領域部分がボリュームから切り離されて未割り当て領域となるので、そこに新しくボリュームを作成する。

» 2007年10月12日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
Tech TIPS
Windows Server Insider


「Tech TIPS」のインデックス

連載目次

対象OS:Windows Vista



解説

 TIPS「ディスクのボリュームサイズを拡張する」では、NTFSボリュームのサイズを拡大する方法を紹介したが、これとは逆に、ボリュームサイズを縮小させたいこともある。例えば1台のディスク(もしくはパーティション)上に1つのボリュームしか存在しないが、これを分割して新しくデータ用ボリュームを作成したい場合や、Windows Vista(やWindows Server 2008)のBitLocker暗号化機能用に、別パーティションを用意したい場合などだ(BitLockerでは、2つのボリュームが必要となる)。

 新しいボリュームを作成するには、既存のボリュームサイズを縮小してパーティション上に空き領域を作成する必要があるが(空き領域の中に、新たにパーティションとボリュームを作成する)、Windows OSの標準的なツールにはこの機能は用意されていない(拡大は先のTIPS参照)。

 しかしWindows Vista(およびWindows Server 2008)には既存ボリューム(パーティション)のサイズを縮小する機能(Shrink機能)が用意されており、サードパーティ製ツールを利用しなくても、この作業が行える。本TIPSでは、この方法について解説する(Windows XP以前のOSには用意されていないが、Windows Vistaコンピュータにディスクを接続して作業することは可能)。

 ただしボリュームのサイズを縮小するためには、ボリュームの末尾に未使用領域が存在している必要がある。ボリュームの縮小では、この部分をボリュームから解放し、空き領域を作成するからだ。可能ならばボリュームの縮小前にデフラグを行って、可能な限り末尾の空き領域を連続するように、整理しておくべきである。

操作方法

 Windows Vista(および次期サーバOSであるWindows Server 2008)において、ボリュームサイズを縮小するには、GUIベースのディスクの管理ツールを使う方法と、コマンド・プロンプト上でdiskpart.exeコマンドを利用する方法がある。

●GUIベースのディスク管理ツールで縮小する

 まずGUIベースのディスク管理ツールでボリュームサイズを縮小させる方法を紹介する。

 [スタート]メニューの[管理ツール]−[コンピュータの管理]を起動するか、[コンピュータ]アイコンを右クリックしてポップアップ・メニューから[管理]を選択する。そして起動した[コンピュータの管理]ツールの左側ペインで、[コンピュータの管理]−[記憶域]−[ディスクの管理]を選ぶ。そして縮小したいNTFSボリュームを右クリックし、ポップアップ・メニューから[ボリュームの圧縮]を選択する。なおメニュー表記では「圧縮」となっているので、ファイルやフォルダの圧縮機能(ドライブのルートに圧縮属性を付ける機能)を連想するかもしれないが、英語では「shrink(縮小する)」であり、「compress(圧縮する)」や「compact(最適化)」ではない。

ディスク管理ツールによるボリュームの圧縮 ディスク管理ツールによるボリュームの圧縮
GUIベースの管理ツールでボリュームを圧縮するには、[コンピュータの管理]ツールを利用する。
  (1)これを選択する。
  (2)このディスク(38Gbytesのディスク)上のボリュームを縮小してみる。
  (3)圧縮前の元のNTFSボリューム。ディスク全体を利用して1つのボリューム(C:ドライブ)になっている。
  (4)ボリュームを選択して、これを実行する。

 [ボリュームの圧縮]を実行すると、次のようなダイアログが表示されるので、縮小させたいサイズを設定する。

縮小するボリュームのサイズの指定 縮小するボリュームのサイズの指定
ボリュームをいくら縮小するかを指定するダイアログ。サイズ縮小後のボリュームのサイズを指定するのではなく、いくら縮小するか(既存のボリュームの末尾からいくら解放するか)を指定する。
  (1)元のボリュームサイズ。
  (2)縮小可能な最大サイズ。ボリュームの最後尾にある、連続した未使用領域のサイズ。デフラグしておくと、もっと大きくできる可能性がある。
  (3)いくら縮小するかという指定。
  (4)縮小後のボリュームサイズ。

 (1)は圧縮前のボリュームのサイズである。この例では全体で38Gbytesある。(2)は、圧縮によって縮小できるサイズ、つまり、圧縮によって解放されるボリュームの最大サイズである。この例では11Gbytesとなっている。つまり38Gbytesのボリュームサイズのうち、ボリュームの末尾に最大11Gbytesの連続空き領域が存在しているということである。実際には、この例では38Gbytesのうち15Gbytesしか使っていないので、最大で23Gbytes(=38−15Gbytes)まで解放できるはずであるが、空き領域が、ボリュームの末尾にすべて連続して存在しているわけではないので(フラグメントを起こしているので)、ここでは最大でも11Gbytesまでしか解放できない。ボリュームのデフラグを行ってから縮小すれば、もう少し解放するサイズを増やすことができる。

 (3)は、このボリュームの末尾からいくら解放するかという指定である(最小で0bytes、最大で(2)まで指定可能)。デフォルトでは解放可能な最大サイズ(=(2))となっている。(4)は、縮小後のボリュームサイズ(=(1)(3))である。

 サイズの設定後、[圧縮]ボタンをクリックすると縮小作業(ボリューム末尾の解放作業)が始まり、しばらくすると完了する。完了後は例えば次のようになる。

ボリュームサイズの圧縮後の状態 ボリュームサイズの圧縮後の状態
ボリュームサイズを圧縮すると、元からあったボリュームのサイズが縮小される。ボリュームの末尾は空き領域(未割り当て領域)になるので、ここに新しいボリュームを作成できる。
  (1)縮小後のボリューム。元よりも小さくなっている。
  (2)元のボリュームの末尾から切り離され、解放された領域。未割り当て領域となるので、右クリックして新しくボリュームを作成できる。

●diskpartコマンドによる縮小操作

 コマンド・プロンプトからボリュームサイズを変更するには、diskpart.exeコマンドを起動し、shrinkコマンドを実行する。引数を付けずにshrinkコマンドを実行すると、可能な最大サイズまで解放される。

diskpartコマンドによる縮小操作の例 diskpartコマンドによる縮小操作の例
コマンド・プロンプト上でボリュームサイズを縮小するにはdiskpartコマンドを起動し、shrinkコマンドを発行する。なお実行には管理者権限が必要である。コマンド・プロンプトでdiskpartを起動すると、UAC(ユーザー・アカウント制御)の許可ダイアログが表示されるので、[続行]をクリックして実行を許可する。もしくはこの例のように、管理者として実行したコマンド・プロンプト上で([コマンド プロンプト]を右クリックして[管理者として実行]を選択する)、diskpartを起動してもよい。
  (1)diskpartコマンドの起動。以後は、diskpartのサブコマンドを入力する。ヘルプは例えば「help shrink」などとすれば表示される。
  (2)まず縮小の対象となるボリュームの一覧を「list vol」コマンドで確認する。
  (3)ここでは37GbytesのC:ドライブのサイズを縮小させてみる。
  (4)selectコマンドで縮小対象のボリュームを指定する。
  (5)「shrink querymax」は縮小可能な最大サイズ(2つめの画面における[縮小可能な領域のサイズ])を求めるコマンド。この例では最大11Gbytesの領域をボリュームの末尾から解放し、未割り当て領域にできる。
  (6)ボリュームサイズの縮小の実行。元のボリュームサイズなどにも依存するが、数十秒から数分で終了する。
  (7)結果の確認。
  (8)37Gbytesあったボリュームが26Gbytesになっている。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。