KVM で仮想マシンのディスクサイズを変更する方法

KVM 仮想ディスクのサイズ変更は、綱渡りのように感じることがあります。注意しないと落とし穴が多すぎます。主な問題は、qemu-img resizeディスクを小さくするなどのコマンドを単に実行すると、VM が起動しなくなったり、データが破損したりする可能性があることです。特に Linux はディスクの縮小をうまく処理できないため、システム パーティションやスナップショットを扱う場合はなおさら面倒です。そのため、縮小が必要な場合は、新しいディスク イメージを作成してデータを移行する方が安全です。念のため、これを強力なバックアップと考えてください。確かに、これは必要なものだけを慎重にコピーし、ディスク イメージを交換することを意味しますが、経験豊富なユーザーが苦労して学んだように、それでも完璧ではありません。ほとんどの場合、少なくとも十分な準備なしにディスク サイズを軽々しく縮小することはお勧めできません。

QEMUとKVMでは、当然ながらディスクサイズを大きくすることを推奨しています。容量の追加は簡単です。一方、縮小はどうでしょうか?これはまた別の話で、適切に行わないと悲惨な結果を招く可能性があります。そのため、容量確保が目的であれば、ディスクを圧縮されたQCOW2形式に変換するか、少なくともゲストOS内のファイルシステムをまず縮小してから、イメージを置き換えるか変換することを検討してください。ただし、ディスクサイズを小さくすることは、「ただ微調整する」だけでは済まない作業です。新しいイメージを作成し、データを移行し、その後VMが正常に起動するかどうかをテストする必要があります。つまり、慎重に行うことが重要です。起動しないデスブートイメージ、あるいは最悪の場合、貴重なデータを失うような事態は避けたいものです。

KVM ディスクのサイズ設定の問題を解決する方法と代替手段

方法1:新しい小さなディスクイメージを作成し、データを移行する

これはより安全な方法です。基本的にはバックアップと再構築です。ディスクサイズが小さい新しいVMを作成し、古いディスクから新しいVMにデータをクローンし、すべてがスムーズに起動して動作することを確認します。その後、ディスクを交換すれば準備完了です。最速ではありませんが、最も信頼性が高い方法です。

方法2: QCOW2ディスクファイルを変換して圧縮する

QCOW2形式のディスクをお持ちの場合は、VM内の未使用領域をゼロクリア(ゼロで埋めてから削除するなど)してから、イメージをより最適化されたQCOW2形式に変換するという方法があります。これによりファイルサイズが効果的に削減されます。inside dd if=/dev/zerothe VMなどのコマンドに続けて、qemu-img convert-O qcow2を指定すると、驚くほどの効果が得られます。ただし、ゲストOS内のパーティションをまず縮小することが重要であり、変換前に必ず行う必要がある場合が多いので注意してください。

もう一つ、お伝えしておくべきヒントがあります。バックアップです!ディスクマジックを行う前に、必ず.qcow2またはrawイメージを安全な場所にコピーしてください。正直なところ、経験豊富な人でも問題に遭遇するものです。ゴーストデータを追いかけたり、起動しないVMを修復しようとするよりも、バックアップからの復元の方がずっと良いのです。