我很难理解以下情况:
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
domUdiscard
中的 s 可以传递到文件系统层吗?否则,domU中的“删除文件”并不是镜像文件“理解”的操作:它看到的只是几个位置的一些变化,即变化的目录和扩展表条目。 “删除文件”不是块设备的概念!
但是:随着 SSD 的出现discard
,文件系统(在本例中为 domU 的文件系统驱动程序)可以告诉底层存储设备不再需要数据块。在这种情况下,SSD(或者此处的虚拟机管理程序)可以使用该信息实际从文件中删除该数据(并使其再次稀疏)。因此,您需要以下方面的支持:
- dom0 中的图像文件格式和图像块设备驱动程序
- 虚拟机管理程序(能够将丢弃信息传递给映像驱动程序)
- domU 文件系统及其挂载选项(在数据删除时实际发出丢弃)
特别是 3. 通常默认情况下不启用:丢弃操作通常被捆绑/延迟。尝试fstrim
在 domU 文件系统上运行!
然而,出于性能原因,立即对图像驱动程序进行“稀疏化”很少是明智的,因此也可能存在延迟/手动清理。