这是关于在ext4文件系统上设置项目配额/目录配额。在 ext4 文件系统中允许项目配额的补丁是通过补丁 https://lore.kernel.org/patchwork/patch/541895/提交的。
我已经尝试了以下步骤(然后是相关命令(: 1. 在块设备上创建文件系统 mkfs.ext4/dev/nvme0n1
-
>启用项目配额 tune2fs -o project -Q prjquota/dev/nvme0n1
-
挂载块设备: mount -o prjquota/dev/nvme0n1/test
-
在装载路径上启用配额: quotaon -Pv -F vfsv1/test
-
为项目配额创建项目 ID/项目名称: 回声 51:/测试/第一个>>/etc/项目 echo testproj:51>>/etc/projid
-
编辑与项目用户相关的配额:testproj edquota -P testproj
将软块单元设置为 10,将硬块单元设置为 20
- 符合配额设置完毕
repquota -avugP
报告 设备上的项目配额/dev/nvme0n1 区块宽限期:7天;索引节点宽限期:7天 块限制 文件限制
项目使用软硬恩典使用软硬恩典
testproj -- 0 10 20 0 0 0
- 在/
- test/first 下开始在所述目录上写入/执行 IO
fallocate -l 10G ten.txt
- 我
- 可以看到在所述位置创建了一个大小为 10G 的文件,并且在 #7 中运行上述命令,我看不到消耗的 inode 没有变化。
是否有任何其他步骤可以在 ext4 文件系统上启用配额?
内核版本:4.15.0-36-通用
我相信你缺少一个
chattr +P -p 51 /test/first
/etc/projects似乎只被XFS工具使用。此外,/etc/projid 仅用于漂亮的打印。
仅供参考,这是我想出的程序:
(步骤 0 实际创建块设备:
dd if=/dev/zero of=/tmp/fs bs=1024 count=80000
losetup -f /tmp/fs
losetup -l
(
- 创建一个具有足够大的索引节点的文件系统:
mkfs.ext4 -I 256 /dev/loop0
- 启用项目配额并确保文件系统默认挂载(此处使用带有
-E
的扩展选项,避免在 step3 中使用挂载选项,但也非常偷偷摸摸,因为您在/proc/mounts 中看不到它(
tune2fs -Q prjquota /dev/loop0
tune2fs -E mount_opts=prjquota /dev/loop0
- 挂载它
mount /dev/loop0 /mnt/loop/
命令上的配额似乎没有用,所以跳过这个
设置一个 proj ID,但作为下一个登录您的盒子的系统管理员的纯粹礼貌。实际上不需要
echo testproj:51 >> /etc/projid
- 实际上使您的文件夹成为项目的一部分(列表中缺少(
mkdir abc
chattr +P -p 51 abc
- 编辑配额。让我们使用 setquota 工具,它有朝一日可以在一些 ansible 剧本中使用,这与运行交互式编辑器的 edquota 不同:
setquota -P testproj 0 1234 0 0 /mnt/loop/
- 确认配额已设置
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
- 验证它是否有效:
作为普通用户:
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
- 验证作为普通用户,您可以轻松转义它:
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?,回复:ext4 和项目配额错误(/功能(