问题标签 [overlayfs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2292 浏览

linux - Overlayfs:从“较低”恢复已删除或更改的文件

OpenWrt 使用 overlayfs

不知何故,真正的lowerdir是/rom

如何恢复文件以使其与中一样/rom从覆盖中删除记录:whiteouts 和 opaque dirs。

解决方法

0 投票
0 回答
58 浏览

docker - 我可以从 overlayfs 获取其他文件系统的信息吗?

能否解决overlayfs中修改upperdir路径时不知道inode信息的问题?

更改upperdir路径后:

*通过更改overlayfs代码修改了upperdir路径。


*原始代码

*修复代码示例

*在上面的代码中,我用我想要的磁盘和挂载的dentry对象替换了upperdir部分。*外部结构 qsh_metadata qsh_mt; => 我添加的代码

ex) struct dentry upperdir = qsh_dentry;
码头基地挂载:/dev/sda
qsh_dentry:挂载/dev/sdb

0 投票
0 回答
645 浏览

linux - 覆盖 FS 排除文件夹

我有一个嵌入式设备,我想在其中覆盖 rootfs。到目前为止,我的 initramfs 脚本如下所示:

覆盖在那里工作得很好,但我希望能够更改lowerdir文件/boot/extlinux/extlinux.conf上的内核初始化引导参数,以便在需要时添加factoryreset参数。

如果我在系统运行修改文件时尝试挂载lowerdir分区,我得到一个错误

是否可以指定 lowerdir 以排除 /boot 目录,还是必须一一覆盖文件夹?

0 投票
1 回答
200 浏览

php - Laravel Dockerfile > 1GB

我正在Docker为我的应用程序构建一个图像,Laravel但它变得比1GB. 这是Dockerfile

Vue用作前端和Redis缓存提供程序。

我习惯于 200-300 MB 左右的图像,但这太荒谬了。

我可以做些什么来减小图像大小?

提前致谢。

0 投票
1 回答
114 浏览

go - Overlayfs 复制创建一个空文件

我正在做一些奇怪的事情,创建一个overlayfs挂载,其中较低的目录是一个FUSE卷(我已经实现了)。这似乎主要工作,我可以通过overlayfs挂载从FUSE挂载读取文件,并且它们具有正确的内容。我还可以在 overlayfs 挂载中创建新文件,这并不奇怪,因为这应该只要求较低的 FUSE 层ENOENT在您尝试LOOKUP那个文件。失败的是当我尝试附加到现有文件时,而不是获取现有内容后跟附加内容,我只是获取附加内容。我假设一定有我的 FUSE 卷应该做的事情,它不是,这导致了这个错误。但是,查看日志并没有抱怨任何未实现的方法,也没有任何错误。以下是相关文件(“foo”)的日志。

如果这很重要,保险丝层是用 go 编写的。

0 投票
2 回答
679 浏览

docker - 如何验证 docker 容器的基本设备大小

我知道 Docker 使用存储池为每个容器分配存储。使用 devicemapper 存储时,默认存储池大小为 100GB,每个容器的默认限制为 10G。该数据显示在Base Device Size和中的Data Space Total字段中docker info

但是,在我的场景docker info中不显示这些数据字段,可能是因为我的存储驱动程序是overlay2 如何提取此信息,还有其他方法吗?

的输出docker info

的输出docker version

0 投票
0 回答
52 浏览

php - Linux 挂载脚本在 PHP 解释器中运行,但不在 Web Apache 中

我的网站是关于复制文件的。我决定使用overlayfs,而不是复制文件以避免过多的时间和服务器滞后。使用 PHP 解释器将文件夹编码mount到终端中指定的位置。但是,当我从 Apache 运行 php 脚本时,脚本不会mount覆盖。最糟糕的是没有错误输出,所以我可以调试出了什么问题。我检查了 php 错误日志,没有关于发生的事情的输出。

我安装overlayfs的目的地是另一个用户。为此,我需要 root 来执行mount命令。为了能够在不使用 root 或 sudo 的情况下运行代码,我看了一下这个问题。我创建了 c 代码,对其进行编译并设置了适当的权限 ( root.root, rwsr,sr...)。我在一个 php 文件中运行代码:

代码所做的是打印实际用户名(以确保我有输出,查看代码是否执行)然后合并文件夹。该文件/var/www/vhosts/user/deployment/exec是 c 程序,然后我将代码作为参数传递给执行。

在我运行的终端中:php -f "/var/www/vhosts/user/httpdocs/over.php". 我检查了合并的文件夹,我可以看到它有效。输出是user.

然后我卸载覆盖sudo umount /var/www/vhosts/user.deve/httpdocs

我通过浏览器访问 php 脚本,我得到了输出user,但文件夹没有合并。我 ctrl-f5 多次但没有,没有错误,日志中没有错误。

我将命令更改为从浏览器创建的文件夹shell_exec('/var/www/vhosts/user/deployment/exec "sudo mkdir /var/www/vhosts/user.deve/httpdocs/nouvo"');sudo

我注意到只有mount命令无法正常运行。

apache无法运行命令的原因可能是什么sudo mount,即使出现错误,它也不会打印出错误吗?

我只是看看/var/log/kern.log。我可以看到mount从网络浏览器执行的命令。但是日志与在终端中执行的日志不同。

从网络浏览器:

从浏览器执行后从终端:

我只是没有从浏览器获取日志,因为脚本是相同的。

0 投票
1 回答
352 浏览

docker - Overlayfs 卷到 docker 容器

我有一组目录,我想覆盖挂载到容器中:

我可以在主机上创建一个 overlayfs 挂载,/opt/{a,b,c}并将其作为卷挂载到/usr/local容器中,但随后/usr/local/cuda将无法在容器中访问。

我可以通过systemd-nspawn以下方式直接实现这一点:

这使得所有文件都可以作为/usr/local容器中的合并挂载使用,并将更改写入/opt/c主机上。

是否可以使用 docker 轻松实现我想要的?

0 投票
0 回答
374 浏览

kubernetes - 在 k8s 中将容器文件系统挂载到 sidecar

我想在 Kubernetes 的容器perf recordperf script运行一个进程(实际上是在 Openshift 上)。按照这篇博文中的方法,我能够开始perf record工作(在边车中)。但是,perf script无法读取符号(在边车中),因为它们仅存在于主容器中。

因此,我想将主容器的完整文件系统挂载到边车中,例如在下/main然后运行perf script --symfs=/main。我不想将完整的文件系统复制到 emptyDir 中。我发现了另一个关于使用覆盖文件系统的不错的博文;但是 IIUC 我需要在主容器中创建覆盖,并且我不想将其作为特权容器运行并且需要mount存在命令(如 )。

有没有办法创建某种反向安装,将容器的一部分暴露给同一个 pod 中的其他容器安装?

0 投票
1 回答
2594 浏览

docker - Kubernetes:增加 K3s 中 OverlayFS / containerd 运行时卷的大小

我有一个使用 Rancher 的 K3s 部署的轻量级 Kubernetes 集群。

大多数时候 pod 在其中运行良好,但是我注意到它有时会遇到NodeDiskPressure,这会导致现有的 Pod 被驱逐。

查看主机中的可用磁盘,我发现在此问题之前较高的集群负载与容器运行时存储的大量使用相吻合。在正常情况下,这些卷的已用空间量为 70%,但它们会上升到 +90%,这可能会导致 pod 逐出。

  • 尝试增加主机上的可用 RAM,但显然没有效果。

  • 从上面的输出中可以看出,叠加的总容量当前设置为 6 GB。我查看了K3scontainerd 的文档,试图找出如何增加覆盖文件系统的大小,但不幸的是找不到任何东西。

  • 起初我认为用更大的空间重新安装它会有助于解决这个问题,但后来我不确定我应该使用哪个下/上目录来设置覆盖。

  • 也许手动清理目录可以解决问题?我注意到/run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/中的一些文件夹已经存在了几天。从内部看,似乎它们存储了 Docker 镜像层但也存储了 Pod 状态?仍然不确定删除这些是否会破坏任何东西,所以现在我保留了这些。

有什么提示吗?