web-dev-qa-db-ja.com

QEMU-仮想ドライブの実際のディスクサイズが正しくない

dflsは、割り当てられたサイズとEXT4ファイルシステムで実際に使用されているスペースの量が異なるため、ホストマシンで異なるサイズを報告します。問題は、両方が間違ったサイズを報告することです。 qemu-imgは、ゲストのファイルシステム内(EXT4も同様)で使用されている実際のスペースを報告しません。

ホスト上:

# qemu-img info sdb.raw
image: sdb.raw
file format: raw
virtual size: 2.0T (2173253451776 bytes)
disk size: 1.9T

# ls -larth sdb.raw 
-rw-r--r-- 1 hypervisor hypervisor 2.0T Mar  6 13:47 sdb.raw

# du -sh sdb.raw 
1.9T   sdb.raw

# fdisk -l sdb.raw 
Disk sdb.raw: 2 TiB, 2173253451776 bytes, 4244635648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: E6242A7E-1253-E74A-9389-68654A21E4F4

Device     Start        End    Sectors Size Type
sdb.raw1    2048 4244635614 4244633567   2T Linux filesystem

ゲスト上(/ dev/vdb1):

# df -h
Filesystem      Size  Used Avail Use% Mounted on
dev              32G     0   32G   0% /dev
run              32G  496K   32G   1% /run
/dev/vda2       220G  100G  111G  48% /
tmpfs            32G     0   32G   0% /dev/shm
tmpfs            32G     0   32G   0% /sys/fs/cgroup
tmpfs            32G   26M   32G   1% /tmp
/dev/vdb1       2.0T  761G  1.2T  41% /root
tmpfs           6.3G     0  6.3G   0% /run/user/1002

ご覧のとおり、私はゲストシステムで761Gのみを使用していますが、1.2Tはまだ利用可能です。それにもかかわらず、qemu-imgは、私が1.9Tを使用していると言います。どういう理由ですか?これを修正する方法はありますか?ホストマシンで実際に使用されているスペースを確認したい。 sdb.rawにデータを入力する前に正常に機能したため、達成できることはわかっています。qemuは、ディスク内で使用されているスペースに基づいて正しいディスクサイズを報告しました。残念ながら、それは一方向にしか機能しませんでした-使用済みスペースが徐々に増えていったとき。一部のファイルを削除し、使用容量を1.9Tから761Gに減らした後、qemu-imgによって報告されたサイズは小さい値に変更されず、1.9Tのままでした。

8
user3125731

これは予想される動作です。あなたが書いたように、「一部のファイルを削除し、使用済みスペースを1.9Tから761Gに減らした後」-生の仮想イメージは自動的に「ガーベッジを収集」できず、実際のスペースは削除されたファイルに対しても書き込みおよび割り当てされたままになります。回避策は、(double)変換raw> qcow2(> raw)を実行することです。

より詳細な説明はこちら- https://balau82.wordpress.com/2011/05/08/qemu-raw-images-real-size/ そしてこちら- https:// techpiezo .com/tech-insights/raw-vs-qcow2-disk-images-in-qemu-kvm /

5
batistuta09