挂载SMB协议文件系统

当您想在Windows系统中共享文件时,可以在服务器挂载支持SMB协议的NAS文件系统。本文介绍如何在阿里云Windows ECS实例中挂载SMB协议文件系统。

前提条件

  • 在创建NAS SMB协议文件系统的地域,已有可用的云服务器ECS(Windows)。具体操作,请参见创建ECS实例

  • 已创建NAS SMB协议文件系统,并获取到文件系统的挂载点地址。具体操作,请参见通过控制台创建通用型NAS文件系统

  • 网络连通。

    • 选择经典网络进行挂载时,ECSNAS属于同一阿里云UID。

    • 检查文件系统白名单,确保云服务器ECS(Windows)已经被授予访问该SMB协议文件系统的权限。

    • 确保端口445处于打开状态,SMB协议文件系统将通过TCP端口445通信。

      如果端口445未打开,请在目标ECS实例的安全组中添加关于端口445的安全组规则。具体操作,请参见添加安全组规则

背景信息

默认情况下,一般挂载文件系统是以登录系统的用户身份执行的。在Windows操作系统中,系统服务(Services)、计划任务(Scheduled Tasks)以及很多系统调用都是以SYSTEM系统账号进行操作。

步骤一:环境准备

以下操作步骤,请确保在挂载每台Windows服务器时执行一次即可,不需要在每次挂载时都执行一次。

  1. 连接到ECS实例

  2. 对于Windows Server 2016以上的系统,需要配置允许客户端匿名访问,执行以下命令。

    REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters /f /v AllowInsecureGuestAuth /t REG_DWORD /d 1
  3. 开启Workstation服务。

    1. 选择所有程序 > 附件 > 运行或使用快捷键Win+R,输入services.msc进入本地服务。

    2. 在服务中找到Workstation,确认状态为正在运行,启动类型为自动

      正常情况下,Workstation服务默认为启动状态。

      Workstation

  4. 开启TCP/IP NetBIOS Helper服务。

    1. 打开网络与共享中心,单击主机所连网络。

    2. 单击属性,双击Internet 协议版本 4进入属性框,单击高级

    3. 高级TCP IP设置对话框中,选择WINS > 启用TCP/IP上的NetBIOS启用 TCP/IP 上的 NetBIO

    4. 选择所有程序 > 附件 > 运行或使用快捷键Win+R,输入services.msc进入本地服务。

    5. 在服务中找到TCP/IP NetBIOS Helper,确认状态为正在运行,启动类型为自动

      正常情况下,TCP/IP NetBIOS Helper服务默认为启动状态。

      TCP/IP NetBIOS Helpe

步骤二:挂载NAS SMB协议文件系统

NAS SMB协议文件系统支持通过手动挂载和自动挂载两种方式进行挂载。手动挂载适用于临时挂载,每次服务器启动或重启后都需要重新挂载。自动挂载适用于持久挂载,每次服务器启动或重启后都无需重新挂载。为避免服务器重启后,挂载信息丢失,导致无法查看已挂载的文件系统,建议您手动挂载成功后,配置自动挂载文件系统。

手动挂载文件系统

您需要使用NAS SMB协议文件系统的挂载点地址,将NAS SMB协议文件系统挂载至Windows ECS实例。

  1. 连接到ECS实例

  2. 打开CMD命令行窗口,执行以下命令挂载SMB文件系统。

    net use Z: \\file-system-id.region.nas.aliyuncs.com\myshare

    参数

    说明

    Z

    当前Windows系统上要挂载的目标盘符,如果有冲突,或者挂载了多个NAS文件系统,则按字母顺序递减盘符。

    file-system-id.region.nas.aliyuncs.com

    创建SMB协议文件系统时系统自动生成的挂载点地址,请根据实际值替换。

    您可以在NAS控制台,单击目标文件系统,然后单击挂载使用,将鼠标放置在挂载地址列的挂载点图标上获取挂载点地址。

    myshare

    SMB的共享名称,不允许变更。

    对于Windows Server 2019及更高版本的操作系统,为了让所有用户都能访问挂载点,推荐使用PowerShell命令New-SmbGlobalMapping进行挂载。命令如下所示:

    执行命令如需输入身份,请您输入工作域任何一个合法身份即可。例如workgroup\administrator,密码为ECS administrator的密码。

    • 挂载命令

      New-SmbGlobalMapping -LocalPath z: -RemotePath \\file-system-id.region.nas.aliyuncs.com\myshare -Persistent $true
    • 卸载命令

      Remove-SmbGlobalMapping -LocalPath z:
    • 验证挂载命令

      Get-SmbGlobalMapping
  3. 确认NAS SMB协议文件系统挂载成功。

    • 执行命令

      net use
    • 返回示例

      如果回显包含如下类似信息,说明挂载成功。挂载成功后,您可以在ECS上访问NAS SMB协议文件系统,执行读取或写入操作。

      查看挂载结果

    如果挂载失败,您可以通过脚本自动定位问题或根据常见错误码解决方案进行错误排查。具体操作,请参见使用脚本自动排查挂载访问FAQ

(可选)自动挂载文件系统

您可以通过配置Windows ECS实例的c:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\auto_mount.bat文件,实现ECS重启时自动挂载SMB协议文件系统。

  1. 打开CMD命令行窗口,执行以下命令,配置脚本auto_mount.bat。

    echo %HOMEPATH%\mount.bat > auto_mount.bat
  2. 执行以下三条命令,将auto_mount.bat配置成用户登录后自动运行,并配置其他人的读和执行权限。

    MOVE auto_mount.bat "c:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"
    icacls "c:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\auto_mount.bat" /grant everyone:rx
    REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run /f /v MyMount /t REG_SZ /d "c:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\auto_mount.bat"
  3. 执行以下命令,配置实际执行挂载命令的脚本mount.bat。

    echo net use z: \\file-system-id.region.nas.aliyuncs.com\myshare > "%HOMEPATH%\mount.bat"

    请根据实际值替换盘符z和挂载点地址file-system-id.region.nas.aliyuncs.com

    说明

    如果SMB协议文件系统支持AD、ACL,并且您希望使用Windows登录用户身份以外的其他域用户身份挂载SMB协议文件系统,则可以执行以下命令配置脚本。

    echo net use z: \\file-system-id.region.nas.aliyuncs.com\myshare /user:user@domain password > "%HOMEPATH%\mount.bat"

    请根据实际值替换盘符z、挂载点地址file-system-id.region.nas.aliyuncs.com,域用户名user@domain,域用户密码password

  4. 重启ECS服务器。

    用户重新登录后,执行net use命令验证挂载结果。

    重要

    重启云服务器会中断业务,建议您在业务低谷时期重启云服务器。

相关文档

  • 如果您想在文件存储NAS上搭建Windows应用程序,请参见Windows应用程序

  • 如果您想将文件存储NAS用于内容管理系统和Web服务应用程序,为网站及应用程序提供高效存储服务,请参见Web服务和内容管理

  • 更多有关文件存储NAS应用场景的最佳方案,请参见最佳实践