容器中读写的文件咋变慢了?
- OverlayFS各层存储的关系:
OverlayFS 会 mount 两层目录,分别是 lower 层和 upper 层;
upper 层的文件会覆盖 lower 层的文件;
我们在 merged/ 目录里做文件操作,具体包括这三种。
- 新建文件,这个文件会出现在 upper/ 目录中。
- 删除文件,如果我们删除"in_upper.txt",那么这个文件会在 upper/ 目录中消失。如果删除"in_lower.txt", 在 lower/ 目录里的"in_lower.txt"文件不会有变化,只是在 upper/ 目录中增加了一个特殊文件来告诉 OverlayFS,"in_lower.txt’这个文件不能出现在 merged/ 里了,这就表示它已经被删除了。
- 修改文件,类似如果修改"in_lower.txt",那么就会在 upper/ 目录中新建一个"in_lower.txt"文件,包含更新的内容,而在 lower/ 中的原来的实际文件"in_lower.txt"不会改变。
- 使用容器文件系统的作用:减少相同镜像文件在同一个节点上的数据冗余,可以节省磁盘空间,也可以减少镜像文件下载占用的网络资源。
容器为啥把宿主机的磁盘写满了?
- XFS需要开启quota属性
对于根目录来说,这个参数必须作为一个内核启动的参数"rootflags=pquota",这样设置就可以保证根目录在启动挂载的时候,带上 XFS Quota 的特性并且支持 Project 模式。
查看内核是否开启对应参数:
- 饭粒:设置目录容量配额
- 新建的目录 /tmp/xfs_prjquota,我们想对它做 Quota 限制。所以在这里要对它打上一个 Project ID。
- 通过 xfs_quota 这条命令,我们给 /tmp/xfs_prjquota 打上 Project ID 值 101。
- 使用 xfs_quota 命令,对 101(我们刚才建立的这个 Project ID)做 Quota 限制。
- 尝试写入数据
1. # mkdir -p /tmp/xfs_prjquota 2. # xfs_quota -x -c 'project -s -p /tmp/xfs_prjquota 101' / Setting up project 101 (path /tmp/xfs_prjquota)... Processed 1 (/etc/projects and cmdline) paths for project 101 with recursion depth infinite (-1). 3. # xfs_quota -x -c 'limit -p bhard=10m 101' / 4. # dd if=/dev/zero of=/tmp/xfs_prjquota/test.file bs=102