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

このセクションでは、ディスクイメージの簡単な拡張方法について説明します。
  1. サイズ変更するディスクイメージの場所を確認します。libvirt ゲスト仮想マシンなら virsh dumpxml GuestName コマンドを使用できます。
  2. ゲスト仮想マシンをどのように拡張するか決定します。以下の出力にあるように、ゲスト仮想マシンのディスクで virt-df -hvirt-list-partitions -lh を実行します。
    # virt-df -h /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-list-partitions -lh /dev/vg_guests/RHEL6
    /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-list-partitions のいずれかまたは両方を使用します。
    # virt-df -h /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 に関するヒントにとくに注目する必要があるかもしれません。