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

仮想ディスクをコマンドラインから拡大/縮小する

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

デジタルアドバンテージ 打越 浩幸
2010/02/19
対象OS
Windows 7
Windows Server 2008 R2
diskpartコマンドを使えば、コマンドラインから仮想ディスクを操作できる。
仮想ディスクのサイズを拡大するにはexpandコマンドを使う。
仮想ディスク中のボリューム・サイズを拡大/縮小するには、マウントしてからextendやshrinkコマンドを使う。

解説

 Windows 7/Windows Server 2008 R2ではdiskpartコマンドの機能が拡張され、仮想ディスク・ファイル(.VHDファイル)を操作する機能が追加されている。これを使って、仮想ディスク・ファイルを作成/マウント/アンマウントする方法はTIPS「仮想ディスクをコマンドラインから作成・管理する」で紹介した。本TIPSでは、仮想ディスク・サイズを拡大/縮小する方法についてまとめておく。

操作方法

仮想ディスクの選択と内容の調査

 diskpartコマンドを使って仮想ディスクを操作する場合、最初に行うことは操作対象の仮想ディスクの選択(Select)と内容の調査である。

C:\>diskpart …コマンドの起動

Microsoft DiskPart バージョン 6.1.7600
Copyright (C) 1999-2008 Microsoft Corporation.
コンピューター: SV2008R2-XPC006

DISKPART> select vdisk file="c:\vpc\sample.vhd" …ファイルの選択

DiskPart により、仮想ディスク ファイルが選択されました。

DISKPART> detail vdisk …ファイルの詳細の調査

デバイスの種類 ID: 2 (VHD)
ベンダー ID: {EC984AEC-A0F9-47E9-901F-71415A66345B} (Microsoft Corporation)
状態: 追加済み
仮想サイズ: 8000 MB …仮想ディスクの論理的なサイズ
物理サイズ:  710 MB …仮想ディスク・ファイルの物理的なサイズ
ファイル名: c:\vpc\sample.vhd
子: いいえ
親ファイル名:
関連付けられたディスク番号: 見つかりません。

DISKPART>

仮想ディスク・サイズの拡大

 仮想ディスクの論理的なサイズを拡大するにはexpandコマンドを利用する。例えば8Gbytesの仮想ディスクを32Gbytesに拡大するといった用途に利用する。TIPS「ディスクのボリューム・サイズを拡張する」で紹介したextendコマンドと似ているが、extendではディスク中にある割り当て済みのボリューム・サイズを拡大するのに対し、expandは仮想ディスクそのものの論理的なサイズを拡大する。ディスクの中にあるパーティションやボリュームのサイズはそのままである。なお、仮想ディスク・ファイルのサイズは、固定サイズの仮想ディスクの場合はその分だけ大きくなるので、ディスクの空き領域サイズに注意していただきたい(容量可変や差分の場合は、総ブロック数が増えるので、そのための管理用に少しだけ増加する)。空き領域が不足する場合はエラーとなって、拡大できない。

DISKPART> expand vdisk maximum=32768 …32Gbytesへの拡大

  100% 完了しました

DiskPart により、仮想ディスク ファイルは正常に拡張されました。

DISKPART> detail vdisk …サイズの確認

デバイスの種類 ID: 2 (VHD)
ベンダー ID: {EC984AEC-A0F9-47E9-901F-71415A66345B} (Microsoft Corporation)
状態: 追加済み
仮想サイズ:   32 GB …32Gbytesに拡大されている
物理サイズ:  712 MB
ファイル名: c:\vpc\sample.vhd
子: いいえ
親ファイル名:
関連付けられたディスク番号: 見つかりません。

DISKPART>

仮想ディスクの最適化(コンパクト化)

 可変長サイズの仮想ディスクの中を走査して、未使用のブロック(内容がすべて0のデータばかりのブロック)を仮想ディスク・ファイルから外すことを「コンパクト化(最適化)」という。これを行うのがcompactコマンドである。TIPS「仮想ハードディスクを圧縮する(Virtual PC 2004編)」や「仮想ハードディスクを圧縮する(Virtual Server 2005 R2編)」における、最終段階の圧縮ツールの機能に相当する。未使用領域への0データの書き込みなどは行われないので、必要なら、あらかじめ仮想環境にマウントして、「事前圧縮ツール」などで0データを書き込んでおく必要がある。除去された0データ・ブロックの分だけ、仮想ディスク・ファイルは小さくなる。なお、容量固定の仮想ディスク・ファイルの場合はこのコマンドはエラーとなる。

DISKPART> compact vdisk …引数は何もない

  100% 完了しました

DiskPart により、仮想ディスク ファイルは正常に圧縮されました。

DISKPART>

ボリュームの拡大

 これはTIPS「ディスクのボリューム・サイズを拡張する」でも紹介しているボリュームの拡大方法である。ドライブとしてマウントしてから操作する。

DISKPART> attach vdisk …ドライブとしてマウントする

  100% 完了しました

DiskPart により、仮想ディスク ファイルがアタッチされました。

DISKPART> list vol …現在の状態の確認

  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
  ----------  --- -----------  ----  ----------  -------  ---------  --------
  Volume 0    F                      DVD-ROM         0 B  メディアなし
  Volume 1        システムで予約済み    NTFS  Partition    100 MB  正常       システム
  Volume 2    D   WINDOWS7X64  NTFS  Partition    146 GB  正常
  Volume 3    E   WINDOWS7X86  NTFS  Partition    146 GB  正常
  Volume 4    C   SERVER2008R  NTFS  Partition   1104 GB  正常       ブート
  Volume 5    G                NTFS  Partition   7985 MB  正常 …←このボリュームを拡大する

DISKPART> select volume 5 …ボリュームの選択

ボリューム 5 が選択されました。

DISKPART> extend …拡大させる

DiskPart はボリュームを正常に拡張しました。

DISKPART> list vol …拡大後の確認

  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
  ----------  --- -----------  ----  ----------  -------  ---------  --------
  Volume 0    F                      DVD-ROM         0 B  メディアなし
  Volume 1        システムで予約済み    NTFS  Partition    100 MB  正常       システム
  Volume 2    D   WINDOWS7X64  NTFS  Partition    146 GB  正常
  Volume 3    E   WINDOWS7X86  NTFS  Partition    146 GB  正常
  Volume 4    C   SERVER2008R  NTFS  Partition   1104 GB  正常       ブート
* Volume 5    G                NTFS  Partition     31 GB  正常 …拡大後

DISKPART>

ボリュームの縮小

 ボリューム・サイズを縮小するにはshrinkコマンドを使う。ボリュームの最後の方から前へ走査し、連続する未使用領域のところだけを解放して、ボリューム・サイズを縮小する。使用済み領域が存在すると、それ以上は縮小できない。いくら縮小できるかは、shrink querymaxコマンドで確認できる。End of Article

DISKPART> list vol …現在の状態の確認

  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
  ----------  --- -----------  ----  ----------  -------  ---------  --------
  Volume 0    F                      DVD-ROM         0 B  メディアなし
  Volume 1        システムで予約済み    NTFS  Partition    100 MB  正常       システム
  Volume 2    D   WINDOWS7X64  NTFS  Partition    146 GB  正常
  Volume 3    E   WINDOWS7X86  NTFS  Partition    146 GB  正常
  Volume 4    C   SERVER2008R  NTFS  Partition   1104 GB  正常       ブート
* Volume 5    G                NTFS  Partition     31 GB  正常 …縮小前

DISKPART> shrink querymax …縮小可能な最大サイズの確認

再利用できる最大のバイト数は次のとおりです。   28 GB (29416 MB) …ここまで縮小できる

DISKPART> shrink desired=20000 …20Gbytes縮小してみる

ボリュームは、次の方法で正常に縮小されました:   19 GB

DISKPART> list vol …結果の確認

  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
  ----------  --- -----------  ----  ----------  -------  ---------  --------
  Volume 0    F                      DVD-ROM         0 B  メディアなし
  Volume 1        システムで予約済み    NTFS  Partition    100 MB  正常       システム
  Volume 2    D   WINDOWS7X64  NTFS  Partition    146 GB  正常
  Volume 3    E   WINDOWS7X86  NTFS  Partition    146 GB  正常
  Volume 4    C   SERVER2008R  NTFS  Partition   1104 GB  正常       ブート
* Volume 5    G                NTFS  Partition     12 GB  正常 …縮小後

DISKPART>

「Windows TIPS」


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

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間