none
Windows Server 2016: 基于SOFS SMB共享的虚拟机迁移失败,SMB共享文件夹权限无法锁定 RRS feed

  • 问题

  • 问题描述:

    Windows Server 2016 Hyper-V集群中的虚拟机从一个节点实时迁移到另一个节点时,会出现实时迁移失败,提示“一般性拒绝访问错误”(“0x80070005”)。

    排错过程:

    于时检查SMB共享文件夹的权限,发现两台节点中的其中一个节点服务器账号已经从文件夹权限中消失了,节点计算机账号没有了自然是没有权限进行操作了,然后又重新把节点服务器帐号加回来,赋予”完全控制“权限”,并强制向下继承并替换所有文件及子文件夹权限,然后重新进行一次操作实时迁移,发现正常了,但是多次操作就又会出现同样的问题,发现SMB共享目录从上到下所有文件和子目录权限又被变更了,之前手动增加到SMB共享目录中的节点服务器账号又消失了。

    疑问:

    Hyper-V 集群中的虚拟机在不同节点服务器进行实时迁移时,为什么会改变SMB共享目录的权限呢?

    由于微软已发布Windows Server 2016, 基于工作需要,测试2016的新功能,比如存储直通技术、嵌入式虚拟化(可在虚拟机中再跑虚拟化功能),但是没想到竟然会出现这么奇怪的问题,在Windows Server 2012 R2 Hyper-V集群一切正常。

    测试环境:

    1,3台同样配置的存储服务器用Windows Sever 2016自带的S2D(存储直通技术)进行了存储融合,变成一个存储池,再把分出来的虚拟磁盘变成群集共享卷,给横向扩展文件服务器(SOFS)做SMB共享,提供给Hyper-V Cluster 虚拟机存储虚拟机文件使用;

    2,2台同样配置的节点服务器用Windows Server 2016 做了Hyper-v Cluster;

    3,S2D存储中启用SOFS(横向扩展文件服务器)SMB 共享(由于没有支持RDMA功能的网卡,无法做SMB 3.0,只能是SMB2.0了),共享名称为: \\smb\vhd

    服务器信息如下:

    存储:每台使用4个10Gbps 网卡, 不做Team, 目的就是为了走SMB多通道,测试发现比做Team能充分利用40Gbps带宽,用Team的话实际只能用到20Gbps带宽);

    Hyper-V 宿主机:每台使用2个10Gbps网卡,做Team (LACP 动态聚合,交换机端口已开启LACP);

    存储交换机:思科Nexus 5020 万兆交换机, 所有接存储及Hyper-V宿主机交换机端口都启用LACP聚合协议

    IP信息:

    • SOFS-01 (内网IP:192.168.10.1~4   外网IP:1.1.1.1)
    • SOFS-02 (内网IP: 192.168.10.5~8    外网IP:  1.1.1.2)
    • SOFS-03 (内网IP: 192.168.10.9~12  外网IP:  1.1.1.3)
    • VMH-01    (内网IP: 192.168.10.13~14 外网IP:  1.1.1.4)
    • VMH-02    (内网IP: 192.168.10.15~16  外网IP:  1.1.1.5)
    • DC            (内网IP: 192.168.10.20)
    • SMB          (内网IP: 192.168.10.17)
    • HVCLUSTER: (内网IP:192.168.10.18)

    测试过程:

    1,所有测试服务器都加入域contoso.com; 域控级别为Windows server 2012 R2

    2,  创建Hyper-V Cluster ,集群名称为HVCLUSTER, 集群节点服务器: VMH-01和VMH-02

    3,  3台存储都启用故障转移集群,添加SOFS(横向扩展文件服务器)集群并启用S2D(存储直通),将3台存储的容量融合成一个存储池,创建虚拟磁盘并加入群集共享卷,添加SMB共享;

    共享目录为\\smb\vhd, 共享权限为Everyone 完全控制

    文件夹权限:

    帐号:system, contoso.com\administrator, vmh-01,vmh-02 ,HVCLUSTER   此文件夹、子文件夹和文件  完全控制

              Everyone  此文件夹及子文件夹 读取和执行

              User        此文件夹和子文件夹  创建文件夹/附加数据

    PS: contoso.com\administrator 为域控管理员, vmh-01和02为Hyperv-V节点服务器计算机帐号, HVCLUSTER为Hyper-V集群计算机帐号

    4,VMH-01及VMH-02 Hyper-V设置:

    虚拟机硬盘存放路径: "\\smb\vhd\Virtual Hard Disks" 虚拟机配置文件存放路径: "\\smb\vhd\virtual Machines" (这里最初输入有误,现更改为原始测试环境路径是\\smb\vhd\

    实时迁移: 2个并行迁移 ,身份验证协议使用Kerberos

    5,启用委派: AD中对计算机账号VMH-01及VMH-02相互做了Keberros信任委派,添加  cifs (SMB共享委派)及虚拟机实时迁移委派;计算机账号smb 做了Kerberos 信任,将VMH-01及VMH-02计算机账号加了cifs (SMB共享委派);

    6,在HVCLUSTER上创建虚拟机VM-01和VM-02,所属节点服务器为VMH-01 

    7,测试实时迁移,将VM-01和VM-02从节点服务器VMH-01转移到VMH-02,第一次测试成功;再将VM从VMH-02转移回VMH-01也成功;第三次测试失败,出现提示“一般性拒绝访问错误”(“0x80070005”)

    8,检查SMB共享目录\\smb\vhd文件夹权限,发现VMH-02计算机账号已从权限中消失,手动添加VMH-02账号并给予完全控制权限,同时强制向下继续替换所有子目录及文件权限,再测试又正常了;太奇怪了!!! 每次手动应用完权限,就只能实时迁移一个来回,然后共享目录文件夹权限从上到下,Hyper-V节点服务器计算机帐号就不见了!!

    哪位大神能帮忙看一下是什么问题导致这种奇怪的问题出现?希望微软的各位大虾或是有过此类问题的高手帮忙分析下原因。会不会是Windows Server 2016有bug呢?



    2017年2月17日 7:24

全部回复

  • 我再2个月前也碰到过这个问题。但是没有你的这个问题这么奇葩。我是把计算机账户等权限配置完成后并不会丢失计算机账户权限。只是做迁移或者通过群集创建虚拟机磁盘的时候不能写入。后来怀疑是没有被AD完全复制完成。切等了一天后可以正常使用了。在cluster里面创建虚拟机和创建磁盘都可以使用了。

    不过我的另外一个问题也令我很困扰目前没有解决。当我把VMM配置好后,把SOFS配置到VMM后给予群集的配置又不可使用了。但是在VMM中是可以使用的。但是在VMM中配置的虚拟机是不支持在线迁移的。

    如果你不是生产环境建议你升级这个积累更新试试,我的环境已经投入生产所以没有办法测试。毕竟我们生产环境只要是使用CSV不是SOFS。谢谢。下面是累计更新的链接。

    https://support.microsoft.com/zh-cn/help/4010672/windows-10-update-kb4010672



    2017年2月21日 5:54
  • 感谢@北京小爷的回复和提供的参考,我们目前有一套生产环境就是先碰到了这个问题,然后搭了一套测试环境,结果一样,但是很奇怪的是用Windows Server 2016中的Nested Virtualization(嵌套虚拟化)在虚拟机中模拟搭建了一个Hyper-V 集群和SOFS,测试实时迁移就没问题,真是太奇葩了!!!
    我仔细看了这套实时迁移没问题的SMB文件夹权限,发现了这样的情况:
    1,之前自定义权限添加的Hyper-V 宿主机计算机帐号和集群计算机帐号“完全控制”权限不会丢失;

    2,当操作虚拟机实时迁移时,会针对每个Hyper-V宿主机计算机帐号增加一个“特殊”权限;

    现在测试环境折腾过很多次了,包括全部重新搭建环境和重装系统,就是没解决,一样的问题,邪门的很!

    2017年2月27日 6:29
  • Hi,

    》》S2D存储中启用SOFS(横向扩展文件服务器)SMB 共享(由于没有支持RDMA功能的网卡,无法做SMB 3.0,只能是SMB2.0了),共享名称为: \\smb\vhd

    能不能解释 一下  “只能是SMB2.0" ? 

    据我所知,SMB3.0 是官方建议的。

    谢谢


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2017年2月28日 4:45
    版主
  • 问题终于找到了,是Hyper-V设置路径问题:

    原始VMH-01及VMH-02 Hyper-V设置:

    虚拟机硬盘存放路径: "\\smb\vhd\Virtual Hard Disks" 

    虚拟机配置文件存放路径: \\smb\vhd\

    新Hyper-V设置,主要是VM的配置文件(包括smartfile, configuration和分页文件)的存放路径,不能直接设置在SMB共享文件夹根目录下,必须创建一个子目录,将VM配置文件夹设在子目录下,问题解决!

    两种方案:

    方案一,VHD文件和VM配置文件分开存放

    虚拟机硬盘存放路径: "\\smb\vhd\Virtual Hard Disks" (保持不变)

    虚拟机配置文件存放路径: \\smb\vhd\VM (多创建一个子目录,名字你随意)

    方案二,VHD文件和VM配置文件存放在SMB共享文件夹下的同一个子目录中,比如\\smb\vhd\Hyper-V ,生成的目录大概会有这么几项:

    Virtual Hard Disks (存放VHD文件)

    Virtual Machines   (存放分页文件、内存状态文件和Smartfile)

    Snapshots  (存放快照)

    建议:

    对于Hyper-V设置这里,微软能否有个什么提示,比如请不要将Hyper-V设置在共享目录的根路径,建议创建子目录存放。这样可以提醒管理员,也防止出现此类问题的发生,我相信这个问题有很多人都碰到过,但是整个Technet论坛我都没找到答案,写在这里,一是希望能把我的经验分享出来帮到有需要的人,二是希望微软从用户体验出发,采纳此建议!

    2017年3月15日 3:19
  • 这里确实是我之前的认识错误,自Windows Server 2012伊始,SMB已是支持3.0了,不过分为两种模式,1是SMB直通,2是SMB多通道,下面的表达应该是无法启用SMB直通,SMB直通需要RDMA网卡支持才行,这种也是微软官方建议的方案,由于RDMA网卡价格昂贵,二是可选品牌少和国内货源难求,无奈只能用SMB多通道组SMB横向扩展文件服务器做测试了!!
    2017年3月15日 3:43