Linux 挂载并将更改保存到 RAM(同时不更改底层文件系统)

Linux 挂载并将更改保存到 RAM(同时不更改底层文件系统)

我正在寻找一种方法来放弃写入文件系统的任何更改。目前,我正在挂载一个文件系统mount -o ro。如果程序写入它,将会引发错误。我想更改行为,以便将更改保存到 RAM 并在卸载时丢弃。我该怎么做呢?

答案1

一种可能性是使用覆盖层:这可以将一个(或多个)“较低”只读文件系统与一个(可选)读写“较高”文件系统结合起来。写入操作到上层文件系统,读取操作由实际拥有相关数据的文件系统处理。

您需要使只读文件系统在某处可用;在这里我将使用/mnt/sourcedata.然后创建一个tmpfs将用作覆盖层的:

sudo mkdir -p /mnt/overlay
sudo mount -t tmpfs tmpfs /mnt/overlay

这需要一个上层目录和一个工作目录:

sudo mkdir /mnt/overlay/{upper,work}

对于此示例,合并的文件系统将在以下位置公开/mnt/merged:您需要将其替换为场景中的目标:

sudo mkdir /mnt/merged

最后,合并所有内容:

sudo mount -t overlay overlay -olowerdir=/mnt/sourcedata,upperdir=/mnt/overlay/upper,\
workdir=/mnt/overlay/work /mnt/merged

相关内容