QEMUの仮想マシンのディスク領域を拡大する

はじめに

開発環境の一部を仮想マシンの Linux デスクトップで運用しています。Virt Manager で GUI で管理しているもので、中身は QEMU の VM イメージです。使っているうちに最初に確保したディスクサイズでは足りなくなってきたので拡大しました。

仮想マシンのディスク領域拡大

最初に仮想マシンを作って OS をインストールするときに LVM にしていたなら、後から仮想ディスクを追加して LVM ボリュームに追加するだけで良かったのですが、この仮想マシンは LVM にはしていませんでした。

そこで、仮想ディスクのまま拡大する方法を調べたところ、libvirt には便利なツールが揃っていて、思っていたよりも簡単にディスク領域を拡大できることが分かりました。ある意味、仮想ディスク追加→LVMボリュームに追加→resize2fsの手順よりも簡単です。

手順の概要は以下の通りです。

  1. 新しいサイズの仮想ディスクを作成
  2. virt-resizeコマンドで元の仮想ディスクの内容を新しい仮想ディスクへコピー

qemu-img resize してから仮想ディスクを仮にマウントして resize2fs する方法もありますが、virt-resize コマンドを使う方が簡単です。

まず対象仮想ディスクのパーティション構成を確認します。全体として20GBのディスクで、ルートパーティションが12GBであることが分かります。

# virt-filesystems --long --parts --blkdevs -h -a debian10.qcow2
Name       Type       MBR  Size  Parent
/dev/sda1  partition  83   12G   /dev/sda
/dev/sda2  partition  05   1.0K  /dev/sda
/dev/sda5  partition  82   8.0G  /dev/sda
/dev/sda   device     -    20G   -

新しく40GBの仮想ディスクを作成します。

# qemu-img create -f qcow2 -o preallocation=metadata debian10.20230425.qcow2 40G

元のディスクの内容を、新しいディスクにコピーします。この際に、拡張するパーティションとしてルートパーティションを指定します。

virt-resize --expand /dev/sda1 debian10.qcow2 debian10.20230425.qcow2

コピーが完了したら、新しい仮想ディスクのパーティション構成を確認します。
全体として40GB、ルートパーティションが32GBに増えたことが分かります。

# virt-filesystems --long --parts --blkdevs -h -a debian10.20230425.qcow2
Name       Type       MBR  Size  Parent
/dev/sda1  partition  83   32G   /dev/sda
/dev/sda2  partition  05   1.0K  /dev/sda
/dev/sda5  partition  82   8.0G  /dev/sda
/dev/sda   device     -    40G   -

最後にファイル名を付け直して Virt Manager から起動すれば、ディスクサイズが拡大された状態で仮想マシンを起動できます。

# mv debian10.qcow2 debian10.qcow2.bak
# mv debian10.20230425.qcow2 debian10.qcow2
Related Post