domU インストールイメージからデータを削除しても、イメージサイズは縮小されません。

domU インストールイメージからデータを削除しても、イメージサイズは縮小されません。

次のような状況を理解するのに苦労しています。

Dom0画像:

[root@Dom0]# du -h 19.12.0.0_dbhome_1.img
980M    19.12.0.0_dbhome_1.img

DomUにインストール済み:

[root@DomU]# df -h /u01/app/oracle/product/19.12.0.0/dbhome_1
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvde        50G   62M   47G   1% /u01/app/oracle/product/19.12.0.0/dbhome_1

DomUとDom0にデータを書き込むと、/u01/app/oracle/product/19.12.0.0/dbhome_1ディスク使用量はそれに応じて増加します。

[root@DomU dbhome_1]# dd if=/dev/zero of=./test.img bs=4k iflag=fullblock,count_bytes > /dev/null
[root@DomU dbhome_1]# df -h /u01/app/oracle/product/19.12.0.0/dbhome_1
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvde        50G   21G   27G  44% /u01/app/oracle/product/19.12.0.0/dbhome_1
[root@Dom0]# du -h 19.12.0.0_dbhome_1.img
21G     19.12.0.0_dbhome_1.img

データを削除すると、DomUのディスク使用量は減少しますが、Dom0は同じままです。

[root@DomU dbhome_1]# rm test.img
[root@DomU dbhome_1]# df -h /u01/app/oracle/product/19.12.0.0/dbhome_1
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvde        50G   62M   47G   1% /u01/app/oracle/product/19.12.0.0/dbhome_1
[root@Dom0]# du -h 19.12.0.0_dbhome_1.img
21G     19.12.0.0_dbhome_1.img

その違いはどのように発生しましたか?

イメージを作成してインストールするために、次のプロセスを実行しました。
[root@Dom0]# qemu-img create 19.12.0.0_dbhome_1.img.img 50G &>/dev/null
[root@Dom0]# xm block-attach domU file:19.12.0.0_dbhome_1.img /dev/xvde w >/dev/null 2>&1
[root@Dom0]# ln -s 19.12.0.0_dbhome_1.img.img /path/to/link/19.12.0.0_dbhome_1.img
[root@Dom0]# vi vm.cfg (added link to disks[] parameter)
[root@DomU]# parted /dev/xvde mklabel gpt &>/dev/null
[root@DomU]# parted -s /dev/xvde mkpart primary 0 100% &>/dev/null
[root@DomU]# parted -s /dev/xvde set 1 lvm on &>/dev/null
[root@DomU]# echo "/dev/xvde /u01/app/oracle/product/19.12.0.0/dbhome_1 ext4 defaults 1 1\" >> /etc/fstab
[root@DomU]# mkfs.ext4 /dev/xvde &>/dev/null
[root@DomU]# mount -a &>/dev/null

ベストアンサー1

XENの専門家ではありませんが:

xm block-attachdomUにdiscardその中のsがファイルシステム層に渡されることを伝える必要はありませんか?それ以外の場合、domUの「ファイルの削除」は画像ファイルが「理解する」操作ではありません。 domUで見るのは、いくつかの場所、つまり変更されたディレクトリと拡張テーブルエントリのいくつかの変更だけです。 「ファイル削除」はブロックデバイスの概念ではありません!

ただし、SSDの出現により、ファイルdiscardシステム(この場合はdomUのファイルシステムドライバ)は、データブロックが不要になったことをプライマリストレージデバイスに通知できます。この場合、SSD(またはここではハイパーバイザー)はその情報を使用して、実際にファイルからそのデータを削除して再び希薄にすることができます。したがって、以下のサポートが必要です。

  1. dom0の画像ファイル形式と画像ブロックデバイスドライバ
  2. ハイパーバイザー(廃棄情報をイメージドライバに渡すことができます)
  3. domUファイルシステムとそのマウントオプション(データが削除された場合は実際に廃棄をエクスポートします)

特に3.通常、デフォルトでは有効になっていません。削除操作がバンドルされているか遅延されることがよくあります。fstrimdomUファイルシステムで実行してみてください!

ただし、パフォーマンス上の理由から、イメージドライバをすぐに「薄くする」ことは賢明な方法ではないため、遅延/手動クリーンアップが必要になる場合があります。

おすすめ記事