Union File System

Union File System, 简称UnionFS,是一种为Linux,FreeBSD,和NetBSD操作系统设计的把其他文件系统联合挂载到一个挂载点的文件系统服务。

它通过使用branch把不同文件系统的文件和目录覆盖,形成一个一致的文件系统。这些branch是只读或者只写的。当对文件进行写操作时候,才会真正的复制

文件进行写操作。实际上本身没有对原来的文件进行修改,可以看做是共享了原来的文件。在写的时候进行修改用到了一种资源管理技术成为写时复制。

写时复制(copy-on write,CoW),也叫作隐式共享,如果一个资源是重复的,那我们没有必要去在拷贝一份。只需要将唯一的一份共享给不同的对象。当某一个对象

需要去修改这个资源时,再去重新复制一份对新复制的进行修改。通过资源共享,可以减少未修改资源复制带来的消耗。在mapbit的垃圾回收算法中也会用到。

AUFS

AUFS ,英文全称是 Advanced Multi-Layered Unification Filesystem ,曾经也叫Acronym Multi-Layered Unification Filesystem 、 Another Multi-Layered Unification Filesystem 。

AUFS 完全重写了早期的 UnionFS 1 .x ,其主要目的是为了可靠性和性能 , 井且引入了 一 些新的功能,比如可写分支的负载均衡 。 AUFS的一些实现已经被纳入UnionFS 2.x 版本。

Docker是如何使用AUFS的

AUFS是docker的第一种存储驱动。AUFS具有快速启动容器、高速利用存储和内存的优点。

image layer 和 AUFS (docker版本不同可能会有区别,我的是在/var/lib/docker下的其他文件夹中)

每一个Docker image都是由一系列read-only layer组成的。image layer的内容都存储在Docker hosts filesystem的/var/lib/docker/aufs/diff目录下.

而/var/lib/docker/aufs/layers目录,则存储着image layer如何堆找这些layer的metadata 。

在装有Docker的机器上执行如下命令

root@leon:/var/lib/docker/overlay2#

什么都没有

拉取镜像后,可以看到在docker pull中的结果显示ubuntu : l5.04镜像一共有4个layer,在
执行命令的结果中也有4个对应的存储文件目录。

container layer 和AUFS(docker版本不同可能会有区别,我的是在/var/lib/docker下的其他文件夹中)

docker使用写时复制,就是说每一点小小的修改都会被复制。但是docker是有很多layer的,修改的只是layer(对以前的layer进行屏蔽,并没有删除)。

这样就避免了复制大文件。对于一个容器而言每个image layer最多只需要复制一次。后续的改动都会在第一次拷贝的 container layer上进行 。

如果要删除file时,AUFS会在container的read-write层生成一个.wh.file文件来隐藏所有 read-only层的file文件。

可以看到新产生的文件夹。里面有各种各样样的配置文件。

写一个AUFS

  1. 创建文件目录,在aufs目录下创建mnt(挂载点),container-layer,以及4个image-layer【x】(x是1-4)。

  2. 将其他文件挂载到刚才创建的mnt上。在mount aufs命令中,没有指定待挂在的5个文件夹的权限,默认的行为是dirs指定的左边第一个目录是

    read-write权限,后续都是read-only权限。

查询文件的权限

可以看到第一个是rw 其他都是ro。

  1. 修改文件
  • 查看mnt 下的image-layer1.txt和 文件夹image-layer1下的该文件。

    两者是一样的。

  • 我们对mnt下的某一个文件进行修改(image-layer1.txt)

  • 对比修改后两个文件的状态

    两者是不一样的。

由此可以看出,对mnt 里的的文件修改并不影响对原文件的修改,那么修改后的文件到底去哪里了呢?

第一个container-layer文件的权限是rw。我们去里面看看.

果然在里面。这就清楚多了。当要修改文件的时候,将文件复制一份
放到container下面即可,之后我们就不是共享原来的文件了,而是拥有了自己的文件。

以上就是AUSF的部分内容。

Union File System的更多相关文章

  1. MIT-6.828-JOS-lab5:File system, Spawn and Shell

    Lab 5: File system, Spawn and Shell tags: mit-6.828 os 概述 本lab将实现JOS的文件系统,只要包括如下四部分: 引入一个文件系统进程(FS进程 ...

  2. MIT6.828 La5 File system, Spawn and Shell

    Lab 5: File system, Spawn and Shell 1. File system preliminaries 在lab中我们要使用的文件系统比大多数"真实"文件 ...

  3. Design and Implementation of the Sun Network File System

    Introduction The network file system(NFS) is a client/service application that provides shared file ...

  4. 乌版图 read-only file system

    今天在启动虚拟机的时候,运行命令svn up的时候,提示lock,并且read-only file system,这个....我是小白啊,怎么办?前辈在专心写代码,不好打扰,果断找度娘啊 于是乎,折腾 ...

  5. File system needs to be upgraded. You have version null and I want version 7

    安装hbase时候报错: File system needs to be upgraded. You have version null and I want version 7 注: 我安装的hba ...

  6. Linux系统启动错误 contains a file system with errors, check forced解决方法

    /dev/sda1 contains a file system with errors, check forced./dev/sda1: Inodes that were part of a cor ...

  7. Linux 执行partprobe命令时遇到Unable to open /dev/sr0 read-write (Read-only file system)

    在使用fdisk创建分区时,我们会使用partprobe命令可以使kernel重新读取分区信息,从而避免重启系统,但是有时候会遇到下面错误信息"Warning: Unable to open ...

  8. 磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]

    1.磁盘基础知识 1.1 物理结构 硬盘的物理结构一般由磁头与碟片.电动机.主控芯片与排线等部件组成:当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁 ...

  9. Linux File System

    目录 . Linux文件系统简介 . 通用文件模型 . VFS相关数据结构 . 处理VFS对象 . 标准函数 1. Linux文件系统简介 Linux系统由数以万计的文件组成,其数据存储在硬盘或者其他 ...

随机推荐

  1. CentOS 7最小安装配置网络

    安装环境: VMware Workstation14 centos 7.5.1804 最小化安装 安装过程: 在系统安装成功后进行网络配置,我这里采用的是动态ip配置.首先得知道网络配置存放的目录: ...

  2. C语言基本语法——函数

    1.什么是函数 2.函数语法 3.函数声明 4.函数调用 5.函数的形参与实参 6.return与exit关键字 7.递归函数 1.什么是函数 • 函数就是一连串语句被组合在一起,并指定了一个名字 • ...

  3. 使用yum方式安装mysql5.6

    1.新开的云服务器,需要检测系统是否自带安装mysql # yum list installed | grep mysql 2.如果发现有系统自带mysql,果断这么干 # yum -y remove ...

  4. apche本地测试,无法访问此网站

  5. Springboot2本地锁实践

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交…. 下面我们利用 ...

  6. Reentrant protected mode kernel using virtual 8086 mode interrupt service routines

    A method for allowing a protected mode kernel to service, in virtual 8086 mode, hardware interrupts ...

  7. HDU——T 2119 Matrix

    http://acm.hdu.edu.cn/showproblem.php?pid=2119 Time Limit: 5000/1000 MS (Java/Others)    Memory Limi ...

  8. 对象不支持“abigimage”属性或方法

    在一个网页中用了一个js插件, js文件引用的没有错,代码也和demo差点儿相同,  可是执行时ie的调试工具报了一个错: 解决方式: jquery文件冲突,发现原来自己引过一个 <script ...

  9. Android sdCard路径问题

    一,获取Android设备的全部存储设备,这里边肯定有一个能用的 StorageManager sm = (StorageManager) context.getSystemService(Conte ...

  10. HDOJ 5299 Circles Game 圆嵌套+树上SG

    将全部的圆化成树,然后就能够转化成树上的删边博弈问题.... Circles Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: ...