我正在寻找一种方法来放弃写入文件系统的任何更改。目前,我正在挂载一个文件系统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