linux overlay 文件系统

4 min read

Overlay文件系统是Linux内核提供的一个联合挂载(Union Mount)文件系统,它允许将两个或多个不同的文件系统层叠在一起,并呈现为一个单一的虚拟文件系统。

Overlay文件系统通常使用两个层级:

  1. Lower层:表示底层的只读文件系统,可以是任何已经挂载的文件系统,比如EXT4或XFS等。
  2. Upper层:表示只写的可写层,主要用于存储用户的修改。这一层通常是一个tmpfs文件系统。

当使用Overlay文件系统时,操作系统首先会读取lower层的文件,如果文件不存在,则读取upper层的文件,如果文件在lower和upper层都存在时,系统会优先访问upper层的文件,而不会读取lower层的文件。这样,用户对文件的修改只会保存在upper层中,而不会影响到lower层。

Overlay文件系统有几个优点:

  • 轻量级:它只需少量的内存和处理器资源。
  • 高效性:只修改的文件被覆盖在已存在的文件中,而不是像Copy-on-Write(COW)文件系统那样在另一个地方创建一个新文件。
  • 可读性:lower层的文件系统可以保持只读,以避免不经意地修改底层文件系统。

Overlay文件系统广泛应用于容器技术中,如Docker和Kubernetes等。它可以用于以“层式”的方式构建和管理镜像,使得容器的创建和运行更加高效和可靠。