AuFS(另一个联合文件系统)允许我们将两棵树合并为一棵,即使这些树重叠。然后,我们可以将合并树的写入指向其中一个分支并读取到另一个分支。
它的经典用途是使用闪存文件系统和 ram 磁盘,像这样(参考 1)创建一个不会破坏 Linux 的只读根文件系统。所有文件写入都进入 ram。重新启动后,系统会自行恢复到出厂配置。
/dir1
= 只读/dir2
= 读/写/aufs
/dir1
=和的合并/dir2
/aufs
然后重新安装--move
以使其成为/
(根)
简化后,(参考文献 1)中的示例就是这样做的
mount -t aufs br=/dir2:/dir1 /aufs
mount --move /aufs /
但是,我想使用它以使可写 ( /dir2
) 位于真实磁盘上,而不是 ramdisk 上。这样在重新启动后它将保留其数据。
但我需要确保不保留 dir2 中的某些文件并恢复为 ( /dir1
) 默认值。这可确保未来的引导始终使用出厂时的文件。不会丢失用户和记录数据。
/etc
例如,在, /bin
,/boot
中更改的文件/usr
不应在重新启动后继续存在。
AUFS 网页(参考文献 2)的示例很少。
那么问题来了:使用 AuFS 的正确方法是什么?
我可以想到以下几点:
- 以某种方式修改第一个挂载命令
- 在第二次挂载之前使用 aufs add/del 添加更多挂载命令
/dir2
只需删除在引导时不应保留的树- 部分树 (
etc, bin, boot, lib, etc
) 在tmpfs
参考 1:https
://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash
参考 2:http ://aufs.sourceforge.net/aufs.html
选项 #1:
auFS
它本身不支持这样的挂载选项,所以选项 #1 已失效。你必须解决这个问题。选项#3:当然,您可以在每次启动时简单地删除这些目录。这可能是我在这里看到的最简单的方式。
选项 #2:您可以使用
tmpfs
. 所以首先创建一个tmpfs
,假设大小为 500 MB:我们现在有:
/dir1
: 只读/dir2
:读/写/tmpfs
: 在 RAM 中读/写/aufs
/dir1
:和的叠加/dir2
在里面
/tmpfs
,我们创建了你想要保留的那些目录:请注意,当我们已经合并两个目录时,我们会这样做。所以当目录树
/aufs
已经存在时。但是,现在我们为每个应该保留的目录执行一次 aufs 挂载:您现在有一个目录树,
/aufs
您可以在任何地方写入文件,但是当您写入时/etc
,它将被写入/tmpfs/etc
RAM 中的 . 例如,其他文件/home
被写入/dir2/home
,这是一个可读写的文件系统,因此在重新启动后仍然存在。另一个解决方案:我还使用使用覆盖文件系统并保留用户数据的客户端系统。这是我解决它的方法:只需一个只读文件系统和一个安装在它上面的 tmpfs。稍后当用户登录时,我从可读写的 samba 服务器挂载他的主目录。因此,他的所有用户数据都存储并保存在 中
/home
,其余的在重新启动后无法幸免。在您的情况下,您可以将/home
其放入另一个可读写的物理分区,然后将其挂载到/aufs/home
.