什么是 MaxDirSize ?
不可不使用
适用于
- ONTAP 9
- Data ONTAP 8
解答
- maxdir — size 是限制目录文件增长的最大大小的卷选项。它设置目录可以增长的最大大小(以 K 字节为单位)。
- 此时将显示以下错误消息:
Sun Aug 19 00:17:28 EDT [wafl.dir.size.max:warning]: Directory reached the maxdirsize limit. Reduce the number of files or use the vol options command to increase this limit.
- 大多数用户不需要更改此设置。
- 此选项对于系统用户可能将目录扩展到开始影响系统性能的大小的环境非常有用。
- 当用户尝试在处于限制
ENOSPC
状态的目录中创建文件时,系统将返回错误并使创建失败。
- NetApp 建议不要将此选项设置为大于必要的值、因为某些目录操作要求整个目录驻留内存。
- 因此,这些操作需要加载整个目录,而在最短的时间内、在最坏的情况下都不可能。
- 注:
Maxdir-size
是一个卷选项,在不同型号平台之间对卷执行 Snapmirroring 时会进行传输。- 如果将卷从较低的内存平台(因此具有较低的默认 MaxDir 大小)传输到较高的内存平台、则会保留较低的 MaxDir 大小。
- 如果在将 MaxDir Size 设置为低于平台默认值的卷上收到此错误,则可以安全地将 maxdir-size 提升到平台默认值。
- maxdir 大小限制的主要目的是性能。通过目录进行的扫描是线性的。
- 对于每个查找,平均需要扫描一半的目录大小、这可能会很慢。
- WAFL 可以按使用方式扩展目录数据结构。
- 但是,一旦目录增长、就无法在删除目录并重新创建目录之前减少目录结构。
- 如果从目录中删除了大量文件、则可以通过完成以下步骤来减少目录空间:
- 将文件复制到临时目录中。
- 删除原始目录。
- 使用原始目录名称重命名临时目录。
- 如果只删除了几个文件或该过程不能帮助减小目录文件大小,请增加 maxdir 大小。
- 有关其他信息,请参考特定于您的操作系统版本的 ONTAP 手册。
- 如果您遇到以下错误消息、请增加 maxdir 大小设置或重新组织现有文件、使其不会存储在一个目录中:
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.
在 Data ONTAP 8 ( 7 模式)中,语法为:
vol options volname maxdirsize {size in Kb}
在 ONTAP 9 及更高版本中,语法为:
volume modify -vserver {NAME} -volume {NAME} -maxdir-size {size in bytes}
以下示例为名为 svm1 的虚拟服务器上名为 vol1 的卷设置了最大 60 MB 的目录大小。
cluster1::*> volume modify vol1 -vserver svm1 -maxdir-size 60MB Volume modify successful on volume: vol1 cluster1::*> volume show -volume vol1 -fields maxdir-size (volume show) vserver volume maxdir-size ------- ------ ----------- svm1 vol1 60MB cluster1::*>
注:您需要将权限级别设置为高级才能运行上述命令。
maxdir-size 所指的目录是什么?
- maxdir — size 是指目录文件占用的磁盘大小。在文件管理器(如 UNIX )上、目录与任何其他文件一样大、也有一个大小。
- 名称(如果是 CIFS 、则为多个名称变量)和 inode 编号之间的映射存储在该磁盘空间中。
如何确定使用的 maxdir 大小的数量?
- 目录的大小不能完全在 Windows 上确定、但可以从文件数量和名称长度中推断出来。
- 这是 CIFS 的大约 100000 个文件编号的来源。如果目录仅为 NFS ,则大约为 30 万个文件。
是否有方法确定最大的 maxdir 大小应该是多少?
- 在 UNIX 系统
ls -kld
上、在相关目录上发出问题。它将为您提供一个大小。- 注:我们可以将其更改为
ls -ld
,但输出必须除以 1024 ,因为-k
表示 "like -- block - size = 1k" 。
- 注:我们可以将其更改为
- 当该大小达到默认值时、创建新文件可能会失败。
- 如果正在运行后台清理操作(即快照删除),则可能会继续创建新文件。
- 一旦达到此限制、建议增加 maxdir 大小。
- 请务必再次注意,您只能增加 maxdir 的大小、因此,基本的经验法则是以 2% 的增量增加 maxdir 的大小、即增加当前值的 2% 、而不是系统内存。
更改 MaxDir 大小对性能有什么影响?
- 性能问题很难量化、但一般而言很容易说明。
- 大型目录中的查找占用大量 CPU 。
- 将大型目录从仅 NFS 转换为 CIFS 会在很长一段时间内占用大量资源。
- 另外一个性能影响是,当目录加载到内存中时、将加载整个目录树。
- 部分内存可能由于不使用而从内存中耗尽、但从磁盘读取数据和在内存中查找要存储的目录的空间会对性能产生影响。
是否需要在计算中包括位于 .snapshot 中的文件和目录?
- 否、不需要在计算中包括快照中的文件和目录。
是否立即更改 MaxDir 大小?
- 是的、您可以在用户连接至文件管理器时即时更改 maxdir 大小以增加目录大小。
启用 "create_ucode" 和 "convert_ucode" 卷选项如何影响 maxdir-size ?
- 有时,启用“
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.
- 增加 maxdir 大小可能无法解决问题,因为此消息是由文件管理器上的 Unicode 转换引起的。
- 文件管理器上的快照将文件系统锁定在更改中、因此在访问非 Unicode 数据时会创建临时文件。
- 在这种情况下,请删除
convert_ucode
create_ucode
启用“”和“”选项之前创建的快照。 - 这样就可以将现有数据转换为 Unicode 格式、而无需在卷上创建额外的临时数据。保持
'convert_ucode
'create_ucode
启用“和”选项。 - 删除“旧”快照后、除非目录中有大量数据和文件,否则不需要增加 maxdir 大小。
如果升级存储系统、是否会增加 maxdir 大小?
- 目标卷
- 卷保留其创建的 MaxDir 大小。
- 要在升级后增加 MaxDir 大小、需要重新创建卷或手动修改卷以适应存储系统的相应 MaxDir 大小。
如果卷从 ONTAP 的早期版本迁移、是否会增加 MaxDir 大小?
- 目标卷
- 较早的 Data ONTAP 版本使用系统内存大小作为确定 MaxDir 大小的基础。
- 迁移后、卷将保留最大目录大小,可以根据需要增加。
MaxDirSize 和 FlexGroups
- 不是 FlexGroup 中的所有组成卷都可能会线性地遇到 MaxDir 大小限制(在加权循环设计中)。
- 对于存在限制的组成卷(或卷),修复程序保持不变。
- 请参阅[1]第 27 页开始的 NetApp ONTAP FlexGroup 卷以获取参考。