您可以在 ZFS 中设置 inode 配额吗?

您可以在 ZFS 中设置 inode 配额吗?

我弄清楚了如何在 ZFS 中设置块配额Oracle 网站上的文档

不过,我没看到是否/如何设置用户获得的 inode 数量的配额。我知道 ZFS 文件系统可能没有限制 inode 的数量,但当我的用户创建一个目录树,深度为 10,000 个目录,每个目录包含 300 个文件时,处理起来有点麻烦。

如果您可以将其设置在 Oracle 存储设备中,则可以获得加分...

答案1

简短答案

长答案

引自“第 1 章 Oracle Solaris ZFS 文件系统(简介)”

所有元数据都是动态分配的,因此无需预先分配 inode 或在首次创建文件系统时限制其可扩展性。

...文件系统的数量或文件系统内可包含的文件数量没有限制。

2009 年,zfs-讨论邮件列表。

回复:[zfs-discuss] 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-userspacezfs-set的手册页以zfs-get了解更多信息。

这个问题是普遍提出的,因此尽管solaris我回答的是 OpenZFS 标签,但这是大多数发行版使用的实现Linux

相关内容