Skip to main content
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

在卷上配置用于 SMB 文件名转换的字符映射

贡献者

NFS 客户端可以创建包含对 SMB 客户端和某些 Windows 应用程序无效的字符的文件名。您可以为卷上的文件名转换配置字符映射,以使 SMB 客户端能够访问具有 NFS 名称的文件,否则这些名称将无效。

关于此任务

当 SMB 客户端访问 NFS 客户端创建的文件时, ONTAP 将查看该文件的名称。如果此名称不是有效的 SMB 文件名(例如,如果其包含嵌入的冒号 "` :` " 字符),则 ONTAP 将返回为每个文件维护的 8.3 文件名。但是,如果应用程序将重要信息编码为较长的文件名,则会出现此问题。

因此,如果要在不同操作系统上的客户端之间共享文件,则应在文件名中使用在这两个操作系统中均有效的字符。

但是,如果 NFS 客户端创建的文件名包含的字符对于 SMB 客户端无效,则可以定义一个映射,将无效的 NFS 字符转换为 SMB 和某些 Windows 应用程序均可接受的 Unicode 字符。例如,此功能支持 CATIA MCAD 和 Mathematica 应用程序以及具有此要求的其他应用程序。

您可以逐个卷配置字符映射。

在卷上配置字符映射时,必须牢记以下几点:

  • 字符映射不会跨接合点应用。

    您必须为每个接合卷显式配置字符映射。

  • 您必须确保用于表示无效或非法字符的 Unicode 字符通常不会显示在文件名中;否则,将发生不需要的映射。

    例如,如果您尝试将冒号(:)映射到连字符( - ),但在文件名中正确使用了连字符( - ),则尝试访问名为 "`a-b` " 的文件的 Windows 客户端会将其请求映射到 NFS 名称 "`a : b` " (不是所需结果)。

  • 应用字符映射后,如果映射仍包含无效的 Windows 字符,则 ONTAP 会回退到 Windows 8.3 文件名。

  • 在 FPolicy 通知, NAS 审核日志和安全跟踪消息中,将显示映射的文件名。

  • 创建类型为 DP 的 SnapMirror 关系时,源卷的字符映射不会复制到目标 DP 卷上。

  • 区分大小写:由于映射的 Windows 名称转换为 NFS 名称,因此,名称的查找遵循 NFS 语义。这包括 NFS 查找区分大小写。这意味着,访问映射共享的应用程序不能依赖 Windows 不区分大小写的行为。但是, 8.3 名称是可用的,不区分大小写。

  • 部分映射或无效映射:映射要返回到执行目录枚举( "dir" )的客户端的名称后,系统将检查生成的 Unicode 名称是否有效。如果此名称中仍包含无效字符,或者对于 Windows 无效(例如,此名称以 "." 或空白结尾),则会返回 8.3 名称,而不是无效名称。

步骤
  1. 配置字符映射:

    vserver cifs character-mapping create -vserver vserver_name -volume volume_name -mapping mapping_text, ...

    此映射由一个源 - 目标字符对列表组成,并以 "` :` " 分隔。这些字符是使用十六进制数字输入的 Unicode 字符。例如: 3c : E03C 。

    每个的第一个值 mapping_text 以冒号分隔的对是要转换的NFS字符的十六进制值、第二个值是SMB使用的Unicode值。映射对必须是唯一的(应存在一对一映射)。

    • 源映射

      下表显示了源映射允许的 Unicode 字符集:

    Unicode 字符

    打印字符

    Description

    0x01-0x19

    不适用

    非打印控制字符

    0x5C

    \

    反斜杠

    0x3a

    冒号

    0x2A

    *

    星号

    0x3F

    问号

    0x22

    "

    引号

    0x3C

    <

    小于

    0x3e

    >

    大于

    0x7C

    我们可以为您提供

    竖线

    0xB1

    ±

    加减号

    • 目标映射

      您可以在 Unicode 的 "`私有使用区域` " 中指定以下范围内的目标字符: U+E0000…​U+F8FF 。

示例

以下命令会为 Storage Virtual Machine ( SVM ) vs1 上名为 data 的卷创建字符映射:

cluster1::> vserver cifs character-mapping create -volume data -mapping 3c:e17c,3e:f17d,2a:f745
cluster1::> vserver cifs character-mapping show

Vserver         Volume Name  Character Mapping
--------------  -----------  ------------------------------------------
vs1             data         3c:e17c, 3e:f17d, 2a:f745