首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ext4中的项目定额

ext4中的项目定额
EN

Stack Overflow用户
提问于 2018-10-05 12:12:19
回答 1查看 3.5K关注 0票数 2

这与在ext4文件系统上设置项目配额/目录配额有关。允许ext4文件系统中的项目配额的修补程序是通过修补程序https://lore.kernel.org/patchwork/patch/541895/提交的。

我尝试了以下步骤(后面跟着相关命令):1.在块设备mkfs.ext4 /dev/nvme0n1上创建文件系统

  1. 启用项目配额tune2fs -O项目-Q /dev/nvme0n1
  2. 挂载块设备:-o prj配额/dev/nvme0n1 /test
  3. 在挂载路径上启用配额: quotaon -F vfsv1 /test
  4. 为项目配额创建项目ID /项目名称: echo 51:/test/first >> /etc/projects echo testproj:51 >> /etc/projid
  5. 编辑与Project相关的配额:testprojed配额-P testproj

将软块单元设置为10,硬单元设置为20。

  1. 符合规定的配额

回购配额-avugP

设备/dev/nvme0n1上的项目配额报告:7 7days;Inode优雅时间:7 7days阻止限制文件限制

工程使用软硬恩典软硬恩典

testproj -0 10 20 0 0 0

  1. 开始在/test/first目录下编写/执行IO

假定位-l 10G ten.txt

  1. 我可以看到,在上述位置创建了一个大小为10G的文件,并在#7中运行上面的命令,我可以看到inode中没有任何变化。

是否有其他步骤在ext4文件系统上启用配额?

内核版本:4.15.0-36-泛型

EN

回答 1

Stack Overflow用户

发布于 2020-04-27 17:45:02

我相信你错过了一个

代码语言:javascript
复制
chattr +P -p 51 /test/first

/etc/project似乎只被XFS工具使用。此外,/etc/projid仅用于漂亮的打印。

这是我想出的方法:

(步骤0实际创建块设备:

代码语言:javascript
复制
dd if=/dev/zero of=/tmp/fs bs=1024 count=80000
losetup -f /tmp/fs
losetup -l

)

  1. 创建一个具有足够大节点的文件系统:
代码语言:javascript
复制
mkfs.ext4 -I 256 /dev/loop0
  1. 启用项目配额,并确保文件系统默认挂载(这里使用扩展选项和-E,避免在step3中使用挂载选项,但由于您在/proc/step3挂载中看不到它,所以也很狡猾)
代码语言:javascript
复制
tune2fs -Q prjquota  /dev/loop0
tune2fs -E mount_opts=prjquota /dev/loop0
  1. 挂上
代码语言:javascript
复制
mount /dev/loop0 /mnt/loop/
  1. 命令上的配额似乎没有用,所以跳过这个命令。
  2. 设置一个proj id,但作为对下一个sys管理员登录到您的框的纯粹礼貌。实际上不需要
代码语言:javascript
复制
echo testproj:51 >> /etc/projid
  1. 实际上,将您的文件夹作为项目的一部分(列表中缺少的)
代码语言:javascript
复制
mkdir abc
chattr +P -p 51 abc
  1. 编辑配额。让我们使用set配额工具,它以后可能会在某些ansible剧本中使用,而不是运行交互式编辑器的ed配额:
代码语言:javascript
复制
setquota -P testproj 0 1234 0 0 /mnt/loop/
  1. 确认配额已设定
代码语言:javascript
复制
repquota  -P   /mnt/loop/
# in some parsable format, assuming you wrote some simple enough strings in projid, since the xml formatter is pretty basic
repquota -P /mnt/loop/ -O xml
  1. 核实它是否有效:

作为普通用户:

代码语言:javascript
复制
dd if=/dev/zero of=someoutput oflag=append
loop0: write failed, project block limit reached.
dd: writing to 'someoutput': Disk quota exceeded
2471+0 records in
2470+0 records out
1264640 bytes (1.3 MB, 1.2 MiB) copied, 0.00985608 s, 128 MB/s
  1. 不过,请验证您是否可以以普通用户的身份对其进行简单的转义:
代码语言:javascript
复制
chattr  -p 43 someoutput
dd if=/dev/zero of=someoutput oflag=append
dd: writing to 'someoutput': No space left on device
127427+0 records in
127426+0 records out
65242112 bytes (65 MB, 62 MiB) copied, 0.561987 s, 116 MB/s

这里完全填充了文件系统。

编辑:关于项目配额项目配额文件所有者可以更改其项目ID吗?Re: ext4和项目配额缺陷(/特性)的限制的更多信息

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52665377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档