Filesystems
刪除 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
當我將數據寫入
/u01/app/oracle/product/19.12.0.0/dbhome_1
DomU 和 Dom0 上的磁碟使用量時,會相應增加:[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
不是 XEN 方面的專家,但是:
不需要告訴domU
xm block-attach
中discard
的 s 可以傳遞到文件系統層嗎?否則,domU 中的“刪除文件”不是圖像文件“理解”的操作:它所看到的只是幾個位置的一些變化,即變化的目錄和擴展表條目。“刪除文件”不是塊設備的概念!但是:隨著 SSD 的出現
discard
,文件系統(在這種情況下,domU 的文件系統驅動程序)可以告訴底層儲存設備不再需要某個數據塊。在這種情況下,SSD 或此處的管理程序可以使用該資訊從文件中實際刪除該數據(並再次使其稀疏)。因此,您需要以下方面的支持:
- dom0 中的圖像文件格式和圖像塊設備驅動程序
- 管理程序(能夠將丟棄物傳遞給圖像驅動程序)
- domU 文件系統及其掛載選項(在數據刪除時實際發出丟棄)
特別是 3. 預設情況下通常不啟用:丟棄操作通常是捆綁/延遲的。嘗試
fstrim
在 domU 文件系統上執行!但是,出於性能原因,立即在圖像驅動程序上進行“稀疏化”是不明智的,因此也可能存在延遲/手動清理。