我弄清楚了如何在 ZFS 中设置块配额Oracle 网站上的文档。
不过,我没看到是否/如何设置用户获得的 inode 数量的配额。我知道 ZFS 文件系统可能没有限制 inode 的数量,但当我的用户创建一个目录树,深度为 10,000 个目录,每个目录包含 300 个文件时,处理起来有点麻烦。
如果您可以将其设置在 Oracle 存储设备中,则可以获得加分...
答案1
简短答案
不
长答案
引自“第 1 章 Oracle Solaris ZFS 文件系统(简介)”:
所有元数据都是动态分配的,因此无需预先分配 inode 或在首次创建文件系统时限制其可扩展性。
...文件系统的数量或文件系统内可包含的文件数量没有限制。
2009 年,zfs-讨论邮件列表。
我找不到有关如何在 ZFS 中设置文件配额(即每个文件系统/目录的最大文件数)或目录配额(特定目录中的文件可以使用的最大大小)的任何说明。
那是因为它不存在。
这是 2010 年 8 月邮件列表中的另一句精彩引言:
回复:[zfs-discuss] ZFS 文件系统的文件系统所有权详细信息。
ZFS 没有固定的 inode 数量,因此无法计算出限制。ZFS 使用空间来存储元数据,因此只要您有可用空间,就可以将其用于存储元数据。
在2010 年的另一篇文章讨论了如何根据总空间计算 ZFS 文件系统的 inode 数量(还提供了一个有用的脚本)。
引用其中一条回复:
在 ZFS 中,当您用尽空间时,inode 也会同时用尽。
可能的解决方案
但是,您可以通过在 ZFS zvols 上使用 UFS 文件系统来强制执行用户级 inode 配额。
答案2
inode quotas
可以为 OpenZFS 进行设置。
该zfs userspace
命令显示所有 ID 的空间和 inode 使用情况。
该zfs set
命令可用于设置磁盘/inode 配额
# zfs userspace rpool/root
TYPE NAME USED QUOTA OBJUSED OBJQUOTA
POSIX User root 3.01G none 78.4K none
...
# zfs get userquota@root rpool/root
# zfs get userobjquota@root rpool/root
# zfs set userquota@user1=10G rpool/root
# zfs set userobjquota@user1=1000 rpool/root
请注意,此类配额也可以按组或项目设置。
zfsprops
请参阅、zfs-userspace
和zfs-set
的手册页以zfs-get
了解更多信息。
这个问题是普遍提出的,因此尽管solaris
我回答的是 OpenZFS 标签,但这是大多数发行版使用的实现Linux
。