标签: overlayfs

Linux 文件系统覆盖 - workdir 用于什么?(OverlayFS)

OverlayFS 有一个workdir选项,除了两个其他目录lowerdirupperdir,它需要是一个空目录。

不幸的是,overlayfs 的内核文档并没有过多地讨论这个选项的用途。

“workdir”必须是与 upperdir 位于同一文件系统上的空目录。

对于只读覆盖,workdir可能是upperdir. 这让我知道它与编写合并文件有关。

请解释workdir在合并目录中写入或更改文件时发生的情况。为什么可写性upperdir不够?

overlayfs

54
推荐指数
1
解决办法
2万
查看次数

Unionfs vs Aufs vs Overlayfs vs mhddfs,我用哪个

我一直在阅读有关联合文件系统的信息,该系统使用户能够同时将多个文件系统挂载到另一个文件系统之上。

但是,我在决定使用哪个(Unionfs vs Aufs vs Overlayfs vs mhddfs)时遇到了麻烦,为什么我没有在任何地方找到有关该主题的具体信息。我知道例如,overlayFS 已被主流 Linux 内核采用,这意味着它可能会得到更广泛的采用。如果有人能给我一些观点,我将不胜感激。

此外,我无法通过 LVM(由用户在单独的问题中推荐)或 RAID 设置之类的东西找到联合文件系统的任何构想用例,除非 LVM 需要格式化所有驱动器,如果您已经在驱动器上有有价值的数据。

aufs overlayfs unionfs

23
推荐指数
1
解决办法
1万
查看次数

在 Linux Overlay (OverlayFS) 挂载中将上层文件系统的更改合并到下层文件系统

我希望能够将覆盖挂载的上层文件系统的更改合并到下层文件系统。

我对在线(即安装叠加层时合并)和离线(卸载叠加层然后合并)解决方案都感兴趣。

我找到了几个离线解决方案,我已将其添加为答案。

有谁知道任何在线解决方案?最好有一个“提交”类型的命令,您可以在仍安装覆盖层时运行以合并图层。

在以下问题中提出了类似的问题,但没有答案:

这些帖子中的评论提出了不同的mergefsbcache,它们都解决了特定的用例,但不是覆盖提供的通用文件系统不可知的用例。

我的目标是拥有一个带有快照的安全文件系统沙箱,可用于任何 Linux 应用程序上的任何(如果可行)底层文件系统,允许您在准备好时回滚更改或手动提交它们。

我怀疑现代主流 Linux 具有所有必要的内置功能,这要归功于过去几年的所有沙箱/虚拟化创新,如果我知道如何使用它们就好了。

linux sandbox snapshot overlayfs union-mount

12
推荐指数
2
解决办法
8765
查看次数

如何通过 OverlayFS 目录修改下层文件?

我希望 Linux 的OverlayFS在写入较低的文件时表现得像AUFS。我希望它写入到较低的目录。例如,我有两个名为L/lower和 的文件U/upper

mount -t overlay -o lowerdir=L,upperdir=U,workdir=W overlay X
Run Code Online (Sandbox Code Playgroud)

这将合并LU到名为单OverlayFS目录X。所以现在这两个文件可以作为X/lower和访问X/upper

然后我通过OverlayFS目录修改下层文件。这是它对我行为不端的地方:

echo 'This is a modification' >> X/lower
Run Code Online (Sandbox Code Playgroud)

它实际上并不修改较低的文件L/lower。相反,它创建了一个新的上层文件,U/lower并在那里写入我的修改。这不是我想要的。我想X作为一个方便的单一访问点进行编辑。

如何进行修改以X/lower写入L/lower

overlayfs

10
推荐指数
1
解决办法
4641
查看次数

如何使用 OverlayFS 保护根文件系统?

如何正确使用 OverlayFS 来保护我的根文件系统?

我有一个从 SD 卡启动和运行的嵌入式系统。由于它会突然断电,我想保护根文件系统。OverlayFS似乎是最简单的解决方案,但我发现的示例通常不涉及根文件系统和/或使用对我不利的 tmpfs,因为我的内存很少。

我正在使用CONFIG_OVERLAY_FS=y启用的Linux 内核 4.4.0 。我的文件系统是xenial-base-armhf.tar.gz,我已经完成了apt install -y overlayroot

我的 SD 卡看起来像:

# fdisk -l /dev/mmcblk1
Disk /dev/mmcblk1: 29 GiB, 31104958464 bytes, 60751872 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7f56a0ab

Device         Boot    Start      End  Sectors  Size Id Type
/dev/mmcblk1p1 *        2048  1050623 …
Run Code Online (Sandbox Code Playgroud)

linux overlayfs

10
推荐指数
2
解决办法
2万
查看次数

查询一个overlayfs

我正在寻找一种方法来查询已挂载的覆盖文件系统 ( overlayfs) 以检查它的上下目录,但直到现在我还没有找到任何合适的命令。有没有办法做这样的检查?

overlayfs使用如下命令安装了该命令:

mount -t overlayfs -o lowerdir=/mnt/root-ro,upperdir=/data/root-rw overlayfs-root ${rootmnt}
Run Code Online (Sandbox Code Playgroud)

mount命令没有给我足够的信息:

root@ubuntu12:~# mount -l
overlayfs-root on / type overlayfs (rw)
/dev/sda1 on /mnt/root-ro type ext4 (ro,relatime,data=ordered) [ROOT]
/dev/sdb1 on /data type ext4 (rw,errors=remount-ro) [DATA]
Run Code Online (Sandbox Code Playgroud)

linux filesystems mount overlayfs

9
推荐指数
1
解决办法
5682
查看次数

将/var/logs挂载为tmpfs,有时借助overlayfs来保存更改

/var/log我想使用overlayfs,而不是仅仅安装tmpfs 。

  1. /var/log 是可写的 tmpfs,但包含文件在 tmpfs 挂载之前就存在。这些旧文件不在 tmpfs 内存中,而是在较低层中。
  2. 仅更改存储在 tmpfs 中,而旧的和未修改的文件存储在 SSD 上
  3. 有时应该可以将更改写入 SSD,例如通过 cron。这应该释放 tmpfs 内存

因此,结果应该是:日志写入 RAM,新旧引导日志可通过同一路径访问。有时,更改会通过脚本写入磁盘。

重点是要加快一点速度,并确保 SSD 免受多次写入的影响。

我在 puppy linux 中看到了类似的事情,不是针对日志,而是针对 root 的所有更改,但如果不安装它就无法执行相同的操作,文档没有帮助)

我将根据答案对浏览器 cookie/缓存执行相同的操作。但持久写入将在浏览器关闭时完成。无法关闭浏览器缓存,至少需要小缓存才能在我的 Web 开发中出现与用户因缓存而出现的相同错误。

logs tmpfs overlayfs union-mount

9
推荐指数
2
解决办法
7859
查看次数

docker 覆盖文件系统上的剩余磁盘空间

我是 Linux 新手。我将 armbian 安装到 SD 卡上,一切正常。SD卡是64GB的。然后我安装了 docker.io、docker-compose 和 portainer,仅此而已。

\n

当我使用 lsblk 检查磁盘空间时:

\n
    # lsblk\nNAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT\nmmcblk0      179:0    0  59.5G  0 disk\n\xe2\x94\x9c\xe2\x94\x80mmcblk0p1  179:1    0   512M  0 part /boot\n\xe2\x94\x94\xe2\x94\x80mmcblk0p2  179:2    0  58.4G  0 part /\nmmcblk1      179:32   0  14.6G  0 disk\nmmcblk1boot0 179:64   0     4M  1 disk\nmmcblk1boot1 179:96   0     4M  1 disk\nzram0        254:0    0    50M  0 disk /var/log\nzram1        254:1    0 929.4M  0 disk [SWAP]\n
Run Code Online (Sandbox Code Playgroud)\n

然后用 df:

\n
# df -h\nFilesystem      Size  Used Avail Use% Mounted on\nudev …
Run Code Online (Sandbox Code Playgroud)

docker overlayfs armbian

9
推荐指数
1
解决办法
5267
查看次数

OverlayFS无缝编辑下层目录文件

我正在尝试设置一个 PXEboot 环境,其中基本系统(通过 NFS 提供给 PXE 客户端)是只读的,根文件系统是一个覆盖文件系统,只读 NFS 基本系统作为lowerdir 和一个 tmpfs作为上层/工作目录。

我编辑了一个 AuFS initramfs 脚本来使用 OverlayFS,它运行良好,除了当您尝试编辑位于 lowerdir 中的文件(例如 /etc/environment)时,它以只读方式打开,即对于新文件(例如 /etc/foobar)或已复制到上层目录的文件,情况并非如此。通过在尝试编辑文件之前简单地进行触摸可以缓解该问题,但是,它不太理想并且可能会破坏其他应用程序。

AuFS 没有这个问题。有什么建议吗?这是 initramfs 脚本的相关部分(在 /etc/initramfs-tools/scripts/init_bottom/00_overlayfs_init 中),为简洁起见进行了编辑。

mkdir /overlay
mkdir /local
mkdir /remote



# mount the temp file system and move real root out of the way
mount -t tmpfs none /local
mount --move ${rootmnt} /remote

mkdir /local/rw
mkdir /local/work

mount -t overlayfs -o lowerdir=/remote,upperdir=/local/rw,workdir=/local/work overlay /overlay

#test for mount points on overlay file system
[  -d /overlay/ro ] …
Run Code Online (Sandbox Code Playgroud)

overlayfs

6
推荐指数
1
解决办法
2406
查看次数

将root挂载为overlayfs

我一直在尝试将根(/)挂载为overlayfs。

操作系统正在通过 NFS 启动到 RAM。我在 initrd 中添加了一个预安装脚本,它创建了“work”、“upper”和“lower”目录。

在引导过程中,我将 NFS 的内容复制到“较低”目录。之后 Overlayfs 将被挂载到 ${rootmnt} 中。

最后,init 脚本 chroots 到 ${rootmnt} (接下来,从真正的 root 初始化等等......)并且操作系统工作正常。

当然,我看不到“工作”和“上层”目录。我怎样才能做到这一点?我必须在 initrd 中更改什么?

linux nfs overlayfs

6
推荐指数
1
解决办法
6190
查看次数

标签 统计

overlayfs ×10

linux ×4

union-mount ×2

armbian ×1

aufs ×1

docker ×1

filesystems ×1

logs ×1

mount ×1

nfs ×1

sandbox ×1

snapshot ×1

tmpfs ×1

unionfs ×1