在HDFS中,管理员可以为每一个目录设置基于名称或者空间上的配额。可以设置名称配额和空间配额,名称配额和空间配额可以单独设置。
名称配额(Name Quota)
名称配额是在对应的目录下所有文件和目录名称的数量上的限制。当超过这个配额的时候,文件或目录就会创建失败,重命名后名称配额仍然有效。如果重命名操作违反配额的限制,那么重命名会失败,新建的目录不会有任何配额设置,名字配额的上限是Long.Max_Value,如果配额为1,那么这个目录会强制为空,因为目录自身也会占用1个配额。配额的设置是持久化在fsimage中,如果fsimage发现违反了配额限制,会输出警告。
只有管理员可以设置名称配额和空间配额。下面的命令设置/清理名称配额:
1 | # 设置目录的名称配额 |
空间配额(Space Quota)
空间配额是目录的空间大小限制。如果超过这个配额,块写入操作会失败。副本也算配额中的一部分。空间配额为0的时候,可以创建文件,但是不能向文件中写入内容。创建空间配额的命令如下:
1 | # 设置目录的空间配额 |
其中可以通过1
fs -count -q directory ... directory
使用-q选项,可以显示目录的名称配额,剩余名称配额,空间配额,可用空间配额。如果目录没有设置配额,会显示为none和inf。