とっしぃのTech Memo

PHPとかサーバとか他色々言語のメモ的な。あとはたまにガジェットとか。

KVMでVMにHDD追加

たまーにやるけどやる度に調べてるようなことってホント無駄ですよね。

というわけでメモ。


KVMでVMのHDD容量増やす方法はいくつかあって、
例えば

  • HDD自体を拡張
  • HDDを追加してLVMで一つにまとめる

辺りでしょうか。

一つ目のはfdiskでパーティションやらなんやらがめんどそうなので
いつも二つ目の方法でやってます。


が、そんなに頻度が高いわけでもなく、普段使わないコマンドばかりなので
すぐに忘れちゃうんですよね(´・ω・`)

HDDイメージの作成

まずは追加するHDDイメージを作成します。

# qemu-img create -f qcow2 /var/lib/libvirt/images/extend.qcow2 150G

VM定義ファイルにHDDイメージを定義

/etc/libvirt/qumu/以下辺りにあるXMLファイルに記述

 <devices>
     <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/var/lib/libvirt/images/vm.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    /* 以下を追加 */
     <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/var/lib/libvirt/images/extend.qcow2'/>
      <target dev='vdb' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
   /* ココマデ */

VMを再定義して起動

# virsh define /etc/libvirt/qemu/vm.xml
# virsh start vm
# virsh console vm

ここで再定義できない、起動できない場合は、上記の定義ファイルで

  • target dev=の値が被っている
  • address ~ slot=の値が被ってる

辺りがアヤシイですかね。

LVMでPV(物理ボリュームを作成)

# pvcreate /dev/vdb

ボリュームグループ vg00 に追加

# vgextend vg00 /dev/vdb

論理ボリュームを拡張 (MBで指定)

# lvextend -l +100%FREE /dev/mapper/vg00-lv00

以下でもいいらしいんですができたことないのでなんとも。

# lvextend -L +150000M -n /dev/mapper/vg00-lv00

リサイズ

# resize2fs /dev/mapper/vg00-lv00

確認

# df -h

ここで増えてたらOKです。