kvm / qemuのqcow2-image-fileで未使用のスペースを解放する


23

仮想マシン用にqcow2-imagesでkvm / qemuを使用しています。

qcow2には、イメージファイルが仮想マシンによって実際に必要なスペースのみを割り当てるという素晴らしい機能があります。しかし、仮想マシンの割り当てられたスペースが小さくなった場合、どのようにイメージファイルを縮小しますか?

例:

1.)qcow2形式、サイズ100GBで新しいイメージを作成します

2.)このイメージを使用して、ubuntuをインストールします。インストールには約10 GBが必要ですが、イメージファイルは約10GBになります。これまでのところ、予期しないことはありません。

3.)画像に約40 GBの追加データを入力します。画像ファイルは最大50GBになります。私はそれで大丈夫です:-)

4.)これは奇妙なことです。画像の40GBデータをすべて削除しますが、画像サイズは50GBを消費します。

質問:その40GBのデータを解放し、必要な10GBにイメージを縮小するにはどうすればよいですか

事前に感謝、ベルニ

回答:


26

ファイルを削除しても、実際にデータを削除するわけではないため、画像は自動的に縮小しません(これがundeleteが機能する理由です)。Qemuにはqcow2イメージを縮小する機能がありますが、ユーティリティはディスクからゼロを重複排除し、他のすべての情報をそのまま残します。だから、アイデアは次のようになります:

  1. ドライブをゼロで埋めdd if=/dev/zero of=/some/fileます(スペースがなくなるまで)
  2. / some / fileを削除します
  3. VMをシャットダウンします
  4. VMのイメージが保存され実行される場所にcd qemu-img convert -O qcow2 original_image.qcow2 deduplicated_image.qcow2
  5. 新しいdeduplicated_image.qcow2を使用するようにVM設定を変更し、VMが機能していることをテストし、古いイメージを削除します

これは、afaik、qcow2イメージでのみ動作します。他の形式はテストしていません。


3
Windowsゲストがいる場合、SDelete -zを実行してすべての空き領域をゼロにします(上記のステップ1、2)
-ndemou

17

virt-sparsifyは、これをすべてあなたの手間をかけずに行うことができます:http : //libguestfs.org/virt-sparsify.1.html


2011
dyasny

2
@dyasny古い質問に対する既存の回答がやがて時代遅れになった場合、新しい回答を書く価値があります。ただし、この特定の新しい回答は、このサイトの標準に達していない可能性があります。
カスペルド14

4
@dyasny誰かが新しい質の高い答えを書くことに努力したい場合、古いものが時代遅れになるたびに、そうするよう奨励されるべきです。時代遅れの答えに対処する方法に関するより徹底的な議論は、メタに適しています。
カスペルド14

1

virt-sparsify fileA fileBすべてを行いますが、実際には画像のサイズを縮小しません。このために追加する必要があります--compress

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.