什么是合成文件系统?
合成文件系统是一种虚拟文件系统,它可以将两个文件夹中的内容合成一个新的合成文件夹,在该合成文件夹中可以看到先前两个文件夹中的全部内容。用于合成合成文件夹的两个文件夹分为上端文件夹和下端文件夹,一般地,上端文件夹中的同名文件可覆盖下端文件,而对合成后合成文件夹中文件的改动也将反映到上端文件夹。常见的合成文件系统有aufs和overlayfs,前者是由一日本人所开发的,由于代码冗长效率差,因此长期未进入Linux内核,后者经常在嵌入式设备中用于挂载根目录,性能好且有望加入Linux内核。Docker默认采用aufs作为其文件系统驱动,为演示合成文件系统,下面笔者将采用overlayfs做一个演示。
首先,笔者建立fstest 文件夹,并在其中建立basefs 、overlay、fsroot和workdir 子文件夹。并在 basefs 中建立类似Unix文件系统的文件夹结构,在 overlay 下建立 data 子文件夹,整个目录如下所示
#tree fstest fstest ├── basefs │ ├── bin │ ├── boot │ ├── dev │ ├── etc │ ├── home │ ├── lib │ ├── lib64 │ ├── media blog.nvacg.org版权所有 │ ├── mnt │ ├── opt │ ├── proc │ ├── sbin │ ├── sys │ ├── tmp │ ├── usr │ └── var ├── overlay │ └── data ├── rootfs └── workdir |
接下去笔者将rootfs作为合成文件夹, basefs作为下级文件夹, overlay作为上级文件夹进行挂载:
#mount -t overlay fstest/overlay -o upperdir=fstest/overlay,lowerdir=fstest/basefs,workdir=fstest/workdir fstest/rootfs blog.nvacg.org版权所有 |
再看下rootfs文件夹内的状况
#ls fstest/rootfs bin data etc lib media opt sbin tmp var boot dev home lib64 mnt proc sys usr |
可以看到rootfs文件夹中不仅显示了下级文件夹basefs中的文件夹,同时也显示了上级文件夹overlay中所独有的data目录。接下来我们向合成目录rootfs写入一个文件看看。
#touch fstest/rootfs/new #ls fstest/rootfs blog.nvacg.org版权所有 bin data etc lib media new proc sys usr boot dev home lib64 mnt opt sbin tmp var |
现在合成文件夹里已经有了new这个文件,回头再看上级文件夹overlay
#ls fstest/overlay/ data new |
不难发现,对于合成文件夹所做的变更实际是应用到了上级文件夹中。
现在我们将docker的存储驱动由aufs改为overlayfs,然后从centos镜像新建一个实例,并在其根目录新建一个文件new看看
#docker run -it --name main centos [root@1ac311e2e56a /] #touch new [root@1ac311e2e56a /] #ls anaconda-post.log dev home lib64 media new proc run srv tmp var bin etc lib lost+found mnt opt root sbin sys usr [root@1ac311e2e56a /] #exit blog.nvacg.org版权所有 #docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1ac311e2e56a centos:latest "/bin/bash" About a minute ago Exited (0) About a minute ago main |
现在到docker数据目录的overlay/1ac311e2e56a子目录看下
#ls /data/docker_instance/overlay/1ac311e2e56abe889028682af55f1c9b459be2ef97a8612bb9522401eadc7211/upper/ dev etc new root |
可以看到刚才在虚拟环境中建立的文件new
请注意,本站的所有文章均要求阁下在转载时注明出处和原作者,阁下转载本站文章即表示阁下同意并遵守此规程,除非特别注明转载出处,否则文章即为其发布者所著。本站及文章作者保留文章的著作权并有权在阁下违反上述规程时予以追究。
本文链接地址: 初识DOCKER(7)–合成文件系统