问题/观察到的效果
看来页面缓存会忽略未打开的块设备。更糟糕的是:从使用缓存设备的设备映射器 (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 读取数据?