如何缓存块设备(用于设备映射器)?

如何缓存块设备(用于设备映射器)?

问题/观察到的效果

看来页面缓存会忽略未打开的块设备。更糟糕的是:从使用缓存设备的设备映射器 (DM) 设备读取的数据根本不会被缓存(除非打开)。

我使用这个命令(重复)进行测试:

time dd if=/dev/sda11 of=/dev/null bs=50M count=1

如果sda11打开用于读取 ( exec 4</dev/sda11)、已安装或作为设备映射器设备的一部分 ( echo "0 1427456 linear /dev/sda11 0" | dmsetup create cache1),则缓存将起作用。

但是,如果我在 sda11 之上创建 /dev/mapper/cache1 ,则第一次读取和第二次读取都不会来自缓存(如果未以某种方式打开它)。

动机

我这样做的原因是:我有一个加密卷,启动我的 (KDE) 系统需要相当长的时间。在打开加密卷之前,我做了一些手动准备工作,因此我想我可以利用这段时间从加密设备(LVM)中读取数据,以加快 KDE 的启动速度。但对于提到的缓存问题,这是没有用的。

问题

是否有任何技巧可以通过稍后创建的 DM 加密设备通过(填充的)缓存从 LV 读取数据?

相关内容