联合文件系统是一种创新的解决方案,允许虚拟合并多个文件夹,同时将其实际内容分开。覆盖文件系统(OverlayFS)是其中的一个示例,尽管它比文件系统更像是一种挂载机制。
在版本3.18的Linux内核主线中,OverlayFS允许您将一个目录的内容(文件和目录)覆盖到另一个目录上。源目录可以在不同的卷上,甚至可以在不同的文件系统上,这创建了一种有趣的机制,允许临时修改只读文件和文件夹。
下图所示是最简单的情况,涉及两个目录,每个目录包含文件和文件夹。我们可以将它们视为上下限,其余的内核和应用程序则位于其上方。下层目录为只读。通过OverlayFS进行的文件访问首先从上层目录检索数据,然后如果文件不存在,则默认为下层目录。请注意,Linux内核仍然可以直接访问原始的上,下两个目录,但是此访问权限可能会受到应用程序的限制。
对上层目录中文件的修改将照常进行。对下部文件夹中文件的任何修改都将在上部文件夹中创建一个副本,并且该文件将被修改。这将使基本文件保持不变,并且可以通过直接访问下部文件夹来访问它们。
有趣的是,完成修改后,第二项任务可以将修改后的文件从上层文件夹复制到下层文件夹。这样,OverlayFS设置可以模拟Reliance Nitro文件系统内事务点的某些功能。
从OverlayFS目录中删除的文件将直接从上层目录中删除文件,并通过创建“ whiteout”文件来模拟从下层目录中删除文件。该文件仅存在于OverlayFS目录中,而不会实际出现在上层目录或下层目录中。卸除OverlayFS时,此状态信息将丢失,因此应注意将任何必要的更改反映到下层目录。
子目录也可以从较低目录中删除,该较低目录在OverlayFS目录中创建“不透明”目录。在幕后,OverlayFS使用“可信”扩展属性类或名称空间来记录停电和不透明目录。支持可信名称空间的Linux文件系统均可用于其中一种,其中Reliance Nitro就是其中之一。
网友评论