如何确定quota(1)块大小?

如何确定quota(1)块大小?

谷歌已经解析了这篇杜克大学 IT 知识库文章进入信息卡声称任何人搜索“linux配额块大小”

块配额是对帐户可以使用的实际磁盘空间量的限制。此空间以 1 KB 块为单位(1 KB = 1024 字节或字符)。

在这个网站上快速搜索后发现这个答案指的是其他“块大小”的定义,包括 EXT4 的:

典型的块大小为 4KiB。

我闲逛了一下这些源文件有点,但他们的代码注释很少,我无法理解它。

我还隐隐约约认为报告quota(1)关联文件系统特定块中的“块大小”(大小而不是像 1KiB 这样的通用常量),但是我怎么能核实这?配额工具代码库和文件系统驱动程序代码库之间的联系点在哪里?

答案1

块大小没有通用常数; “UNIX 编程环境”(1984) 第 50 页指出du(1)

文件名很明显;这些数字是每个文件存储的磁盘块数(通常为 512 或 1024 字节)。

4096现在也很流行。

话虽这么说,对于http://sourceforge.net/projects/linuxquota/edquota(8) 文档指出的 工具(可能与其他实现不同)

默认情况下,块使用情况和限制以千字节(1024 字节)块的倍数进行报告和解释。符号 K、M、G 和 T 可以附加到数值上以表示 kibibytes、mebibytes、gibibytes 和 tebibytes。

xfs_quota(8)可能会发现

每个限制有四个数字:当前使用量、软限制(配额)、硬限制和时间限制。软限制是用户期望保持在以下的 1K 块(或文件)数量。 ... 报告 [ -gpu ] [ -bir ] [ -ahntlLNU ] [ -f file ] 报告文件系统配额信息。这将报告指定配额类型(u/g/p 和/或块/索引节点/实时)的文件系统的所有配额使用情况。默认情况下,它以 1KB 为单位报告块。 -h 选项以类似于 df(1) 命令的“人类可读”格式进行报告。

“解释为...的倍数”可以轻松支持 4096;-b 4096配额系统应将文件系统上消耗 1 个 4096 块的用户报告为消耗 4 个 1024 块。对于 512 块文件系统的 1024 字节镜头来说,这可能稍微不准确。然而根据mkfs.ext2EXT2 仅支持 1024 块或更大:

选项 -b block-size 指定块的大小(以字节为单位)。有效的块大小值为每块 1024、2048 和 4096 字节。

因此,只要程序能够正确计算,将这些转换为 1024 字节进行显示就不会出错。

XFS 允许您创建-b 512文件系统,因此一个简单的验证测试是创建一个-b 512文件系统和一个-b 1024文件系统,在它们上启用配额,并为用户在两者上写入 512 字节。如果 1024-for-quota-display 成立,则两者都应显示消耗了 1 个块。然后再写入 512 个字节,它们仍然应该显示已使用 1 个块。

head -c 512 /dev/zero > a_test_file

否则,您可以使用-b 4096文件系统进行测试,并查看配额是否以 1024 为单位报告,如上面列出的配额或文件系统的文档所示。对于其他配额软件,请查看文档,并通过执行文件写入测试进行验证。文件写入测试是了解硬限制是否有效、警告和报告是否良好、是否存在合适的文档等的好方法。

相关内容