Apptainer 中 Overlay 和 Underlay 之间的差异

Apptainer 中 Overlay 和 Underlay 之间的差异

我试图了解 Apptainer 配置中绑定文件系统的两种方式之间的差异。文档可以找到这里,但这里是令人困惑的部分:

启用覆盖:此选项将允许 Apptainer 在容器映像中不存在的路径处创建绑定安装。该选项可以设置为try(默认),这将尝试使用overlayfs。如果在这种情况下无法创建overlayfs,则绑定路径将被静默忽略。如果该选项设置为yes,那么如果overlayfs在SUID模式下失败,这将是一个致命错误,但如果overlayfs在非SUID模式下失败,它将使用fuse-overlayfs。Underlay 比 fusion-overlayfs 更高效,因此将此选项设置为 yes 通常是不可取的。

启用底层:此选项将允许 Apptainer 在容器映像中不存在的路径处创建绑定挂载,就像启用覆盖一样,但使用底层。这适用于覆盖不可能或不起作用的系统。如果覆盖选项可用并且有效,则将使用它。

基本上我的理解是,底层比覆盖更有效,应该使用(第一个粗体部分),但底层只是覆盖不可用时的替代品(第二个粗体部分)。

所以基本上我有两个问题:

  • 幕后有哪些差异?这Github 上的问题有点解释了底层是如何工作的,但不清楚,也没有太多谈论覆盖是如何工作的。
  • 应首选哪一种以及何时应使用另一种?

相关内容