什么是 MaxDirSize ?
不可不使用
适用场景
- ONTAP 9
- Cloud Volumes ONTAP
- Data ONTAP 8
问题解答
什么是 MaxDirSize ?
- Maxdirsize 是一个卷级别选项,用于限制目录文件的最大大小。
- Maxdirsize 决定目录可容纳的文件数。
- 默认最大大小为 320 MB
- 大多数环境不需要更改此设置
- 可以根据需要增加默认值 320 MB 。
- 建议不要根据需要配置大小,因为某些目录操作要求整个目录驻留内存。
- 增加 maxdirsize 后,如果不重新创建目录,则无法减小 maxdirsize 。
MaxDirSize 引用的目录是什么?
- maxdirsize 是一个卷级别选项,用于限制该卷中的每个目录
当目录大小达到最大值时会发生什么情况?
- 当目录达到最大默认值或配置的最大 maxdirsize 值时,新文件创建可能会失败。
- 如果正在运行后台清理操作(即快照删除),则可能会继续创建新文件。
- 此外,还会通过 EMS 触发类似以下内容的错误消息:
Mon Oct 25 08:06:04 -0600 [sj-filer01-01: wafl_exempt09: wafl.dir.size.max:error]: Directory size for fileid 10386 in volume vol1 reached the maxdirsize limit.
- 在上述 EMS 中,提及的文件 ID 是目录的索引节点编号。可以使用以下操作步骤 来标识目录路径。
sj-filer01::*> run -node sj-filer01-01
sj-filer01-01>
sj-filer01-01> priv set advanced
sj-filer01-01*>inodepath -v vol1 10386
Inode 10386 in volume vol1 (fsid 0x402) has 1 name.
Volume UUID is: 25cc6243-bf4f-11ec-9f34-00a098d42f51
[ 1] Primary pathname = /vol/vol1/mydir1
sj-filer01-01*>
sj-filer01-01*> exit
logout
sj-filer01::*>
- 或 -
sj-filer01::*> set diag
sj-filer01::*>
sj-filer01::*> volume explore inode -scope vol1.10386 -dump name
found 1026.64/mydir to be inode 1026.30086
name=/mydir1
sj-filer01::*>set admin
如何确定当前的 maxdirsize ?
- 可以使用简单的 "ls -ldH <directory to directory>" 从 NFS 客户端获取目录大小
[root@sj-2_rhel7 ~]# ls -ldh /mnt/mydir
drwxr-xr-x. 2 siva siva 320M Oct 27 14:16 /mnt/mydir1
[root@sj-2_rhel7 ~]#
- 也可以使用以下 原生 ONTAP 命令来标识目录大小(以字节为单位):
sj-filer01::*> set diag
sj-filer01::*>
sj-filer01::*> volume explore inode -scope vol1./mydir1 -dump size
found 1026.64/mydir1 to be inode 1026.30086
size=327580
sj-filer01::*>set admin
注意: 上述命令是一个 diag 权限命令。
注意:可以使用以下命令来标识大小和目录路径:
Mon Oct 25 08:06:04 -0600 [sj-filer01-01: wafl_exempt09: wafl.dir.size.max:error]: Directory size for fileid 10386 in volume vol1 reached the maxdirsize limit. sj-filer01::> set -priv diag sj-filer01::*> volume explore inode -scope vol1.10386 -dump name,size name:/mydir1 size=327580
如何处理 maxdirsize 问题描述?
- 目录达到 maxdirsize 后,您可以通过两种方式解决问题
- 增加 maxdirsize
- 创建一个新目录,并尽可能将新文件放置到新目录中
- 此外,如果从目录中删除了大量文件,则可以通过完成以下步骤来减少目录空间:
- 将文件复制到临时目录中。
- 删除原始目录。
- 使用原始目录名称重命名临时目录。
- 如果只删除了几个文件或该过程不能帮助减小目录文件大小,请增大 maxdirsize 。
如何增加 maxdirsize ?
- 建议您只能以 2% 的增量增加 maxdirsize
对于运行 ONTAP 9 的系统
- 使用以下命令增加 maxdirsize :
volume modify -vserver {NAME} -volume {NAME} -maxdir-size {size}
- 以下示例将名为 svm1 的虚拟服务器上名为 vol1 的卷的最大目录大小设置为 500 MB 。
sj-filer01::> set advanced
sj-filer01::*> volume modify -vserver svm1 -volume vol1 -maxdir-size 500MB
Volume modify successful on volume: vol1
sj-filer01::*> volume show -volume vol1 -fields maxdir-size
(volume show)
vserver volume maxdir-size
------- ------ -----------
svm1 vol1 500MB
sj-filer01::*> set admin
- 注意: 要运行上述命令,您需要将权限级别设置为高级。
对于运行 Data ONTAP 8 的系统( 7- 模式)
- 使用以下命令增加 maxdirsize :
filer> vol options volname maxdirsize {size in Kb}
示例:
sj-7mode> vol options vol1 maxdirsize 524288
是否立即更改 maxdirsize ?
- 可以,您可以随时更改 maxdirsize ,以便在用户连接到存储器时增加目录大小。
是否需要在计算中包括位于 .snapshot 中的文件和目录?
- 不会,快照中的文件和目录不会计入 maxdirsize 。
删除目录中的文件会导致目录大小减少?
- 否,如前所述,删除目录中的文件不会减小目录文件大小。
- 它只允许创建新文件,直到最大目录大小为止。
如果存储系统已升级,是否会增加 maxdirsize ?
- 目标卷卷将保留其创建的 maxdirsize 。
如果卷从 ONTAP 的早期版本迁移、是否会增加 MaxDir 大小?
- 目标卷早期的 Data ONTAP 版本使用系统内存大小作为确定 maxdirsize 的基础。
- 迁移后,这些卷将保留其原始 maxdirsize ,并可根据需要进行增加。
更改 MaxDirSize 的大小对性能有何影响?
- 性能问题很难量化、但一般而言很容易说明。
- 大型目录中的查找占用大量 CPU 。
- 将大型目录从仅 NFS 转换为 CIFS 会在很长一段时间内占用大量资源。
- 另外一个性能影响是,当目录加载到内存中时、将加载整个目录树。
- 部分内存可能由于不使用而从内存中耗尽、但从磁盘读取数据和在内存中查找要存储的目录的空间会对性能产生影响。
启用 "create_ucode" 和 "convert_ucode" 卷选项如何影响 maxdirsize ?
- 在 Data ONTAP 7Mode 下,启用 "
create_ucode
和 "convert_ucode
卷选项后,可能还会显示以下消息。
Error message: [myvol@filer: wafl.dir.size.max:warning]: Directory [dir] has reached the maxdirsize limit. Please increase the maxdirsize by using the vol options command.
- 增加 MaxDirSize 可能无法解决问题,因为此消息是由文件管理器上的 Unicode 转换引起的。
- 文件管理器上的快照将文件系统锁定在更改中、因此在访问非 Unicode 数据时会创建临时文件。
- 在这种情况下,请删除
convert_ucode
create_ucode
启用“”和“”选项之前创建的快照。 - 这样就可以将现有数据转换为 Unicode 格式、而无需在卷上创建额外的临时数据。保持
'convert_ucode
'create_ucode
启用“和”选项。