[英]Project Quotas in ext4
这是关于在 ext4 文件系统上设置项目配额/目录配额。 允许在 ext4 文件系统中使用 Project Quotas 的补丁是通过补丁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/项目名称:echo 51:/test/first >> /etc/projects echo testproj:51 >> /etc/projid
编辑与项目用户相关的配额:testproj edquota -P testproj
设置软块单位为10,硬单位为20
代表配额 -avugP
设备上的项目配额报告 /dev/nvme0n1 块宽限时间:7 天; inode 宽限时间:7 天 块限制 文件限制
测试项目 -- 0 10 20 0 0 0
fallocate -l 10G 十.txt
是否还有其他步骤可以在 ext4 文件系统上启用配额?
内核版本:4.15.0-36-generic
我相信你错过了一个
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 -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
这里完全填满了文件系统。
编辑:有关项目配额限制的更多信息Re:项目配额文件所有者可以更改其项目 ID? , Re: ext4 和项目配额错误 (/ features)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.