21.8. virt-resize: オフラインのゲスト仮想マシンのサイズ変更

このセクションでは、オフラインのゲスト仮想マシンのサイズ変更についての情報を提供します。

21.8.1. はじめに

このセクションでは、ゲスト仮想マシンのサイズを拡張したり縮小したりするツール virt-resize について説明します。このツールはオフラインの (シャットダウンされている) ゲスト仮想マシンの場合にのみ動作します。ゲスト仮想マシンのイメージをコピーしてオリジナルのディスクイメージはそのまま残します。これは、オリジナルのイメージをバックアップとして使用できるために理想的なツールとなりますが、ディスク領域の 2 倍の容量が必要になります。

21.8.2. ディスクイメージの拡張

このセクションでは、ディスクイメージの簡単な拡張方法について説明します。
  1. サイズ変更するディスクイメージの場所を確認します。libvirt ゲスト仮想マシンの場合は virsh dumpxml GuestName コマンドを使用できます。
  2. ゲスト仮想マシンを拡張する方法を決定します。以下の出力にあるように、ゲスト仮想マシンのディスクで virt-df -hvirt-filesystems を実行します。
    # virt-df -h -a /dev/vg_guests/RHEL6
    Filesystem                      Size       Used  Available  Use%
    RHEL6:/dev/sda1                98.7M      10.0M      83.6M   11%
    RHEL6:/dev/VolGroup00/LogVol00  6.8G       2.2G       4.3G   32%
    
    # virt-filesystems -a disk.img --all --long -h
    /dev/sda1 ext3 101.9M
    /dev/sda2 pv 7.9G
以下で、使用方法を説明します。
  • 1 番目の (boot) パーティションを約 100MB から 500MB に拡大する
  • ディスクの合計サイズを 8GB から 16GB に拡大する
  • 2 番目のパーティションを拡大して残りの領域すべてを埋める
  • /dev/VolGroup00/LogVol00 を拡大して 2 番目のパーティションの新規領域を埋める
  1. ゲスト仮想マシンがシャットダウンしていることを確認します。
  2. バックアップとして元のディスクの名前を変更します。名前の変更方法については、元のディスクのホスト物理マシンのストレージ環境によって異なります。ファイルとして格納されている場合は mv コマンドを使用します。論理ボリュームの場合は (例で示すように) lvrename を使用します。
    # lvrename /dev/vg_guests/RHEL6 /dev/vg_guests/RHEL6.backup
  3. 新規ディスクを作成します。この例では、合計ディスクサイズを 16GB に拡大することが要件になっています。ここでは論理ボリュームを使用しているので、以下のコマンドが使用されます。
    # lvcreate -L 16G -n RHEL6 /dev/vg_guests
    Logical volume "RHEL6" created
  4. 上記の要件をコマンドで表すと以下のようになります。
    # virt-resize \
           /dev/vg_guests/RHEL6.backup /dev/vg_guests/RHEL6 \
           --resize /dev/sda1=500M \
           --expand /dev/sda2 \
           --LV-expand /dev/VolGroup00/LogVol00
    1 番目と 2 番目の引数は入力ディスクと出力ディスクになります。--resize /dev/sda1=500M は 1 番目のパーティションを 500MB にサイズ変更します。--expand /dev/sda2 は 2 番目のパーティションを拡大し、残りの領域すべてを埋めます。--LV-expand /dev/VolGroup00/LogVol00 はゲスト仮想マシンの論理ボリュームを拡張し、2 番目のパーティションの追加領域を埋めます。
    virt-resize は、その出力に実行内容を表示します。
    Summary of changes:
       /dev/sda1: partition will be resized from 101.9M to 500.0M
       /dev/sda1: content will be expanded using the 'resize2fs' method
       /dev/sda2: partition will be resized from 7.9G to 15.5G
       /dev/sda2: content will be expanded using the 'pvresize' method
       /dev/VolGroup00/LogVol00: LV will be expanded to maximum size
       /dev/VolGroup00/LogVol00: content will be expanded using the 'resize2fs' method
       Copying /dev/sda1 ...
       [#####################################################]
       Copying /dev/sda2 ...
       [#####################################################]
       Expanding /dev/sda1 using the 'resize2fs' method
       Expanding /dev/sda2 using the 'pvresize' method
       Expanding /dev/VolGroup00/LogVol00 using the 'resize2fs' method
  5. 仮想マシンを起動してみます。正しく起動したら (全体を十分に確認した後)、バックアップのディスクを削除します。起動に失敗してしまう場合は、仮想マシンをシャットダウンして新しいディスクを削除し、バックアップのディスク名を元の名前に戻します。
  6. 変更後のサイズを表示するには、virt-df または virt-filesystems を使用します。
    # virt-df -h -a /dev/vg_pin/RHEL6
       Filesystem                      Size       Used  Available  Use%
       RHEL6:/dev/sda1               484.4M      10.8M     448.6M    3%
       RHEL6:/dev/VolGroup00/LogVol00 14.3G       2.2G      11.4G   16%
ゲスト仮想マシンのサイズ変更は精密に実行されない場合があるため、virt-resize が失敗する場合は virt-resize(1) の man ページにある数多くのヒントを参考にしてください。旧バージョンの Red Hat Enterprise Linux ゲスト仮想マシンなどの場合には、GRUB に関するヒントにとくに注意する必要があるかもしれません。