序言被严重贬低,虚拟抽象,实际上不知道它是虚拟机、容器还是物理机。
容器最常见的文件系统是overlay文件系统,知道这有什么用呢?
overlay文件系统在使用容器时,默认情况下都可以使用overlay的驱动程序进行存储,提高性能,而且在使用overlay2的驱动程序时,可以明显减少索引节点的使用量,所以一般情况下可以使用只是在使用磁盘的时候,如果磁盘的索引节点格式化了的话,就是磁盘的索引节点
如果使用overlay2文件系统,overlay驱动程序将自动加载。 也就是说,当badc启动docker进程时,模块将自动加载。
启动容器时,相应的目录将自动装载。 一个是合并目录,即容器层所在的目录,另一个是共享内存区域。 使用挂载进行查看时,可以看到文件系统的分层结构,并将其划分为低层,以存储只读信息。 合并层是表示,也就是容器层,为了节约相应的空间,所有的低层都是通过链路实现的。 work目录是主要在overlay内部使用的目录,您可以在下载时查看。
link上的文件位于最低层。 这是一个指向内部短名称的链接指向文件目录,并存在表示其指向的小写l文件。 lower层是只读层,由docker自行管理。
运行容器时,将生成两个目录。 一个在init目录中初始化,另一个是实际使用的目录,所有挂载文件也放在此目录中。 其中lower表示lower,即较低级别的只读,对于容器层是合并目录,合并目录仅在运行时存在
diff目录的存在是放置添加了容器并删除了容器的文件的目录,并且相当于读写层。
容器的内容发生变化时,对应文件夹中的内容也发生变化。
diff目录记录相关的更改和添加删除的文件,合并目录中显示所有文件。
总结: overlay文件存储的覆盖方式与中文类似,即合并所有目录,并挂载在一个目录上,从而作为一个目录进行响应。 以上所述,有什么作用?
overlay文件系统1背景
使用微服务体系结构:数百个服务位于几台物理计算机上,每台物理计算机上运行几十个docker。 突然,大量服务发出警报,尝试重新启动。 无法正常启动。
2查看物理机的磁盘空间
当大量容器无法启动时,物理机的磁盘空间通常不足,从物理机的磁盘空间利用率可以看出这是正常的。
查看经纪人日志
发生错误,无法创建文件。 也就是说,达到了磁盘配额。 这里的模拟太复杂了,可以使用grpjquota和项目quota两种方法。 总之,容器的磁盘空间已满,容器无法启动。
4释放容器的磁盘空间
通常,要释放磁盘,请使用df找到相应的合并目录,然后使用磁盘空间。 如果容器无法启动,则必须使用inspect找到与容器相关的diff目录并清除相关的磁盘空间。 在上图中,您可以看到创建文件直接写入diff目录。
其实,最简单的方法就是直接删除容器,重新拔一个容器。 当然,是否保留相关日志,容器是否有状态,无状态的就直接删除,然后重新启动镜像即可。
文件系统、挂载、吊在树上? 不可能。 联合文件系统,Emm,新思路。 使用overlay fs时,最有趣的地方是可以删除、创建和修改容器中的文件,而不进入容器,但删除时可能会出现问题。 慎重删除
删除文件时,反应了另一种想法。 如何找到容器的相关文件。 只读、读写都在不同的目录中。
限制,到处都有限制。 使用容器时,不仅要限制容器使用的磁盘,还必须限制容器使用的cpu和容器使用的内存。 这三个参数是基本的。