我想使用overlayFS挂载我的RO文件系统 - 以便使用两层FS(Lowerdir和Upperdir)。
我尝试了以下安装命令 -
mount -t overlayfs -o lowerdir=/,upperdir=/overlay "overlayfs:/overlay" /mnt && root=/mnt
将/mnt挂载为overlayFS,但将其设置为RO。
我尝试了以下操作以将其安装为 RW(意味着 Upperdir 是 RW) -
mount -t overlayfs -o rw,lowerdir=/,upperdir=/overlay "overlayfs:/overlay" /mnt && root=/mnt
还是不行。
一些一般信息 -
我想将 R/W FS 安装为 UBIFS,我的 RO FS 是 SquashFS 我正在使用 openWRT 谢谢大家!
答案1
你缺少workdir=
:
目录
覆盖主要涉及目录。如果给定名称同时出现在上层和下层文件系统中,并且引用其中任一文件系统中的非目录,则下层对象将被隐藏 - 该名称仅引用上层对象。
当上层和下层对象都是目录时,就形成一个合并目录。
当时
mount
,作为挂载选项给出的两个目录下层目录和上层目录合并到一个合并目录中:mount -t override 覆盖 -olowerdir=/lower,upperdir=/upper, workdir=/work /merged
这工作目录需要是与 upperdir 相同的文件系统上的空目录。
然后,每当在这样的合并目录中请求查找时,都会在每个实际目录中执行查找,并将组合结果缓存在属于覆盖文件系统的 dentry 中。如果两个实际查找都找到目录,则两个目录都会被存储并创建一个合并目录,否则仅存储一个目录:如果存在则为上层目录,否则为下层目录。
仅合并目录中的名称列表。其他内容(例如元数据和扩展属性)仅报告上层目录。下层目录的这些属性是隐藏的。
多个较低层
现在可以使用冒号
:
作为目录名称之间的分隔符来给出多个较低层。例如:mount -t 覆盖 覆盖 -olowerdir=/lower1:/lower2:/lower3 /merged
如示例所示,
upperdir=
和workdir=
可以省略。在这种情况下,覆盖层将是只读的。指定的下级目录将从最右边的目录开始向左堆叠。在上面的例子中,lower1 是顶层,lower2 是中间层,lower3 是底层。