分割仮想ディスクを結合する(by vmware-vdiskmanager)

CentOS 5.2 on VMware Server - 常水商会::よしなしごと
手に入れた環境が分割仮想ディスクだったので結合を試みました。

  • VMware Server 1.0.8に付属のツール『VMware Virtual Disk Manager(vmware-vdiskmanager.exe)』(build 126538)を使用。
  • 以下、特に記載ない場合はツールを引数なしで実行した際に表示されるヘルプから引用しました(日本語記載の箇所は拙訳)。
  • また、結合以外の機能は試していないのでご利用は慎重に。

参考ページ:@IT:複数のVMware仮想ディスクを1つに統合するには

ツールのありか

(VMwareサーバがインストールされているパス)\VMware Server\vmware-vdiskmanager.exe

説明

Offline disk manipulation utility
オフラインのディスク操作ユーティリティ

書式

$> vmware-vdiskmanager.exe OPTIONS diskName | drive-letter:

オプション

日本語で記載のオプションが今回使用したオプションです。

-c                   : ディスク作成; need to specify other create options
-d                   : defragment the specified virtual disk
-k                   : shrink the specified virtual disk
-n <source-disk>     : rename the specified virtual disk; need to specify destination disk-name
-p                   : prepare the mounted virtual disk specified by the drive-letter for shrinking
-q                   : do not log messages
-r <source-disk>     : 特定の仮想ディスクに変換; need to specify destination disk-type
-x <new-capacity>    : expand the disk to the specified capacity

さらに仮想ディスク作成&変換に関する追加のオプションとして以下があります。

-a <adapter>      : (for use with -c only) adapter type (ide, buslogic or lsilogic)
-s <size>         : capacity of the virtual disk
-t <disk-type>    : ディスクタイプID
ディスクタイプID
0                 : 単一拡張可能(事前割当なし)な仮想ディスク
1                 : growable virtual disk split in 2Gb files
2                 : preallocated virtual disk
3                 : preallocated virtual disk split in 2Gb files
使用例
  • インターフェースがIDEで850MByteの事前割当なし仮想ディスクを作成する
$> vmware-vdiskmanager.exe -c -s 850Mb -a ide -t 0 myIdeDisk.vmdk
  • 特定の仮想ディスク(myDisk.vmdk)をデフラグする※shrinkしないと仮想ディスクのファイルサイズは小さくなりません
$> vmware-vdiskmanager.exe -d myDisk.vmdk
  • 特定の仮想ディスク(sourceDisk.vmdk)を事前割当なし拡張可能な仮想ディスクに変換する※今回のはこれ
$> vmware-vdiskmanager.exe -r sourceDisk.vmdk -t 0 destinationDisk.vmdk
  • 仮想ディスクの容量を36Gbに拡張する
$> vmware-vdiskmanager.exe -x 36Gb myDisk.vmdk
  • 仮想ディスクの名前を変更する
$> vmware-vdiskmanager.exe -n sourceName.vmdk destinationName.vmdk
  • 仮想ディスクをshrinkする。※データが入っていない領域を0クリアするので仮想ディスクのサイズが小さくなる
$> vmware-vdiskmanager.exe -k myDisk.vmdk
  • 仮想ディスクをshrinkのために特定のドライブレター(m)でマウントする
$> vmware-vdiskmanager.exe -p m

自分の分割仮想ディスクでの実行例

分割仮想ディスク一式
1,956,904,960 centos-5.2-i386-server-s001.vmdk
1,498,349,568 centos-5.2-i386-server-s002.vmdk
  928,710,656 centos-5.2-i386-server-s003.vmdk
1,784,086,528 centos-5.2-i386-server-s004.vmdk
       65,536 centos-5.2-i386-server-s005.vmdk
          580 centos-5.2-i386-server.vmdk ※分割仮想ディスク001〜005の記述が書いてあるテキストファイル。vmxはこのファイルを参照。
        1,192 centos-5.2-i386-server.vmx
実行結果
  • centos-5.2-i386-server.vmdk:結合前の仮想ディスク(の元締めテキストファイル)
  • centos-5.2-i386-server_new.vmdk:結合後の仮想ディスク(バイナリファイル)
$> vmware-vdiskmanager.exe -r centos-5.2-i386-server.vmdk -t 0 centos-5.2-i386-server_new.vmdk

Using log file C:\DOCUME~1\xxx\LOCALS~1\Temp\vmware-xxx\vdiskmanager.log
Creating a monolithic growable disk 'centos-5.2-i386-server_new.vmdk'
  Convert: 100% done.
Virtual disk conversion successful.

十数分程度時間がかかります。

生成物
6,155,010,048 centos-5.2-i386-server_new.vmdk

001〜005までの分割ディスクのサイズ合計値は6,168,117,248。

動作確認

新しく作成したフォルダに、生成物 centos-5.2-i386-server_new.vmdk と vmxファイルを放り込んで起動(vmdkファイルはvmxで指定しなおすなりリネームするなりお好きに)。動作確認。


ところで、結合すると何かいいことあるんだっけ?