出于好奇:如果我有一台 LUKS 设备,根据我的理解,当从块设备读取一个块时,这个块会被放入缓冲区缓存中。但这个块是加密的,所以不能立即使用。访问该块时,它将被解密,因此存在第二个版本的数据。这个第二份副本比磁盘块更适合缓存。我想 Linux 内核也会合理地缓存这个第二块(来自循环设备)——甚至仅有的这个变换后的块。
压缩文件系统(如 btrfs)也有类似的情况:从磁盘读取的块基本上是无用的,只有解压缩后才有应用程序可以使用且有必要缓存的内容。
我尝试在其他地方找到此信息(https://kernelnewbies.org,https://www.kernel.org/) 但到目前为止还没有成功。我发现的大多数内容都涵盖了较旧的内核版本和文件系统,这些文件系统没有磁盘块的这种属性,需要经过转换才能使用。如果能提供一些指点,我将不胜感激。
答案1
我会很感激一些指点
free
我会尝试查看第一次解密(cryptsetup [luksOpen | open --type luks]
)安装和从 LUKS 设备读取之前和之后的输出。
如果 [ free | buff/cache | available ] 空间的变化量与您所读到的大小大致相同,则它仅缓存了一个副本。如果空间变化量约为两倍,则它可能缓存了两个/两个副本。
为了安全起见,我想象/希望解密的 LUKS 数据不会被缓存。通常读取比解密慢。
- 为了进行测试,您可以尝试创建自己的 (10x) 加密 LUKS 设备,使用几 (几百?) MB 文件并反复 luksFormat 和 luksOpen,这样它就使用了重复/嵌套加密。然后任何读取都应乘以 (10x),这在
free
的输出中更容易看到。