在 Linux 下使用循环挂载镜像的开销

hay*_*vuk 7 linux loop-device

在 Linux 下使用循环挂载映像与使用物理分区是否存在 CPU/RAM 开销?

lem*_*eze 11

是的,除非您有一个非常新的内核,否则在 linux 上使用循环设备时会产生很大的开销:通过循环设备访问的数据必须经过两个文件系统层,每个层都进行自己的缓存,因此数据最终会缓存两次,浪费了大量内存(臭名昭著的“双缓存”问题)

除了随意使用之外,更好的选择是使用专用分区chroot以便可以直接访问数据。

或者使用最新的内核,该问题在linux 4.4 及更新版本中得到修复:

具有直接 I/O 和异步 I/O 支持的更快、更精简的循环设备

此版本引入了对循环块设备的直接 I/O 和异步 I/O 的支持。在读/写循环的后备文件上使用直接 I/O 和 AIO 有几个优点: 由于直接 I/O 避免了双缓存,这大大减少了内存使用;与用户空间直接 I/O 不同,没有固定页面的成本;在某些情况下避免上下文切换,因为可以避免并发提交。请参阅提交以获得基准。