保持与 Microsoft Azure Files 的连接 – 微软云计算: Windows Azure 中文博客

时间:15-01-31 栏目:Azure 作者:爱说云网 评论:0 点击: 1,568 次

我们在最近的博客文章中介绍了 Azure StorageFiles的预览版,请单击此处 。该文章包含  Azure Files的相关信息,说明了如何申请预览版并开始使用,还介绍了一些有助于创建共享和传输数据的工具。本文章将重点阐述如何才能创建与 Azure File共享的持久连接,以便您的计划任务、应用程序或已登录用户在  VM重新启动后仍可以使用该共享。

Windows IaaS VM

默认情况下,Windows在重新启动过程中会尝试保持到  SMB共享的连接。但是,系统在此过程中不会自动保存 Azure Files凭据,因此,重新启动后系统将无法重新连接到  Azure Files共享。保存这些凭据的方法多种多样,以下详细介绍了其中的几种方法。

保存凭据

CmdKey

要建立持久连接,最简单的方法是使用“CmdKey”命令行实用程序将您的存储帐户凭据保存到  Windows 中。以下是一个把您的存储帐户凭据保存到 VM中的命令行示例:

C:\>cmdkey/add:<yourstorageaccountname>.file.core.chinacloudapi.cn/user:<yourstorageaccountname> /pass:<YourStorageAccountKeyWhichEndsIn==>

Note:yourstorageaccountname is not yourlive id but the name in the endpoint.

借助 CmdKey,您还可以列出系统存储的凭据:

C:\>cmdkey /list

Currently stored credentials:

Target:Domain:target=filedemo.file.core.chinacloudapi.cn
Type:DomainPassword
User:filedemo

保存凭据后,以后在连接到共享时将不再需要提供这些凭据。也就是说,无需指定任何凭据,您就能连接:

C:\>net use * \\filedemo.file.core.chinacloudapi.cn\demo1

Drive Z:is now connected to\\filedemo.file.core.chinacloudapi.cn\demo1.

The command completed successfully.

然后,您可以重新启动 VM(此操作将断开与  VM 的连接):

shutdown –t 0 –r

VM重新启动并重新连接后,您可以打开另一个命令窗口来确认是否已自动重新连接:

C:\>net use

New connections will be remembered.

Status   Local    Remote       Network

-----------------------------------------------------------------------------

OK       Z:       \\filedemo.file.core.chinacloudapi.cn\demo1

                               Microsoft Windows Network

The command completed successfully.

凭据管理器

您还可以借助凭据管理器(位于控制面板”\“用户帐户下)来保存存储帐户凭据。

用户上下文

Windows会为在 VM上运行的每个用户维护不同的上下文,有时同一时间在同一  VM上运行的同一用户的上下文会有所不同。每个上下文均可独立连接到一组不同的 SMB共享,并且每个上下文都有自己的映射到所连接共享的盘符。

 CmdKey保存的凭据可供运行“CmdKey”的用户使用。同样,由“net use”记住的连接可供运行 net use的用户使用。因此,如果您的应用程序会在不同的用户名下运行,您可能还希望为其他用户保存凭据和连接。要执行此操作,您可以使用“runas”命令:

runas /user:<username> cmd.exe

此命令将打开一个新的命令窗口。命令窗口的标题将显示为“cmd.exe (running as COMPUTERNAME\username)”。如果在此命令窗口中运行“net use”,您会看到此用户未连接到任何共享:

C:\>net use

New connections will be remembered.

There are no entries in the list.

您可以针对该用户按上所述运行“CmdKey”“net use”,为其保存您的存储凭据以及与 Azure File的连接。

管理员上下文

如果您在 VM上创建了一个新的本地用户,并将此用户添加到了管理员组,您可以在提升和非提升上下文中运行此用户的命令。提升和非提升上下文中的连接并不共享,因此您可能会希望通过执行“net use”在各自的上下文中单独进行连接。但是,保存的凭据是共享的,因此您仅需在其中一个上下文中运行“CmdKey”即可。

处理计划任务

您可以创建在任何 VM用户下运行的计划任务,并且这些计划任务能够使用该用户通过  CmdKey建立的持久凭据。但是,这些计划任务可能会在此登录用户以外的其他用户上下文中运行,因此与 SMB共享的连接不会在运行该任务的用户上下文中自动重新连接。

例如,如果您创建的计划任务运行调用“net use”的脚本并将输出写入到本地文件,而此用户先前已与  Azure File 共享创建持久连接,还具有该共享的持久凭据,则输出将包含以下内容:

Status     Local    Remote       Network

-----------------------------------------------------------------------------

UnavailableZ:       \\filedemo.file.core.chinacloudapi.cn\demo1

                                 Microsoft Windows Network

The command completed successfully.

但是,该上下文中的凭据可以重新连接到共享。因此,如果向您的脚本添加以下命令,则将重新建立网络连接:

net use z:\\filedemo.file.core.chinacloudapi.cn\demo1

或者,您的脚本可以使用完整的 UNC路径(而不是已映射的盘符)访问文件:

dir \\filedemo.file.core.chinacloudapi.cn\demo1

另外还要注意,由于计划任务不在登录用户所处的环境中运行,因此由该计划任务创建的连接可能不会在此环境中建立。

Windows PaaS角色

PaaS角色的功能与持久连接恰好相反。对于  PaaS角色,无论系统是否启动了全新的实例,还是重新启动了您的实例,都要确保您的代码可以自动进行连接。

WNetAddConnection2进行平台调用

您可以通过对WNetAddConnection2进行平台调用来映射  PaaS角色启动代码中的盘符。以下代码声明了一组建立从 Azure Files共享到本地盘符的映射所需的结构。

[DllImport("Mpr.dll",

           EntryPoint ="WNetAddConnection2",

           CallingConvention = CallingConvention.Winapi)]

privatestaticexternint WNetAddConnection2(NETRESOURCElpNetResource,

                                            string lpPassword,

                                            string lpUsername,

                                            System.UInt32 dwFlags);

 [DllImport("Mpr.dll",

          EntryPoint ="WNetCancelConnection2",

          CallingConvention = CallingConvention.Winapi)]

privatestaticexternint WNetCancelConnection2(string lpName,

                                               System.UInt32 dwFlags,

                                               System.Boolean fForce);

 [StructLayout(LayoutKind.Sequential)]

privateclass NETRESOURCE

{

   publicint dwScope;

   public ResourceType dwType;

   publicint dwDisplayType;

   publicint dwUsage;

   publicstring lpLocalName;

   publicstring lpRemoteName;

   publicstring lpComment;

   publicstring lpProvider;

};

publicenum ResourceType

{

   RESOURCETYPE_DISK = 1,

};

然后,您可以编写一个用于在给定盘符上挂载共享的方法:

publicstaticvoid MountShare(string shareName,

                            string driveLetterAndColon,

                             string username,

                             string password)

{

   if(!String.IsNullOrEmpty(driveLetterAndColon))

   {

       //确保我们未使用此盘符进行其他映射

       WNetCancelConnection2(driveLetterAndColon, 0,true);

   }

   NETRESOURCE nr =new NETRESOURCE();

   nr.dwType = ResourceType.RESOURCETYPE_DISK;

   nr.lpRemoteName = shareName;

   nr.lpLocalName = driveLetterAndColon;

   int result =WNetAddConnection2(nr, password, username, 0);

   if (result != 0)

   {

       thrownew Exception("WNetAddConnection2failed with error " +result);

   }

}

然后,可以从您角色的“OnStart()”方法中调用此方法:

MountShare(\\\\filedemo.file.core.chinacloudapi.cn\\demo1,

          "z:",

          "filedemo",

          "<YourStorageAccountKeyWhichEndsIn==>");

从此时起,一直到 Worker Role,您都能够使用盘符或完整  UNC 路径读取文件并将其写入到 Azure File共享:

File.Create("z:\\WNetAddConnection2.txt");

File.Create(\\\\filedemo.file.core.chinacloudapi.cn\\demo1\\UNC.txt);

Web Role和用户上下文

Azure Web Role  OnStart()方法不在用于显示网站页面的用户上下文中运行。因此,如果希望从显示页面的代码中引用您的 Azure Files共享,您应该将上述代码放在  Global.Application_Start()方法,而不是WebRole.OneStart()中。

Linux VM

Linux具有多种在启动过程中自动挂载共享的方法,但是我们仅在  Ubuntu 14.04 LTS上对其中一种方法进行试验。

保持与 Fstab的连接

Linux /etc中有一个称为“fstab”的文件,该  /etc 在启动过程中可用于挂载驱动器和共享。在启动过程中自动挂载 Azure Files共享的一种方法是,向  /etc/fstab添加一行。应将以下文本放在文件中的一行:

//<yourstorageaccountname>.file.core.chinacloudapi.cn/demo1/home/azureuser/smb cifsvers=2.1,dir_mode=0777,file_mode=0777,username=<yourstorageaccountname>,password=<YourStorageAccountKeyWhichEndsIn==>

下表详细介绍了此行包含的各个部分:

部分

示例

描述

共享 URL

//filedemo.file.core.chinacloudapi.cn/demo1

之前创建的 Azure Files共享的  URL

挂载点

/home/azureuser/smb

您之前创建以挂载共享的 Linux VM上空白目录的路径。

文件系统

Cifs

要挂载的文件系统的类型。对于 Azure Files,其文件系统类型为“cifs”

挂载参数

vers=2.1

要使用的 SMB版本,在本示例中为  2.1

dir_mode=0777

用于 Azure Files共享目录的权限掩码,在本示例中为完整权限。

file_mode=0777

用于 Azure Files共享文件的权限掩码,在本示例中为完整权限。

username=filedemo

对于 Azure Files,此用户名必须为您的存储帐户名称。

password=StorageAccountKey==

对于 Azure Files,此密码必须为您的完整存储帐户密钥。

您的 fstab文件中还可以包含许多其他选项。有关详细信息,请参阅您正在使用的  Linux版本的相关文��。

总结

我们之前发布的介绍  Azure Files 的文章和本文章集中介绍了帮助您创建到  Azure File 共享的持久连接的步骤,从而使您可以在重新启动后使用共享连接。我们始终乐于倾听您的反馈,请通过本博客和Azure Storage MSDN论坛发表评论或发送电子邮件至mastoragequestions@microsoft.com

Andrew Edwards

有关详细信息,请参阅以下链接:

Azure Files 2014-04-14版本

Microsoft Azure File 服务简介

AzCopy

Storage .NET Client Library 4.3.0

相关文章

乐视+微软:借力Azure布局海外,实现全球视频云服务-CSDN.NET...
views 1181
乐视和微软正式宣布展开全球战略合作。一方面,乐视将借力Azure的IaaS资源实现海外市场的拓展;另一方面,在Azure的基础上,乐视云将为Azure的用户提供视频云服务。 12月18日,乐视和微软在北京举办了题为“云端起舞,生态协同”的发布会,正式宣布展开全球战略合作。联想到今年早些时候,萨提亚·...
使用 Azure Site Recovery 灾难恢复至 Azure 的功能现已正式发布 ̵...
views 1563
自我们宣布发布使用 Azure Site Recovery 灾难恢复至 Azure 的功能预览版以来,这几个月着实令人兴奋不已。我们的客户正在亲身体验 ASR 的功能,可直接向 Windows Azure 进行虚拟机持续复制和无缝故障转移,并为虚拟机提供保护。我们做出的不遗漏任何工作负荷的承诺为我们...
微软云转型达成里程碑 但仍面临高风险...
views 1459
为了适应云计算时代,微软对业务模式实施调整。在这一进程中,它刚刚完成了一项里程碑。在年末将至之际,它成为了企业级云服务市场的第一大销售商,超过了Salesforce.com等创业公司和诸如IBM、甲骨文的老牌企业。 尽管云服务在微软总营收中的占比不到5%,但该项里程碑标志着微软在后PC时代终于取得...
云计算到底哪家强?
views 1898
从全球市场看,微软Azure+谷歌GCE+IBM的Softlayer+阿里云,四家的市场份额加起来也不及Amazon AWS。微软Azure强在哪? 技术储备。Amazon AWS虽然全球员工很多人,但是最核心的工程师也就几十个,而这种技术级别的在微软,可以说是一抓一大把。而且你看,现在的很多A...
使用 Azure Site Recovery 将内部部署虚拟化工作负荷迁移至 Azure ̵...
views 1451
我们最近发布了微软的灾难恢复即服务 (DRaaS) 产品的预览版 - Azure Site Recovery。此产品可以提供自动化保护、异步持续复制,并可以在跨企业站点以及私有云, 或直接在Windows Azure 中,以最短的停机时间准确、一致、有序地恢复虚拟化工作负荷。 我们的客户喜欢这项服...
值得关注的十家云计算公司
views 1458
云计算正在IT行业大行其道,力求创新的新兴公司和地位稳固的老牌厂商都在争夺客户的眼球。一般而言,云计算提供商分为三类:软件即服务(Software-As-A-Service,SAAS)提供商;基础架构即服务(Infrastructure-As-A-Service,IAAS)提供商,提供基于Web的渠...
Microsoft Azure File 服务简介
views 1816
我们非常高兴地宣布在微软Azure中国区推出 Microsoft Azure File 服务预览版。Azure File 服务使用标准 SMB 2.1 协议提供文件共享。Azure 中运行的应用程序现在可以使用熟悉的标准文件系统 API(如 ReadFile 和 WriteFile)在虚拟机之间轻松...
世纪互联Azure:我们要与微软“一刀两断”...
views 1570
12月的北京,已经能明确感觉到了冬天的寒意,但是云计算,确切说是公有云服务,在北京仍然是炙手可热的话题。UCloud、青云以及著名的亚马逊AWS都选择在这个月着重发出了自己的声音。当然,谁也不能忽视在这一市场上的一个重要角色——微软的Azure,从某种角度上讲,这个率先进入中国的国际性公有云品牌,真...

保持与 Microsoft Azure Files 的连接 – 微软云计算: Windows Azure 中文博客:等您坐沙发呢!

发表评论


读者排行