联合文件系统介绍

联合文件系统介绍

联合文件系统一个可堆叠统一的文件系统,该系统可以合并多个目录(分支)的内容,同时保持其物理内容独立。

对于联合文件系统有很多不同的实现:

  • aufs
  • overlay

overlay原理介绍

OverlayFS 处理内容层 :一个或多个下层( lowerdir)和一个上层(upperdir)。下层被视为只读,上层被视为读写。OverlayFS 通过联合挂载(merged)提供这些层的统一视图。

  • lowerdir:只读层,包含基础文件,不可修改。
  • upperdir:可写层,允许写操作,所有修改都保存在这里。
  • merged:显示 lowerdir 和 upperdir 合并后的统一视图。
    在这里插入图片描述

文件变更操作

新增文件

在上层(upperdir)新创建一个文件

删除文件

上层创建一个具有相同名称的特殊字符设备,上层的字符设备表示该文件或文件夹应从统一视图中隐藏。

修改文件
  • 修改上层的文件,不会有任何特殊变化。
  • 修改下层的文件,则该文件首先会被复制到上层,然后才会对副本进行更改。

OverlayFS演示

挂载一个overlay文件系统,通过mount -t overlay -o overlay 来实现

overlay的options有如下:

lowerdir=<dir>:指定用户需要挂载的lower层目录,lower层支持多个目录,用“:”间隔,优先级依次降低。
upperdir=<dir>:指定用户需要挂载的upper层目录,upper层优先级高于所有的lower层目录。
workdir=<dir>:一个临时工作目录,用于支持文件系统的内部操作,特别是处理文件的删除和元数据管理。

初始环境

mkdir demo
cd demo
mkdir lower upper merged work
echo "File1 in lower layer" > lower/f1
echo "File2 in lower layer" > lower/f2
echo "File3 in lower layer" > lower/f3
echo "File3 in upper layer" > upper/f3
echo "File4 in upper layer" > upper/f4
cd ..

显示目录结构

tree demo
demo
├── lower
│   ├── f1
│   ├── f2
│   └── f3
├── merged
├── upper
│   ├── f3
│   └── f4
└── work

不要在merged目录或者work目录创建任何文件
挂载overlay文件系统到merged,在merged提供lower和upper目录的统一视图。

mount overlay -t overlay -o lowerdir=demo/lower,upperdir=demo/upper,workdir=demo/work demo/merged

显示挂载后的内容

tree demo
└── demo
    ├── lower
    │   ├── f1
    │   ├── f2
    │   └── f3
    ├── merged
    │   ├── f1
    │   ├── f2
    │   ├── f3
    │   └── f4
    ├── upper
    │   ├── f3
    │   └── f4
    └── work
        └── work
添加文件
echo "Add file5 in merged view" >  demo/merged/f5
tree demo
demo
├── lower
│   ├── f1
│   ├── f2
│   └── f3
├── merged
│   ├── f1
│   ├── f2
│   ├── f3
│   ├── f4
│   └── f5
├── upper
│   ├── f3
│   ├── f4
│   └── f5
└── work
    └── work

upper中新增了f5文件,lower中没有f5文件

cat demo/upper/f5
Add file5 in merged view
删除文件
rm demo/merged/f2
tree demo
demo
├── lower
│   ├── f1
│   ├── f2
│   └── f3
├── merged
│   ├── f1
│   ├── f3
│   ├── f4
│   └── f5
├── upper
│   ├── f2
│   ├── f3
│   ├── f4
│   └── f5
└── work
    └── work
        └── #775a4af
ls -l demo/upper/
total 12
c--------- 2 root root 0, 0 Dec 23 11:03 f2
-rw-r--r-- 1 root root   21 Dec 23 11:03 f3
-rw-r--r-- 1 root root   21 Dec 23 11:03 f4
-rw-r--r-- 1 root root   25 Dec 23 11:03 f5

删除文件 f2 会导致upper中出现特殊字符文件f2,但lower目录保持不变。

修改文件

当修改文件时,根据文件所在的位置(upper或lower),将发生向上复制操作。例如,如果lower的 f1,则 f1 将被复制到upper并在upper进行修改。

cat demo/merged/f1
File1 in lower layer
echo "adding some random content" >> demo/merged/f1
cat demo/merged/f1
File1 in lower layer
adding some random content
cat demo/upper/f1
File1 in lower layer
adding some random content
cat demo/lower/f1
File1 in lower layer

如上所示,下层的文件 f1 保持不变。上层中存在 f1 的副本,并对其进行了修改以添加新行

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件架构师笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值