QEMUの仮想マシンのディスク領域を拡大する
はじめに
開発環境の一部を仮想マシンの Linux デスクトップで運用しています。Virt Manager で GUI で管理しているもので、中身は QEMU の VM イメージです。使っているうちに最初に確保したディスクサイズでは足りなくなってきたので拡大しました。
仮想マシンのディスク領域拡大
最初に仮想マシンを作って OS をインストールするときに LVM にしていたなら、後から仮想ディスクを追加して LVM ボリュームに追加するだけで良かったのですが、この仮想マシンは LVM にはしていませんでした。
そこで、仮想ディスクのまま拡大する方法を調べたところ、libvirt には便利なツールが揃っていて、思っていたよりも簡単にディスク領域を拡大できることが分かりました。ある意味、仮想ディスク追加→LVMボリュームに追加→resize2fsの手順よりも簡単です。
手順の概要は以下の通りです。
- 新しいサイズの仮想ディスクを作成
- 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