首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否可以使用读-写根文件系统磁盘映像作为一个OverlayFS上位机?

我是否可以使用读-写根文件系统磁盘映像作为一个OverlayFS上位机?
EN

Unix & Linux用户
提问于 2016-09-10 01:28:50
回答 1查看 2K关注 0票数 6

是否可以将包含根文件系统的现有磁盘映像联合安装到upperdiroverlayfs挂载以进行读写访问?

我试图使用预先存在的脚本(最初写在Ubuntu12.04上并移植到14.04)将一些旧的磁盘映像联合到Ubuntu16.04机器上的/tmp/目录中。

旧的自动化脚本使用overlayfssquashfs映像之上创建和联合挂载可写的ext2/3磁盘映像--如下所示:

代码语言:javascript
复制
cd /tmp
mkdir lower upper union
losetup /dev/loop1 /tmp/image.sfs
losetup /dev/loop2 /tmp/image.ext2
mount -t squashfs -o ro /dev/loop1 /tmp/lower
mount -t ext2 -o rw /dev/loop2 /tmp/upper
mount -t overlayfs -o rw,lowerdir=/tmp/lower,upperdir=/tmp/upper overlayfs /tmp/union

最后一次在3.x内核上使用它们(可能在3.18之前),而且该方法似乎不再有效。覆盖现在需要一个workdir选项-例如:

代码语言:javascript
复制
mount -t overlay -o rw,lowerdir=/tmp/lower,upperdir=/tmp/upper,workdir=/tmp/work overlay /tmp/union

问:是否可以调整自动化脚本,在4.x内核上以可写状态挂载和使用现有映像?我是否可以避免将它们重新定义为包含类似rootwork目录的内容?在某些情况下,这可能会破坏它们在其他地方的使用。

根据文档,为了允许原子写入,workdir必须是与upperdir相同的文件系统上的一个空目录。在我看来,将根文件系统映像合并为读-写是不可能的。workdir必须存在于映像中(与其数据目录分开),这在根文件系统映像中是不可能的。

我已经考虑过在VM中加载Ubuntu14.04股票,进行几次一次性操作,但这不是一个长期的解决方案。

迄今为止最好的尝试:

我想出的避免将相同数据双写到磁盘的唯一解决方案是将两个映像作为lowerdir值挂载,upperdirworkdir目录位于tmpfs挂载上。然后,我可以使用rsync将更改从tmpfs位置复制到挂载的ext2/3映像,在自动写入完成并且覆盖联盟已被卸载之后--即:

代码语言:javascript
复制
mount -t overlay -o rw,lowerdir=/tmp/upper:/tmp/lower,upperdir=/tmp/tmpfs/root,workdir=/tmp/tmpfs/work overlay /tmp/union

...perform automated reads/writes...

umount /tmp/union

...rsync contents from /tmp/tmpfs/root to /tmp/upper...

不过,它严格限制在可用的RAM上,而且添加到所有自动化脚本中是一种丑陋的做法。

EN

回答 1

Unix & Linux用户

发布于 2018-05-03 15:34:48

在图像文件中创建一个额外的嵌套级别:

代码语言:javascript
复制
mkdir   /tmp/upper/upper
mkdir   /tmp/upper/work
mount -t overlay -o rw,lowerdir=/tmp/lower,upperdir=/tmp/upper/upper,workdir=/tmp/upper/work overlay /tmp/union
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/308980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档