重启计算机时,可能无法重新创建 iSCSI 设备上的文件共享

本文解决了重启计算机时可能阻止重新创建文件共享的问题。

适用于:Windows 10 - 所有版本,Windows Server 2012 R2
原始 KB 数: 870964

症状

使用 Microsoft iSCSI 发起程序服务连接到 Internet SCSI (iSCSI) 磁盘设备。 重新启动创建共享的计算机时,可能无法重新创建为位于 iSCSI 设备上的文件夹创建的文件共享。

原因

当服务器服务初始化时 iSCSI 发起程序服务未初始化时,可能会出现此问题。 服务器服务创建文件共享。 但是,由于 iSCSI 磁盘设备不可用,因此在初始化 iSCSI 服务之前,服务器服务无法为 iSCSI 设备创建文件共享。

解决方案

iSCSI 发起程序 2.x

若要解决 iSCSI 发起程序 2.x 中的问题,请在受影响的服务器上执行以下步骤:

  1. 使服务器服务依赖于 iSCSI 发起程序服务。 有关如何执行此操作的信息,请参阅“使服务器服务依赖于 iSCSI 发起程序服务”部分。

  2. 配置到目标的持久登录。 为此,请使用下列方法之一。

    注意

    如果在“持久目标”选项卡上看到 目标 ,则不需要执行以下步骤。

    方法 1:在 控制面板 中使用 iSCSI 发起程序

    1. 在控制面板中,双击“iSCSI 发起程序”。
    2. 选择“ 目标 ”选项卡。
    3. 在“ 选择目标”列表中选择目标 ,然后选择“ 登录”。
    4. 选择以选中“系统启动时自动还原此连接检查”框,然后选择“确定”。

    方法 2:使用命令提示符窗口

    1. 选择“ 开始>运行”,键入 cmd,然后选择“ 确定”。
    2. 在命令提示符下,键入以下命令,然后按 Enter: iscsicli persistentlogintarget **target_iqn** T * * * * * * * * * * * * * * * 0

    注意

    target_iqn 是目标的 IQN 名称。

  3. 为 iSCSI 发起程序服务配置 BindPersistentVolumes 选项。 为此,请使用下列方法之一。

    方法 1:在 控制面板 中使用 iSCSI 发起程序

    1. 在控制面板中,双击“iSCSI 发起程序”。
    2. 选择“ 绑定卷/设备 ”选项卡。
    3. 选择“ 全部绑定 ”以绑定所有永久性目标。 或者,选择“ 添加”,然后输入驱动器号或装入点以绑定特定目标。
    4. 选择“确定”。

    方法 2:使用命令提示符窗口

    1. 选择“ 开始>运行”,键入 cmd,然后按 Enter。

    2. 键入 iscsicli BindPersistentVolumes,然后按 Enter。

      注意

      这与在方法 1 中选择“ 全部绑定” 选项相同。

注意

仅当 iSCSI 发起程序服务版本 2.x 遇到此特定问题时,才使用此解决方案。

使服务器服务依赖于 iSCSI 发起程序服务

使用以下方法之一使服务器服务依赖于 iSCSI 发起程序服务。

方法 1:使用 Microsoft 服务控制实用工具 (Sc.exe)

注意

使用此方法时,无需修改注册表。 因此,此方法是设置服务依赖项的首选方法。

  1. 选择“ 开始>运行”,键入 cmd,然后按 Enter。

  2. 键入 sc config LanManServer depend= Samss/Srv2/MSiSCSI,然后按 Enter。

    如果对服务器具有管理访问权限,则可以从网络计算机运行此命令。 键入以下命令,然后按 Enter:

     sc \\computer_name config LanManServer depend= Samss/Srv2/MSiSCSI
    

方法 2:使用注册表编辑器

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 有关如何备份和还原注册表的更多信息,请单击下面的文章编号查看 Microsoft 知识库中相应的文章:
322756 如何在 Windows 中备份和还原注册表

Microsoft Windows 2000

  1. 启动注册表编辑器。

  2. 找到并选择以下注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanManServer

  3. “编辑 ”菜单上,选择“ 添加值”。

  4. 在“值名称”框中键入 DependOnService,在“数据类型”框中选择“REG_MULTI_SZ”,然后按 Enter。

  5. “多字符串编辑器”窗口中,在数据框中键入 MSiSCSI,然后选择“确定”。

  6. 退出注册表编辑器。

更多信息

可以使用 Sc.exe 和 Iscsicli.exe 实用工具编写“解决方法”部分中所述的过程的脚本。 为此,请创建使用这些命令的批处理文件,然后直接运行批处理文件,或以其他方式运行批处理文件。 例如,使用 组策略 运行批处理文件。

Microsoft 提供的编程示例仅用于进行说明,而不提供明示或默示担保。 这包括但不限于对适销性或特定用途适用性的默示保证。 本文假设你熟悉正在演示的编程语言和用于创建和调试过程的工具。 Microsoft 支持工程师可以帮助解释特定过程的功能。 但是,他们不会修改这些示例以提供满足特定要求的附加功能或构造过程。

若要编写“解决方法”部分中所述的整个操作的脚本,请创建包含以下文本的批处理文件:

sc config LanManServer depend= Samss/Srv2/MSiSCSI  
iscsicli BindPersistentVolumes

如果在初始化存储之前启动服务器服务,则问题也可能发生在非 iscsi 存储上。 在这种情况下,我们可以使用以下解决方法,假设 G 是我们想要监视的驱动器号:

  1. 将脚本另存为 *.bat 文件。

     :Start  
      dir G: /AH  
      if %errorlevel% equ 0 goto :OK  
      ping 127.0.0.1 /n 5  
      goto :Start  
      :OK  
      net stop browser  
      net stop netlogon  
      net stop dfs  
      net stop lanmanserver /y  
      net start lanmanserver  
      net start dfs  
      net start netlogon  
      net start browser  
    
  2. 我们可以将 bat 文件添加到“启动脚本”:

    1. 将批处理文件放入 %systemroot%\System32\GroupPolicy\Machine\Scripts\Startup
    2. 运行 gpedit 以打开本地计算机策略
    3. 将批处理文件添加到启动脚本中。