hnakamur’s blog

ものすごい勢いで忘れる私のために未整理でもいいからとりあえずメモ

2010-12-16

LVMを使用しているKVMのゲストのディスクイメージ拡張

参考:
あやの日常あるいは平穏な日々: 【CI鯖】LVM拡張を試みる
CentOS で LVM 物理/論理ボリュームサイズを縮小する - maruko2 Note.
2010-12-29追記:こちら↑を参考にスワップパーティションは一旦削除してから拡張してその後スワップパーティションを作り直すほうがよいです。そうしない場合system-config-lvmで見るとLogVol00の物理領域がLogVol01を挟んで2つに分かれてしまいました。

イメージファイルの拡張


まずイメージファイルのフォーマットを確認します。
# qemu-img info /var/lib/libvirt/images/vm1.img
実行結果はこんな感じ。
image: /var/lib/libvirt/images/vm1.img
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 7.5G
もしfile format: rawとなっていなければ、qemu-img convertでrawに変換します。

10Gに6G追加する場合は以下のようにします。イメージファイルのバックアップをとった上で、ddのseekを使って末尾に6Gの領域を追加します。
# cd /var/lib/libvirt/images
# cp vm1.img vm1.img.bak
# dd if=/dev/zero of=vm1.img bs=1G count=6 seek=10


# cd /var/lib/libvirt/images
# mv vm1.img vm1.img.bak
# dd if=/dev/zero of=zero6G.img bs=1G count=6
# cat vm1.img.bak zero6G.img > vm1.img



hnakamur’s blog: KVMのゲストのHDDをマウントしてLive CDからブートの手順でLive CDからブートします。

テキストモード「Boot (text mode)」を選択し、ログインプロンプトが出たらrootでパスワード無しでログインします。

fdisk /dev/hda
Linux LVMのパーティションを一旦削除して、サイズを拡大して作り直し、パーティションタイプをLinux LVM(8e)にします。
/dev/hda2がLinux LVMの場合は、p、d、2、n、p、2、Enter、Enter、t、2、8e、w、qとなります。

再起動します。
# reboot

物理ボリュームの拡張


テキストモード「Boot (text mode)」を選択し、ログインプロンプトが出たらrootでパスワード無しでログインします。

現在の物理ボリュームの状態を確認します。
# pvs

/dev/hda2を拡張します。
# pvresize /dev/hda2

変更後の物理ボリュームの状態を確認します。
# pvs

論理ボリュームの拡張


ここではVolGroup00/LogVol00を拡張します。私の環境ではこれがルートパーティションになっています。

現在の論理ボリュームの状態を確認します。
# lvs

論理ボリュームを拡張します。
# lvextend -L+6G /dev/VolGroup00/LogVol00

変更後の論理ボリュームの状態を確認します。
# lvs

ファイルシステムの拡張


マウント解除。
# umount /dev/VolGroup00/LogVol00

ファイルシステムチェック。
# e2fsck -f /dev/VolGroup00/LogVol00

ファイルシステムのリサイズ。
# resize2fs /dev/VolGroup00/LogVol00

Live CDをシャットダウン

# shutdown -h now

KVMのゲストのHDDをマウントしてLive CDからブート

Live CDの入手と配備

CentOS-5.5-x86_64-LiveCD.isoをCentOSミラーサイトからダウンロードして/var/lib/libvirt/images/に置きます(場所はどこでも可)。

KVMでゲストを起動

libvirtで起動しようと試みましたが失敗(後述)したので、qemu-kvmコマンドで起動します。
/usr/libexec/qemu-kvm -m 1024 -smp 1 -boot d \
-drive file=/var/lib/libvirt/images/vm1.img,if=ide \
-cdrom /var/lib/libvirt/images/CentOS-5.5-x86_64-LiveCD.iso \
-vnc localhost:1

この後UltraVNCなどのvncviewerで接続します。

(失敗メモ) libvirtでCD-ROMからブートを試みるも失敗


/etc/libvirt/qemu/vm1.xmlを以下のように書き換えます。
<domain type='kvm'>
  <name>ora1</name>
  <uuid>97f129e6-9b87-9998-0247-d573d774be81</uuid>
  <memory>2097152</memory>
  <currentMemory>2097152</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='rhel5.4.0'>hvm</type>
    <boot dev='cdrom'/>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' cache='none'/>
      <source file='/var/lib/libvirt/images/vm1.img'/>
      <target dev='hda' bus='ide'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu'/>
      <source file='/var/lib/libvirt/images/CentOS-5.5-x86_64-LiveCD.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
    </disk>
    <interface type='network'>
      <mac address='54:52:00:54:37:df'/>
      <source network='default'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target port='0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5901' autoport='no'/>
  </devices>
</domain>
変更内容は
<boot dev='cdrom'/>

<disk type='file' device='cdrom'>
      <driver name='qemu'/>
      <source file='/var/lib/libvirt/images/CentOS-5.5-x86_64-LiveCD.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
    </disk>
の追加です。


上記の定義を反映。
# virsh define /etc/libvirt/qemu/vm1.xml

起動してコンソールに接続
# virsh start vm1; virsh console vm1

gparted-live-0.7.1-1.isoもダウンロードして/var/lib/libvirt/images/に配置し、
<source file='/var/lib/libvirt/images/CentOS-5.5-x86_64-LiveCD.iso'/>

<source file='/var/lib/libvirt/images/gparted-live-0.7.1-1.iso'/>
に変えてみても同じでした。

おそらくCentOS-5.5-x86_64-LiveCD.isoとgparted-live-0.7.1-1.isoはシリアルコンソールで繋がるように作られていないということなのかと思います。

ブログ アーカイブ