fstrim 如何在 Xen PV dom0 上不断查找要修剪的字节?

fstrim 如何在 Xen PV dom0 上不断查找要修剪的字节?

我有一个在 3.10 内核上运行 RHEL6 的 Xen PV 节点。该节点具有 mdadm RAID1 和以下分区:

[root@node ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/md1         15G  4.1G  9.9G  30% /
tmpfs           966M     0  966M   0% /dev/shm
/dev/md0        477M   84M  365M  19% /boot
xenstore        966M  184K  966M   1% /var/lib/xenstored

该节点还有一个 LVM,它占用了 SSD 的剩余部分(小于 20GB),我未分配这些部分用于 SSD 超额配置。

fstrim最近,当我从 dom0执行时,我注意到一些有趣的行为。fstrim即使 dom0 中没有发生大量磁盘活动(夜间备份除外),也会继续修剪字节。 domU 中发生大量磁盘活动,但 dom0 中几乎没有。

下面的每个fstrim命令都间隔约 2 分钟的延迟:

[root@node ~]# fstrim -v /
/: 10452664320 bytes were trimmed
[root@node ~]# fstrim -v /
/boot: 0 bytes were trimmed
[root@node ~]# fstrim -v /
/: 181784576 bytes were trimmed
[root@node ~]# fstrim -v /
/boot: 0 bytes were trimmed
[root@node ~]# fstrim -v /
/: 283222016 bytes were trimmed
[root@node ~]# fstrim -v /
/boot: 0 bytes were trimmed
[root@node ~]# fstrim -v /
/: 334065664 bytes were trimmed

第一个fstrim是当天执行的第一个,正如预期的那样,它发现了大约 10GB 的页面需要修剪——与每晚进行的备份相关。如果我几分钟后运行该命令,就没有什么可以修剪的了。但如果我再等几分钟并再次修剪,那么它总是会找到要修剪的内容——也不是微不足道的数据量(例如,~300MB)。

正如我之前提到的,除了夜间备份运行之外,dom0 的磁盘活动非常少。 domU 有大量的磁盘活动,但我不会想到 dom0 可以修剪与 domU 文件系统关联的页面。

无论哪种情况,当我fstrim在 dom0 上执行时,domU 上的性能都会显着提高 - iowait 下降。

有谁知道当 dom0 上的磁盘活动很少时,dom0 如何能够不断地修剪数百 MB?

相关内容