15

耍耍OverlayFS

 5 years ago
source link: https://jiajunhuang.com/articles/2018_12_27-overlayfs.md.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

自Linux3.4之后,就可以使用overlay了。来,耍耍。

[email protected]:~/playoverlay$ mkdir lower{1,2,3} upper work merged  # 创建文件夹
[email protected]:~/playoverlay$ touch lower1/l1.txt lower2/l2.txt lower3/l3.txt  # 创建文件
[email protected]:~/playoverlay$ tree  # 这是目前的结构
.
├── lower1
│   └── l1.txt
├── lower2
│   └── l2.txt
├── lower3
│   └── l3.txt
├── merged
├── upper
└── work

6 directories, 3 files
[email protected]:~/playoverlay$ sudo mount -t overlay overlay -o lowerdir=./lower1:./lower2:./lower3,upperdir=./upper,workdir=./work ./merged/ # 挂载
[email protected]:~/playoverlay$ tree  # 这是目前的结构
.
├── lower1
│   └── l1.txt
├── lower2
│   └── l2.txt
├── lower3
│   └── l3.txt
├── merged
│   ├── l1.txt
│   ├── l2.txt
│   └── l3.txt
├── upper
└── work
    └── work [error opening dir]

7 directories, 6 files
[email protected]:~/playoverlay$ touch merged/hahahahhha  # 创建一个文件
[email protected]:~/playoverlay$ rm merged/l1.txt  # 删除一个文件
[email protected]:~/playoverlay$ tree
.
├── lower1
│   └── l1.txt
├── lower2
│   └── l2.txt
├── lower3
│   └── l3.txt
├── merged
│   ├── hahahahhha
│   ├── l2.txt
│   └── l3.txt
├── upper
│   ├── hahahahhha
│   └── l1.txt
└── work
    └── work [error opening dir]

7 directories, 8 files
[email protected]:~/playoverlay$

解释两点:

  • sudo mount -t overlay overlay -o lowerdir=./lower1:./lower2:./lower3,upperdir=./upper,workdir=./work ./merged/ :
    ./merged/
    
  • 如果我们直接删除lower2里的文件会怎样呢?
[email protected]:~/playoverlay$ tree
.
├── lower1
│   └── l1.txt
├── lower2
│   └── l2.txt
├── lower3
│   └── l3.txt
├── merged
│   ├── hahahahhha
│   ├── l2.txt
│   └── l3.txt
├── upper
│   ├── hahahahhha
│   └── l1.txt
└── work
    └── work [error opening dir]

7 directories, 8 files
[email protected]:~/playoverlay$ rm lower2/l2.txt
[email protected]:~/playoverlay$ tree
.
├── lower1
│   └── l1.txt
├── lower2
├── lower3
│   └── l3.txt
├── merged
│   ├── hahahahhha
│   └── l3.txt
├── upper
│   ├── hahahahhha
│   └── l1.txt
└── work
    └── work [error opening dir]

7 directories, 6 files
[email protected]:~/playoverlay$
当然是上边就看不到了。

实现,就去看下边的 overlay.txt,用法,就看ArchWiki和Docker那个文档,就不赘述了。另外:

  • 可以使用mount打印出当前挂载的overlayfs
  • 用Docker起容器之后,可以用mount打印出挂载的overlayfs,然后探索探索Docker是怎么使用overlayfs的

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK