网络文件系统 (NFS) 和 SMB/CIFS 的文件命名约定以及文件名的最大长度是什么?
适用于
- ONTAP 9
- CIFS\NFS
- 文件路径\名称的最大长度
问题解答
- 文件名被截断
- 错误消息:
File not found - 无法打开长文件名的文件
- 通过 SMB 从 Windows 客户端计算机浏览时,文件名显示为 8.3 格式
- UNIX 用户正在通过 NFS 挂载点保存文件通过 CIFS 从 Windows 客户端计算机浏览时,文件名显示为 8.3 格式
- NFS 和 CIFS 使用的文件的文件命名约定
- 文件命名约定取决于客户端的操作系统和文件共享协议。例如,对于运行 UNIX 操作系统的客户端,文件名区分大小写;对于运行任何 Windows 操作系统的客户端,文件名不区分大小写。
- 文件名的最大长度
- 在存储系统上,对于支持 PC 长文件名格式的 NFS 客户端和 CIFS 客户端,文件名的最大长度为 255 个字符。
注意:这与最大文件路径长度是分开的,CIFS 的最大文件路径长度为 32727,NFS 的最大文件路径长度为 4096。
- 某些 CIFS 客户端(例如 MS-DOS 和 Windows 3.x 客户端)仅支持 8.3 格式的文件名(文件名为 8 个字符,文件扩展名为 3 个字符)。在任何可从 CIFS 客户端访问的目录中,存储系统都会创建并维护两个名称:原始长名称和 8.3 格式的附加短名称。存储系统按如下方式生成 8.3 名称:
- 它会将文件名截断为六个字符。
- 它会在文件名后附加一个
tilde (~)和一个数字或字母。如果由于名称相似度过高而导致字母和数字不足,它会创建一个与原始文件名无关的唯一文件名。 - 它会将文件扩展名截断为三个字符。
注意:短名称后附加的数字或字母确保文件名的唯一性。它不用于显示文件创建的顺序。
- 例如,如果 NFS 客户端创建一个名为
specifications.html的文件,则存储系统创建的短名称为specif~0.htm。如果此短名称已存在,则存储系统会在文件名末尾使用不同的数字。例如,如果 UNIX 客户端创建另一个名为specifications_new.html的文件,则specifications_new.html的短版本为specif~1.htm。 - 短名称显示在仅支持 8.3 格式的客户端上。短名称对 NFS 客户端不可见。在 Windows 95 和 Windows NT 客户端上,您可以选择使用文件属性显示短名称或长名称。
注意:在某些情况下,在使用 8.3 格式名称的客户端上运行的应用程序可能会lose丢失文件的原始长格式名称。这可能是由于应用程序保存已编辑文件的方式导致的。某些应用程序会重命名原始文件,然后将编辑后的文件保存为新创建的文件。然后,文件管理器会收到删除原始文件并创建新文件的指令。当客户端仅支持 8.3 名称时,此新名称将不再具有长格式的等效名称。
- 需要注意的是,NetApp 上的 DOS 仿真与 Windows XP 上的不同。
dir/xcmd 在达到限制后会随机化名称,而在 XP 目录上的前两个字符会保留。在 8.3 命名方案的前 8 个字符中字符集重复的文件或目录数量限制为 5 个。XP 和 NetApp 都会根据~1命名方案中的最后修改日期顺序命名文件,而 NetApp 会在达到 5 个限制后删除编号。- 此处显示的是 Windows XP Professional SP2:
- 目录
C:test dir /x
04/24/2008 10:41 AM <DIR> .
04/24/2008 10:41 AM <DIR> ..
04/24/2008 10:41 AM <DIR> MS57C1~1 MSSDK_4_01
04/24/2008 10:41 AM <DIR> MS67C1~1 MSSDK_4_02
04/24/2008 10:41 AM <DIR> MS77C1~1 MSSDK_4_03
04/24/2008 10:41 AM <DIR> MSSDK_~4 MSSDK_4_04
04/24/2008 10:41 AM <DIR> MSSDK_~3 MSSDK_4_05
04/24/2008 10:41 AM <DIR> MSSDK_~2 MSSDK_4_06
04/24/2008 10:41 AM <DIR> MSSDK_~1 MSSDK_4_07
0 File(s) 0 bytes
9 Dir(s) 37,710,434,304 bytes free
- 同样的事情,但在 NetApp 上:
- 目录
Z:test dir /x
04/24/2008 10:39 AM <DIR> .
04/24/2008 10:38 AM <DIR> ..
04/24/2008 10:39 AM <DIR> MSSDK_~1 MSSDK_4_01
04/24/2008 10:39 AM <DIR> MSSDK_~2 MSSDK_4_02
04/24/2008 10:39 AM <DIR> MSSDK_~3 MSSDK_4_03
04/24/2008 10:39 AM <DIR> MSSDK_~4 MSSDK_4_04
04/24/2008 10:39 AM <DIR> MSSDK_~5 MSSDK_4_05
04/24/2008 10:39 AM <DIR> U9ORL00~ MSSDK_4_06
04/24/2008 10:39 AM <DIR> V9ORL00~ MSSDK_4_07
0 File(s) 0 bytes
9 Dir(s) 2,967,848,583,168 bytes free
- 配置非法字符的替代显示方式
- 当通过 NFS 创建的文件包含非法字符时,字符映射可以使用来设置转换表,以便向 CIFS 客户端提供此类字符的替代显示。客户端将看到完整的长文件名,尽管看起来有所不同。
注意:切勿将非法字符映射到文件名中原本使用或预期使用的字符。如果您这样做,例如将冒号映射到a-umlaut,a-umlauts则 CIFS 客户端生成的文件名中的字符将被转换为 NFS 客户端的冒号。
- 每个卷可以有不同的转换表,并且必须根据需要为每个卷配置转换表。该表仅涵盖 CIFS 非法的字符。
- 大小写冲突:
- 如上所述,Windows 系统不区分大小写。因此,UNIX 系统可以创建两个文件
test.txt和TEST.txt这对它来说没问题,但 Windows 无法区分它们。知道这一点,Filer 会为第二个以及之后每个冲突的文件创建一个波浪号表示。这应该显示为text.txt和text~1.txt
- 如上所述,Windows 系统不区分大小写。因此,UNIX 系统可以创建两个文件
注意:在 Apple OS X 10.4 及更早版本中,使用 AFP 还会遇到 Windows 共享、日语字符以及文件名 32 个字符的限制。
- 在 ONTAP 中启用短名称搜索。
- 默认情况下,CIFS SVM(vserver)在 ONTAP(cDOT、Clustered Data ONTAP)上运行时无法搜索 8.3 短名称。
- 如果需要让 SVM 也搜索短名称,可以启用此功能,但这也会影响性能。 只有在旧版应用程序需要时才应启用此功能。
- 要启用短名称搜索功能,请在高级权限级别运行以下命令:
::*> vserver cifs options modify -vserver <SVM name> -is-search-short-names-enabled true.