Ceph Mimic版本设置CephFS配额
CephFS 允许在系统中的任何目录上设置配额。配额可以限制字节数或目录层次结构中该点下存储的文件数。
限制
-
配额是合作的和非对抗性的。CephFS 配额依赖于挂载文件系统的客户端的合作,以在达到限制时停止写入程序。无法阻止已修改或对抗性客户端写入所需的尽可能多的数据。不应依赖配额来防止在客户端完全不受信任的环境中填充系统。
-
配额不精确。达到配额限制后,正在写入文件系统的进程将在短时间内停止。他们将不可避免地被允许写入超过配置限制的一些数据量。他们能够超过配额多远主要取决于时间量,而不是数据量。一般来说,写入器将在超过配置限制的 10 秒内停止。
-
配额在内核客户端 4.17 及更高版本中实现。 用户空间客户端(libcephfs、ceph-fuse)支持配额。Linux 内核客户端 >= 4.17 支持 CephFS 配额,但仅限于模拟+集群。内核客户端(甚至是最新版本)将无法处理旧集群上的配额,即使它们可能能够设置配额扩展属性。
-
与基于路径的挂载限制一起使用时,必须仔细配置配额。客户端需要访问配置了配额的目录 inode 才能强制执行。如果客户端基于 MDS 能力限制了对特定路径的访问(例如,
/home/user
),并且在他们无权访问的祖先目录(例如,/home
)上配置了配额,则客户端不会强制执行它。当使用基于路径的访问限制时,请务必在客户端也被限制的目录(例如,/home/user
)或嵌套在它下面的东西上配置配额。
配置
像 CephFS 中的大多数其他东西一样,配额是使用虚拟扩展属性配置的:
-
ceph.quota.max_files
– 文件限制 -
ceph.quota.max_bytes
– 字节限制
如果属性出现在目录 inode 上,则表示在那里配置了配额。如果它们不存在,则不会在该目录上设置配额(尽管仍可能在父目录上配置配额)。
设置配额:
setfattr -n ceph.quota.max_bytes -v 100000000 /some/dir # 100 MB
setfattr -n ceph.quota.max_files -v 10000 /some/dir # 10,000 files
查看配额设置:
getfattr -n ceph.quota.max_bytes /some/dir
getfattr -n ceph.quota.max_files /some/dir
请注意,如果扩展属性的值是
0
,则表示未设置配额。
要删除配额:
setfattr -n ceph.quota.max_bytes -v 0 /some/dir
setfattr -n ceph.quota.max_files -v 0 /some/dir