12 | 容器文件Quota:容器为什么把宿主机的磁盘写满了?
该思维导图由 AI 生成,仅供参考
问题再现
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了容器文件Quota的重要性以及如何通过XFS Quota的Project模式来限制容器对宿主机磁盘的写入量。首先介绍了OverlayFS的工作原理和容器对文件系统的写入方式,以及可能导致宿主机磁盘被写满的情况。随后详细介绍了XFS文件系统的Quota特性,重点讲解了Project模式的工作原理和使用方法,并通过实际操作演示了如何限制容器对宿主机磁盘的写入量。文章还探讨了Docker中如何实现XFS Quota限制以及如何应对不是由Docker启动的容器的情况。总的来说,本文通过深入浅出的方式介绍了容器文件Quota的技术特点和解决方法,对于需要深入了解容器文件系统和磁盘写入限制的读者具有很高的参考价值。
《容器实战高手课》,新⼈⾸单¥59
全部留言(12)
- 最新
- 精选
- 莫名容器 quota 的局限性:容器通常采用 overlay2 driver,仅支持在宿主文件系统 xfs 上开启 quota 功能。意味着 overlay over ext4 不支持 quota 功能,而实际生产环境上 ext4 的使用远多于 xfs。
作者回复: @莫名, 的确,我一直使用的是xfs, 对于ext4 quota的功能没有测试过。 不过我之前搜索过, ext4在2016年就应该支持project quota了。我们可以一起再确认一下。 ``` commit 689c958cbe6be4f211b40747951a3ba2c73b6715 Author: Li Xi <pkuelelixi@gmail.com> Date: Fri Jan 8 16:01:22 2016 -0500 ext4: add project quota support This patch adds mount options for enabling/disabling project quota accounting and enforcement. A new specific inode is also used for project quota accounting. [ Includes fix from Dan Carpenter to crrect error checking from dqget(). ] Signed-off-by: Li Xi <lixi@ddn.com> Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org> Signed-off-by: Theodore Ts'o <tytso@mit.edu> Reviewed-by: Andreas Dilger <adilger@dilger.ca> Reviewed-by: Jan Kara <jack@suse.cz>
2020-12-11320 - Geek2014上篇的评论中提到:“我们在2019年初就不用docker了。” 这篇中,老师提到了containerd,是说你们已经用containerd替换了docker吗?有机会对containerd和docker之间的使用对比做个介绍吗?
作者回复: @Geek2014 对的,我们已经使用containerd快两年了。 这是之前我们组做的分享: https://www.infoq.cn/article/odslclsjvo8bnx*mbrbk
2020-12-11213 - Sun老师,我觉得可以补充下 现在k8s 1.14 开始,默认开启 LocalStorageCapacityIsolation, 可以通过限制resources.limits.ephemeral-storage 和resources.requests.ephemeral-storage 来保护宿主机 rootfs了。
作者回复: @Sun, 谢谢,很好的补充。 k8s 通过du来检查ephemeral-storage相关volume/目录的大小,然后如果超出limit就evict pod。 du的开销会比较大,evict pod比较适合stateless pod。不过最新的k8s应该在用filesystem quota来限制emptyDir的大小了。
2020-12-22212 - 徐少文老师,CGroup子系统中没有对硬盘使用量进行限制的功能模块吗?除了通过文件系统的quota去限制还有其他的方法吗?
作者回复: cgroup里没有对磁盘容量使用限制的模块。
2021-07-134 - Helios老师能说下你们应用容器Quota的场景么。对于无状态服务一般就是日志会写文件了,离线任务比如机器学习的模型也不敢给人家限制呀😂
作者回复: 如果用户需要使用大容量的磁盘空间,需要使用volume. Quota主要来限制容器的rootfs, 这个rootfs一般是在host的磁盘会和别的容器共享,所以需要对它做限制。
2020-12-1323 - Action老师 为什么overlayFS 并不是docker_id 呢? [root@localhost overlay2]# docker inspect 5440662c8db [ { "Id": "5440662c8db65d5d9ab522e0be1a3911584c492527fcde334c3fdec090cd3857", "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55", "GraphDriver": { "Data": { "LowerDir": "/home/data/docker/overlay2/4146b7c314a97b46695a59ccdc323709eda7177b3e91ed30d3f4f9326a061584-init/diff:/home/data/docker/overlay2/dc1e8c89044058319c4e0b6917603f3ed8972cd155bfced0c7c0c2509ddaae14/diff", "MergedDir": "/home/data/docker/overlay2/4146b7c314a97b46695a59ccdc323709eda7177b3e91ed30d3f4f9326a061584/merged", "UpperDir": "/home/data/docker/overlay2/4146b7c314a97b46695a59ccdc323709eda7177b3e91ed30d3f4f9326a061584/diff", "WorkDir": "/home/data/docker/overlay2/4146b7c314a97b46695a59ccdc323709eda7177b3e91ed30d3f4f9326a061584/work" }, "Name": "overlay2" }, } ]
作者回复: 看moby(docker)代码里,docker自己对这个目录自己做了一个随机数的生成,具体原因不清楚。
2020-12-161 - 宝仔这个是一定要基于xfs文件系统吗?如果是ext4文件系统呢?
作者回复: 我没有在ext4上测试过,不过通过内核信息,还有网上别人的尝试,ext4应该也是支持(project)quota的。 https://discuss.linuxcontainers.org/t/how-do-i-set-up-the-project-quota-needed-for-limiting-container-storage-size-for-the-dir-backend-on-ubuntu-18-04/7311 ``` commit 689c958cbe6be4f211b40747951a3ba2c73b6715 Author: Li Xi <pkuelelixi@gmail.com> Date: Fri Jan 8 16:01:22 2016 -0500 ext4: add project quota support This patch adds mount options for enabling/disabling project quota accounting and enforcement. A new specific inode is also used for project quota accounting. [ Includes fix from Dan Carpenter to crrect error checking from dqget(). ] Signed-off-by: Li Xi <lixi@ddn.com> Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org> Signed-off-by: Theodore Ts'o <tytso@mit.edu> Reviewed-by: Andreas Dilger <adilger@dilger.ca> Reviewed-by: Jan Kara <jack@suse.cz>
2020-12-111 - DayDayUp老师讲的太好了,不知道面试贵司会不会有机会呢?老师在eBay哪个team啊?应届生要吗???
作者回复: eBay cloud team. 我们一直在招人的。
2021-11-28 - 谢哈哈可以通过xfs_quota -x -c "report -pbih " 目录名称查询projectid2020-12-116
- 上邪忘川[root@localhost ~]# xfs_quota -x -c 'report -h /tmp/xfs_prjquota' Project quota on / (/dev/mapper/centos-root) Blocks Project ID Used Soft Hard Warn/Grace ---------- --------------------------------- #0 3.2G 0 0 00 [------] #2 8K 100M 100M 00 [------] #3 100M 100M 100M 00 [------] #101 10M 0 10M 00 [------]2020-12-113