次のような状況を理解するのに苦労しています。
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-attach
domUにdiscard
その中のsがファイルシステム層に渡されることを伝える必要はありませんか?それ以外の場合、domUの「ファイルの削除」は画像ファイルが「理解する」操作ではありません。 domUで見るのは、いくつかの場所、つまり変更されたディレクトリと拡張テーブルエントリのいくつかの変更だけです。 「ファイル削除」はブロックデバイスの概念ではありません!
ただし、SSDの出現により、ファイルdiscard
システム(この場合はdomUのファイルシステムドライバ)は、データブロックが不要になったことをプライマリストレージデバイスに通知できます。この場合、SSD(またはここではハイパーバイザー)はその情報を使用して、実際にファイルからそのデータを削除して再び希薄にすることができます。したがって、以下のサポートが必要です。
- dom0の画像ファイル形式と画像ブロックデバイスドライバ
- ハイパーバイザー(廃棄情報をイメージドライバに渡すことができます)
- domUファイルシステムとそのマウントオプション(データが削除された場合は実際に廃棄をエクスポートします)
特に3.通常、デフォルトでは有効になっていません。削除操作がバンドルされているか遅延されることがよくあります。fstrim
domUファイルシステムで実行してみてください!
ただし、パフォーマンス上の理由から、イメージドライバをすぐに「薄くする」ことは賢明な方法ではないため、遅延/手動クリーンアップが必要になる場合があります。