Linux有什么办法可以限制目录的大小?

发布于 2022-09-04 13:25:01 字数 178 浏览 35 评论 0

需求描述如下:
每一个请求到来,都会自动在某个确定目录下建立一个对应该请求的目录。在目录已事先存在的情况下,如何限制该目录的大小,保证当目录下所有的文件和文件夹大小之和不能超过指定值。

网上搜到说用xfs_quota,但是很奇怪就是有的时候能限制,有的时候不能限制。所以觉得不靠谱。原谅在下实在弱鸡。。求各位大神支招。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

时光匆匆的小流年 2022-09-11 13:25:02

写脚本。
每次添加的时候都判断文件夹大小

吃→可爱长大的 2022-09-11 13:25:02

提供下思路,可以写定时脚本crontab,每分钟去判断文件大小,如果超过限定就关闭目录写的权限。另外一种是格式化限定需求大小的文件,挂载到已存在的目录下

看海 2022-09-11 13:25:02

不知道磁盘配额能不能帮到你

情话墙 2022-09-11 13:25:01

最终我选择的方案为磁盘限额,xfs quota。具体实施步骤如下:

1.建立一个独立的分区,并且格式化文件系统为xfs。(我用的是ceph的rbd,然后将rbd对应的设备格式化为xfs文件系统,再挂载到本地目录。)

2.问题已经说过,每一个请求到来时都会在某个确定目录(称为父目录我这的父目录是/var/lib/docker)下建立对应的子目录。可以在服务尚未启动前将 /var/lib/docker 挂载到xfs文件系统分区:

mount -o pquota /dev/rbd0 /var/lib/docker

注意pquota选项一定要加上,表示启用project quota

3.对于每一个请求,分别执行以下命令。假设当前请求所对应的需要限制的目录路径为:/var/lib/docker/cone

(1)echo "id:/var/lib/docker/cone" >> /etc/projects
(2)echo "projectName:id" >> /etc/projid
(3)xfs_quota -x -c 'project -s projectName'
(4)xfs_quota -x -c 'limit -p bhard=1G projectName' /var/lib/docker

特别注意:上面命令中的id表示数字串,例如123,但不能是单独的0,如果是0那么限制就不会起作用

4.可以使用 xfs_quota -x -c 'report -h' /var/lib/docker 查看配额使用信息
可以使用 xfs_quota -x -c 'print' /var/lib/docker 查看限制了哪些目录

5.测试
随便进入一个目录,使用dd命令进行测试,例如:

dd if=/dev/zero of=data bs=1G count=3 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文