我有一个在 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?